Ubuntu server benaderen door OpenVPN

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 21:08
Ik weet niet zeker of dit de juiste categorie is om in te posten of dat in de Linux afdeling hoort, anders zal het topic wel verplaatst worden:

Ik wilde node-red op mijn ubuntu server zetten en deze van buiten mijn thuisnetwerk kunnen bedienen. Nu zag ik geen 2FA optie oid en leek het me wel een veilige/leuke exercitie om dit via een VPN te doen. Ik dacht: Als ik node-red op de server achter ufw laat draaien, dus in principe niet van buitenaf benaderbaar, dan kan ik daar veilig en wel bij door een OpenVPN tunneltje.

Nu heb ik OpenVPN aan de praat en kan er mee verbinden, maar ik zie nog niet hoe ik daarmee lokale servers kan benaderen. Ik zie dat ik een IP range in de 10.8.0.x krijg, maar hoe kan ik via OpenVPN node-red benaderen alsof ik op de server zelf 127.0.0.1:1880 zou openen?

Acties:
  • 0 Henk 'm!

  • synoniem
  • Registratie: April 2009
  • Niet online
Door het ipnummer van je node-red server te gebruiken als je openvpn goed geconfigureerd hebt.

Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 21:08
@synoniem

Wat zou het IP adres van mijn node-red server moeten zijn? 10.8.0.1:1880? En wat is goed?

Acties:
  • 0 Henk 'm!

  • jurroen
  • Registratie: Mei 2012
  • Laatst online: 28-06 09:04

jurroen

Security en privacy geek

Hoe heb je OpenVPN opgezet, wat is het subnet van je VPN clients en wat is het adres van node red? En nee, dat is niet 127.0.0.1 - dat is namelijk de localhost :+

Ongevraagde verzoeken per DM beantwoord ik niet, sorry


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 21:08
@jurroen

ik heb dit script gebruikt voor de installatie.

Verder:
topology subnet
server 10.8.0.0 255.255.255.0

Het adres van node-red is buiten het OpenVPN verhaal om gewoon 127.0.0.1:1880 aka localhost.
Binnen dat subnet geen idee eigenlijk, ik ging er vanuit dat het 10.8.0.1:1880 was maar dat werkt dus niet :+

Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Je ubuntu server heeft een ip adres in je lokale netwerk, vaak een 192.168.x.x of bijv. 10.0.x.x. Dus binnen je loakle netwerk moet node-red daarop op poort 1880 te bereiken zijn. Mogelijk moet je daarvan in de config aangeven dat node-red daarop bereikbaar is, en niet alleen op 127.0.0.1 (localhost)
Als je vpn configuratie dan goed is kan je vanaf je vpn tunnel adres 10.8.0.1 verbinden met het adres van je ubuntu server. Er zou dan routering vanaf dat 10.8.0.x subnet naar je lokale subnet waar je ubuntu server in zit in je config van je vpn moeten zitten, maar volgens mij is dat default wel het geval.

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • jurroen
  • Registratie: Mei 2012
  • Laatst online: 28-06 09:04

jurroen

Security en privacy geek

leecher schreef op zaterdag 25 februari 2023 @ 00:47:
@jurroen

ik heb dit script gebruikt voor de installatie.

Verder:
topology subnet
server 10.8.0.0 255.255.255.0

Het adres van node-red is buiten het OpenVPN verhaal om gewoon 127.0.0.1:1880 aka localhost.
Binnen dat subnet geen idee eigenlijk, ik ging er vanuit dat het 10.8.0.1:1880 was maar dat werkt dus niet :+
Als ik je goed begrijp draai je die VPN dus op dezelfde server als node-red?

Zo ja, dat VPN script stelt ook een firewall in. Zou je de output van de volgende commando's eens willen delen:
code:
1
2
3
4
5
ip a
uname -a
sysctl net.ipv4.ip_forward
sudo iptables -L
sudo lsof -nP -iTCP -sTCP:LISTEN | grep 1880

Ongevraagde verzoeken per DM beantwoord ik niet, sorry


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 21:08
u_nix_we_all schreef op zaterdag 25 februari 2023 @ 01:06:
Je ubuntu server heeft een ip adres in je lokale netwerk, vaak een 192.168.x.x of bijv. 10.0.x.x. Dus binnen je loakle netwerk moet node-red daarop op poort 1880 te bereiken zijn. Mogelijk moet je daarvan in de config aangeven dat node-red daarop bereikbaar is, en niet alleen op 127.0.0.1 (localhost)
Als je vpn configuratie dan goed is kan je vanaf je vpn tunnel adres 10.8.0.1 verbinden met het adres van je ubuntu server. Er zou dan routering vanaf dat 10.8.0.x subnet naar je lokale subnet waar je ubuntu server in zit in je config van je vpn moeten zitten, maar volgens mij is dat default wel het geval.
Ik heb ook een poging gedaan om in de settings.js uiHost: "10.8.0.1", te gebruiken maar tot nu toe zonder resultaat.

@jurroen
Ja, openvpn staat op dezelfde server als node-red. Hier de output van ip a:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether xx:xx:xx:xx:b1:85 brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.153/24 brd xxx.xxx.xxx.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:7754::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxxx:xxxx:b185/64 scope link 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fddd:xxxx:xxxx:1194::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxxx:xxxx:b42f/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever


hier die van uname -a:

code:
1
Linux vmi757754 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux


