Webserver espone l'indirizzo IP reale del client nella rete OpenVPN


1

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 printsu 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.


Come ti connetti alla tua pagina protetta sul server web? (utilizzando un IP interno o esterno?) È possibile condividere la configurazione del client OpenVPN?
eKKiM

@eKKiM I client instradano tutto il loro traffico attraverso il server VPN. Semplicemente visitando la pagina del server web nel browser. Configurazione client: pastebin.com/Xq21z30z
Croll

Sì, tutto il traffico viene instradato tramite VPN ma come ti connetti al tuo server web? 10.8.0.1 o xxx.53.xxx.yy
eKKiM

Mi collego al server web usando il nome di dominio, risolto in un IP server esterno (pubblico).
Croll,

Risposte:


1

Installa bind sul server Web / Openvpn. Aggiungi una zona per www.example.com in modo che punti all'IP interno del web server e imposta i server d'inoltro per 8.8.8.8 e 8.8.4.4, inoltre assicurati che sia in ascolto e impostato come resolver per le subnet interne / VPN.

Una zona di base per il sottodominio specifico, assicurarsi di replicare tutti i dettagli duplicati, se necessario.

named.conf.options

forwarders { 8.8.8.8; 8.8.4.4; };
allow-recursion { 10.8.0.0/24; };
allow-query { 10.8.0.0/24; };
listen-on { any; }

File di zona

$TTL 300   
@       IN      SOA     www.example.com. dnsadmin.example.com. (
                        2015000000       ; serial, YYYYMMDDRR
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
@ IN NS ns1
ns1 IN A 10.8.0.5
@ IN A 10.8.0.5

assicurati di testare e configurare openvpn per inviare questo server DNS.


1

Quello che vedo è solo un problema DNS. Quando si tenta di connettersi al sito Web, si risolve l'IP Internet, non l'IP VPN. Di seguito: modifica C: \ Windows \ System32 \ drivers \ etc \ hosts e aggiungi una voce simile

10.8.0.X   www.yourdomain.com

Ciò dovrebbe consentire al computer Windows di risolvere l'IP corretto e instradare di conseguenza. Se funziona, devi configurare il server VPN per dire ai client di usare un server DNS all'interno di 10.8.0.0/24 (penso che dhcp-option sia il nome della direttiva, ma dovresti fare qualche ricerca). Il server DNS deve essere configurato per risolvere www.tuodominio.com nell'indirizzo IP del server interno.


1

La tua VPN utilizza la sottorete 10.8.0.0/24 ma la route verso l'indirizzo xxx.53.xxx.yy utilizza il gateway 192.168.137.1 anziché 10.8.0.5, il che significa che le richieste Web al server dal client Windows stanno andando su Internet, non sulla VPN. Per risolvere il problema, è necessario disabilitare il tunneling diviso nel client OpenVPN di Windows per inviare tutto il traffico attraverso la VPN o modificare il gateway sulla route statica per xxx.53.xxx.yy in 10.8.0.5.


0

Sul computer Windows, hai controllato la metrica e hai verificato se la route VPN ha una metrica inferiore con una priorità così alta? Forse è un problema con la metrica.

Un'altra cosa che potresti provare è impostare la configurazione di openvpn sul server in modo che i client instradino TUTTO il traffico attraverso la connessione VPN.


È già fatto (reindirizzare). Non sono sicuro di cosa sia "metrico" ma i servizi "qual è il mio IP" mostrano l'indirizzo IP della VPN e non l'indirizzo ISP su entrambi i dispositivi.
Croll,

@DmitrijA Mostra l'IP esterno VPN? O mostra quello interno su 10.8.0.0/24?
lbanz,

ip server IP esterno. (sia Android che Windows). Uso certificati diversi per la connessione client ma tutte le impostazioni sono le stesse
Croll

Puoi pubblicare uno screenshot della tabella di routing per il tuo PC Windows?
lbanz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.