Uno dei nostri siti Web aziendali funziona su server Linux, realizzato con Apache2 e PHP5.
Diverse pagine Web sono accessibili solo dalla sottorete OpenVPN (indirizzi 10.8.0.1/24). Per controllare ogni richiesta, lo script php confronta il $_SERVER["REMOTE_ADDR"]
valore fornito da apache e decide di concedere o negare ulteriori esecuzioni.
Lo scopo è negare l'accesso a queste pagine da dispositivi non configurati per funzionare attraverso la VPN del server.
Il server OpenVPN è in esecuzione sullo stesso computer , ecco perché PHP riceve indirizzi come 10.8.0.25 dai client all'interno della VPN e indirizzi reali per altre richieste.
È il metodo corretto per "proteggere" la pagina dall'accesso pubblico?
Testando questo sistema ho trovato una cosa strana che se richiedo una di queste pagine "protette" utilizzando la macchina Windows, connessa alla nostra rete OpenVPN, il server è in grado di vedere l'indirizzo IP reale (non 10.8.0.xx), mentre fa lo stesso sul dispositivo Android funziona come previsto (il server non può vedere l'indirizzo IP reale e ottenere 10.8.0.xx in php).
Uso l' app OpenVPN Connect su Android e la GUI OpenVPN su Windows. In entrambi i casi il client indirizza il proprio traffico attraverso il server VPN e "Qual è il mio IP?" i servizi mostrano l'indirizzo VPN e non l'indirizzo reale del mio ISP.
Ma in qualche modo il client Windows viene identificato dal suo indirizzo reale (provider) sul server web e non può accedere alle pagine protette, indipendentemente dal fatto che la VPN sia attiva o meno.
- Quali sono le possibili ragioni per questo?
Ho il sospetto che OpenVPN non funzioni correttamente su quel PC Windows. In caso contrario, perché il server riconosce i client VPN e Windows in modo diverso?
Grazie.
UPD: iptables -L su macchina VPN / websrv
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 10.8.0.0/24 anywhere tcp dpts:63000:64000
REJECT tcp -- anywhere anywhere tcp dpts:63000:64000 reject-with icmp-port-unreachable
ACCEPT udp -- 10.8.0.0/24 anywhere udp dpts:64000:65000
REJECT tcp -- anywhere anywhere tcp dpts:64000:65000 reject-with icmp-port-unreachable
DROP all -- anywhere anywhere match-set banned_ips src
UPD :: cmd /k route print
su computer Windows
Interface List
5...54 04 a6 3d 36 ff ......Realtek PCIe GBE Family Controller
7...fc 75 16 86 ad 84 ......Microsoft Wi-Fi Direct Virtual Adapter
17...00 ff b7 66 85 11 ......TAP-Windows Adapter V9
12...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
13...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
6...fc 75 16 86 ad 82 ......D-Link DWA-125 Wireless N 150 USB Adapter(rev.A3)
1...........................Software Loopback Interface 1
2...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
3...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
11...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
8...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.137.1 192.168.137.97 25
0.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 20
10.8.0.0 255.255.255.0 10.8.0.5 10.8.0.6 20
10.8.0.4 255.255.255.252 On-link 10.8.0.6 276
10.8.0.6 255.255.255.255 On-link 10.8.0.6 276
10.8.0.7 255.255.255.255 On-link 10.8.0.6 276
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
128.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 20
xxx.53.xxx.yy 255.255.255.255 192.168.137.1 192.168.137.97 25
192.168.10.0 255.255.255.0 10.8.0.5 10.8.0.6 20
192.168.20.0 255.255.255.0 10.8.0.5 10.8.0.6 20
192.168.137.0 255.255.255.0 On-link 192.168.137.97 281
192.168.137.97 255.255.255.255 On-link 192.168.137.97 281
192.168.137.255 255.255.255.255 On-link 192.168.137.97 281
192.168.171.0 255.255.255.0 On-link 192.168.171.1 276
192.168.171.1 255.255.255.255 On-link 192.168.171.1 276
192.168.171.255 255.255.255.255 On-link 192.168.171.1 276
192.168.229.0 255.255.255.0 On-link 192.168.229.1 276
192.168.229.1 255.255.255.255 On-link 192.168.229.1 276
192.168.229.255 255.255.255.255 On-link 192.168.229.1 276
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.171.1 276
224.0.0.0 240.0.0.0 On-link 192.168.229.1 276
224.0.0.0 240.0.0.0 On-link 10.8.0.6 276
224.0.0.0 240.0.0.0 On-link 192.168.137.97 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.171.1 276
255.255.255.255 255.255.255.255 On-link 192.168.229.1 276
255.255.255.255 255.255.255.255 On-link 10.8.0.6 276
255.255.255.255 255.255.255.255 On-link 192.168.137.97 281
===========================================================================
Persistent Routes:
None
IPv6 Route Table
xxx.53.xxx.yy è l'IP della macchina VPN / websrv.
UPD: altri due fatti : il server web e le pagine protette utilizzano il certificato SSL (https) - il DNS su dispositivi Windows / Android è impostato solo su DNS di Google.