sudo iptables -L:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:openvpn
ufw-before-logging-input  all  --  anywhere             anywhere            
ufw-before-input  all  --  anywhere             anywhere            
ufw-after-input  all  --  anywhere             anywhere            
ufw-after-logging-input  all  --  anywhere             anywhere            
ufw-reject-input  all  --  anywhere             anywhere            
ufw-track-input  all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  10.8.0.0/24          anywhere            
ufw-before-logging-forward  all  --  anywhere             anywhere            
ufw-before-forward  all  --  anywhere             anywhere            
ufw-after-forward  all  --  anywhere             anywhere            
ufw-after-logging-forward  all  --  anywhere             anywhere            
ufw-reject-forward  all  --  anywhere             anywhere            
ufw-track-forward  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-output  all  --  anywhere             anywhere            
ufw-before-output  all  --  anywhere             anywhere            
ufw-after-output  all  --  anywhere             anywhere            
ufw-after-logging-output  all  --  anywhere             anywhere            
ufw-reject-output  all  --  anywhere             anywhere            
ufw-track-output  all  --  anywhere             anywhere            

Chain ufw-after-forward (1 references)
target     prot opt source               destination         

Chain ufw-after-input (1 references)
target     prot opt source               destination         
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-ns
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-dgm
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootps
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootpc
ufw-skip-to-policy-input  all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-input (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-after-output (1 references)
target     prot opt source               destination         

Chain ufw-before-forward (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ufw-user-forward  all  --  anywhere             anywhere            

Chain ufw-before-input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-logging-deny  all  --  anywhere             anywhere             ctstate INVALID
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
ufw-not-local  all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns
ACCEPT     udp  --  anywhere             239.255.255.250      udp dpt:1900
ufw-user-input  all  --  anywhere             anywhere            

Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-before-output (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-user-output  all  --  anywhere             anywhere            

Chain ufw-logging-allow (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "

Chain ufw-logging-deny (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ctstate INVALID limit: avg 3/min burst 10
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-not-local (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type MULTICAST
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
ufw-logging-deny  all  --  anywhere             anywhere             limit: avg 3/min burst 10
DROP       all  --  anywhere             anywhere            

Chain ufw-reject-forward (1 references)
target     prot opt source               destination         

Chain ufw-reject-input (1 references)
target     prot opt source               destination         

Chain ufw-reject-output (1 references)
target     prot opt source               destination         

Chain ufw-skip-to-policy-forward (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-input (7 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain ufw-skip-to-policy-output (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-track-forward (1 references)
target     prot opt source               destination         

Chain ufw-track-input (1 references)
target     prot opt source               destination         

Chain ufw-track-output (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW

Chain ufw-user-forward (1 references)
target     prot opt source               destination         

Chain ufw-user-input (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:6969
ACCEPT     udp  --  anywhere             anywhere             udp dpt:6969
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:80
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:443
ACCEPT     udp  --  anywhere             anywhere             udp dpt:7777
ACCEPT     udp  --  anywhere             anywhere             udp dpt:7778
ACCEPT     udp  --  anywhere             anywhere             udp dpt:7788
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:28902
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http-alt
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:6970
ACCEPT     udp  --  anywhere             anywhere             udp dpt:6970

Chain ufw-user-limit (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain ufw-user-logging-forward (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-input (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-output (0 references)
target     prot opt source               destination         

Chain ufw-user-output (1 references)
target     prot opt source               destination


en als laatst die van sudo lsof -nP -iTCP -sTCP:LISTEN | grep 1880:

code:
1
node-red  87851           admin   19u  IPv4 428934      0t0  TCP 10.8.0.1:1880 (LISTEN)

Acties:
  • 0 Henk 'm!

  • jurroen
  • Registratie: Mei 2012
  • Laatst online: 28-06 09:04

jurroen

Security en privacy geek

Ah, kijk! node-red luistert op 1880/tcp op 10.8.0.1, maar de firewall houdt het verkeer tegen. Dit komt door die OpenVPN installer die je hebt gebruikt.

Wil je de poort openen voor alle interfaces, vanaf alle mogelijke sources? Dat doe je zo:
code:
1
iptables -I INPUT -p tcp --dport 1880 -j ACCEPT

Ongevraagde verzoeken per DM beantwoord ik niet, sorry


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 21:08
@jurroen

bedankt! Dat werkt. In mijn beleving zat ik met de vpn verbinding al achter de firewall, maar dat is dus niet zo. Als ik het goed begrijp zijn verbindingen van openvpn in dat opzicht nog steeds extern, ook al draait het op dezelfde server? Dus een verbinding van 10.8.0.2 (mijn pc) die Node-Red wil benaderen via openvpn op 10.8.0.1 komt dan nog steeds 'van buiten'?

Acties:
  • +1 Henk 'm!

  • jurroen
  • Registratie: Mei 2012
  • Laatst online: 28-06 09:04

jurroen

Security en privacy geek

leecher schreef op zaterdag 25 februari 2023 @ 12:49:
@jurroen

bedankt! Dat werkt. In mijn beleving zat ik met de vpn verbinding al achter de firewall, maar dat is dus niet zo. Als ik het goed begrijp zijn verbindingen van openvpn in dat opzicht nog steeds extern, ook al draait het op dezelfde server? Dus een verbinding van 10.8.0.2 (mijn pc) die Node-Red wil benaderen via openvpn op 10.8.0.1 komt dan nog steeds 'van buiten'?
Ubuntu 'shipt' met een firewall maar deze is standaard inactief. Dat OpenVPN installatiescript heeft deze ingeschakeld en geconfigureerd met een set aan regels.

Die regels accepteren alleen inkomend VPN verkeer, de rest van de poorten stonden daarmee dus dicht.

In feite heb je waarschijnlijk twee firewalls: de NAT firewall in je modem/router en de firewall op de host (server).

Met het commando wat ik je net liet uitvoeren heb je die node-red poort op de host geopend. Je NAT firewall heeft deze niet geforward, waardoor je dus alsnog alleen via de VPN naar node-red kunt.

Ongevraagde verzoeken per DM beantwoord ik niet, sorry

Pagina: 1