Ik maak me zorgen over de veiligheid van OpenVPN, hetzij de client op mijn iPhone, hetzij de server op mijn Synology NAS, maar misschien kan iemand mij vertellen dat ik het mis heb.
Mijn NAS is bereikbaar op cloud.domein1.nl, de client op mijn iPhone connect met cloud.domein1.nl, ik heb een Let's Encrypt certificaat voor cloud.domein1.nl op mijn NAS en deze is geconfigureerd om door de VPN server te gebruiken.
Dat werkt prima.
Nu wijzig ik de client, ik ga connecten op cloud.domein2.nl, welke naar hetzelfde IP adres verwijst als cloud.domein1.nl.
Dat werkt ook prima ... hoewel ik dat niet zou verwachten.
Dat betekent dus dat als ik een publiek Wifi netwerk zou gebruiken en de eigenaar daarvan geeft mij een vals IP adres voor cloud.domein2.nl, dat mijn VPN verkeer naar een andere OpenVPN server geredirect kan worden.
De fqdn waarmee ik wil connecten staat niet in het certificaat, daar wordt dus niet op gecontroleerd.
Heb ik het enorm fout?
Even een stukje uit de log van de client:
2017-07-01 15:31:02 ----- OpenVPN Start -----
OpenVPN core 3.1.2 ios arm64 64-bit built on Dec 5 2016 12:50:25
2017-07-01 15:31:02 Frame=512/2048/512 mssfix-ctrl=1250
2017-07-01 15:31:02 UNUSED OPTIONS
1 [tls-client]
5 [pull]
7 [script-security] [2]
2017-07-01 15:31:02 EVENT: RESOLVE
2017-07-01 15:31:02 Contacting 1.2.3.4:444 via TCP
2017-07-01 15:31:02 EVENT: WAIT
2017-07-01 15:31:02 SetTunnelSocket returned 1
2017-07-01 15:31:02 Connecting to [cloud.domein2.nl]:444 (1.2.3.4) via TCPv4
2017-07-01 15:31:02 EVENT: CONNECTING
2017-07-01 15:31:02 Tunnel Options:V4,dev-type tun,link-mtu 1560,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher AES-256-CBC,auth SHA1,keysize 256,key-method 2,tls-client
2017-07-01 15:31:02 Creds: Username/Password
2017-07-01 15:31:02 Peer Info:
IV_GUI_VER=net.openvpn.connect.ios 1.1.1-212
IV_VER=3.1.2
IV_PLAT=ios
IV_NCP=2
IV_TCPNL=1
IV_PROTO=2
IV_LZO=1
2017-07-01 15:31:02 VERIFY OK: depth=1
cert. version : 3
issuer name : O=Digital Signature Trust Co., CN=DST Root CA X3
subject name : C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
issued on : 2016-03-17 16:40:46
expires on : 2021-03-17 16:40:46
signed using : RSA with SHA-256
RSA key size : 2048 bits
basic constraints : CA=true, max_pathlen=0
key usage : Digital Signature, Key Cert Sign, CRL Sign
2017-07-01 15:31:02 VERIFY OK: depth=0
cert. version : 3
issuer name : C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
subject name : CN=cloud.domein1.nl
issued on : 2017-05-03 11:27:00
expires on : 2017-08-01 11:27:00
signed using : RSA with SHA-256
RSA key size : 2048 bits
basic constraints : CA=false
subject alt name : cloud.domein1.nl
key usage : Digital Signature, Key Encipherment
ext key usage : TLS Web Server Authentication, TLS Web Client Authentication
2017-07-01 15:31:02 NET Internet:ReachableViaWiFi/-R t------
2017-07-01 15:31:04 SSL Handshake: TLSv1.2/TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
2017-07-01 15:31:04 Session is ACTIVE
2017-07-01 15:31:04 EVENT: GET_CONFIG
2017-07-01 15:31:04 Sending PUSH_REQUEST to server...
2017-07-01 15:31:04 OPTIONS:
0 [redirect-gateway] [def1]
1 [dhcp-option] [DNS] [192.168.1.100]
2 [route] [192.168.1.0] [255.255.255.0]
3 [route] [10.8.0.0] [255.255.255.0]
4 [route] [10.8.0.1]
5 [topology] [net30]
6 [ping] [10]
7 [ping-restart] [60]
8 [ifconfig] [10.8.0.6] [10.8.0.5]
2017-07-01 15:31:04 PROTOCOL OPTIONS:
cipher: AES-256-CBC
digest: SHA1
compress: LZO
peer ID: -1
2017-07-01 15:31:04 EVENT: ASSIGN_IP
2017-07-01 15:31:04 Connected via tun
2017-07-01 15:31:04 LZO-ASYM init swap=0 asym=0
2017-07-01 15:31:04 EVENT: CONNECTED userid@cloud.domein2.nl:444 (1.2.3.4) via /TCPv4 on tun/10.8.0.6/ gw=[10.8.0.5/]
2017-07-01 15:31:04 SetStatus Connected
Mijn NAS is bereikbaar op cloud.domein1.nl, de client op mijn iPhone connect met cloud.domein1.nl, ik heb een Let's Encrypt certificaat voor cloud.domein1.nl op mijn NAS en deze is geconfigureerd om door de VPN server te gebruiken.
Dat werkt prima.
Nu wijzig ik de client, ik ga connecten op cloud.domein2.nl, welke naar hetzelfde IP adres verwijst als cloud.domein1.nl.
Dat werkt ook prima ... hoewel ik dat niet zou verwachten.
Dat betekent dus dat als ik een publiek Wifi netwerk zou gebruiken en de eigenaar daarvan geeft mij een vals IP adres voor cloud.domein2.nl, dat mijn VPN verkeer naar een andere OpenVPN server geredirect kan worden.
De fqdn waarmee ik wil connecten staat niet in het certificaat, daar wordt dus niet op gecontroleerd.
Heb ik het enorm fout?
Even een stukje uit de log van de client:
2017-07-01 15:31:02 ----- OpenVPN Start -----
OpenVPN core 3.1.2 ios arm64 64-bit built on Dec 5 2016 12:50:25
2017-07-01 15:31:02 Frame=512/2048/512 mssfix-ctrl=1250
2017-07-01 15:31:02 UNUSED OPTIONS
1 [tls-client]
5 [pull]
7 [script-security] [2]
2017-07-01 15:31:02 EVENT: RESOLVE
2017-07-01 15:31:02 Contacting 1.2.3.4:444 via TCP
2017-07-01 15:31:02 EVENT: WAIT
2017-07-01 15:31:02 SetTunnelSocket returned 1
2017-07-01 15:31:02 Connecting to [cloud.domein2.nl]:444 (1.2.3.4) via TCPv4
2017-07-01 15:31:02 EVENT: CONNECTING
2017-07-01 15:31:02 Tunnel Options:V4,dev-type tun,link-mtu 1560,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher AES-256-CBC,auth SHA1,keysize 256,key-method 2,tls-client
2017-07-01 15:31:02 Creds: Username/Password
2017-07-01 15:31:02 Peer Info:
IV_GUI_VER=net.openvpn.connect.ios 1.1.1-212
IV_VER=3.1.2
IV_PLAT=ios
IV_NCP=2
IV_TCPNL=1
IV_PROTO=2
IV_LZO=1
2017-07-01 15:31:02 VERIFY OK: depth=1
cert. version : 3
issuer name : O=Digital Signature Trust Co., CN=DST Root CA X3
subject name : C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
issued on : 2016-03-17 16:40:46
expires on : 2021-03-17 16:40:46
signed using : RSA with SHA-256
RSA key size : 2048 bits
basic constraints : CA=true, max_pathlen=0
key usage : Digital Signature, Key Cert Sign, CRL Sign
2017-07-01 15:31:02 VERIFY OK: depth=0
cert. version : 3
issuer name : C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
subject name : CN=cloud.domein1.nl
issued on : 2017-05-03 11:27:00
expires on : 2017-08-01 11:27:00
signed using : RSA with SHA-256
RSA key size : 2048 bits
basic constraints : CA=false
subject alt name : cloud.domein1.nl
key usage : Digital Signature, Key Encipherment
ext key usage : TLS Web Server Authentication, TLS Web Client Authentication
2017-07-01 15:31:02 NET Internet:ReachableViaWiFi/-R t------
2017-07-01 15:31:04 SSL Handshake: TLSv1.2/TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
2017-07-01 15:31:04 Session is ACTIVE
2017-07-01 15:31:04 EVENT: GET_CONFIG
2017-07-01 15:31:04 Sending PUSH_REQUEST to server...
2017-07-01 15:31:04 OPTIONS:
0 [redirect-gateway] [def1]
1 [dhcp-option] [DNS] [192.168.1.100]
2 [route] [192.168.1.0] [255.255.255.0]
3 [route] [10.8.0.0] [255.255.255.0]
4 [route] [10.8.0.1]
5 [topology] [net30]
6 [ping] [10]
7 [ping-restart] [60]
8 [ifconfig] [10.8.0.6] [10.8.0.5]
2017-07-01 15:31:04 PROTOCOL OPTIONS:
cipher: AES-256-CBC
digest: SHA1
compress: LZO
peer ID: -1
2017-07-01 15:31:04 EVENT: ASSIGN_IP
2017-07-01 15:31:04 Connected via tun
2017-07-01 15:31:04 LZO-ASYM init swap=0 asym=0
2017-07-01 15:31:04 EVENT: CONNECTED userid@cloud.domein2.nl:444 (1.2.3.4) via /TCPv4 on tun/10.8.0.6/ gw=[10.8.0.5/]
2017-07-01 15:31:04 SetStatus Connected