Webserver expõe endereço IP real do cliente na rede OpenVPN

1

Um de nossos sites corporativos é executado no servidor Linux, construído com Apache2 e PHP5.

Várias páginas da web só podem ser acessadas da sub-rede OpenVPN (endereços 10.8.0.1/24). Para verificar cada solicitação, o script php compara o valor $_SERVER["REMOTE_ADDR"] fornecido pelo apache e decide conceder ou negar a execução posterior.

A finalidade é negar o acesso a essas páginas a partir de dispositivos não configurados para funcionar através da VPN do servidor.

O servidor OpenVPN está rodando na mesma máquina , é por isso que o PHP recebe endereços como 10.8.0.25 de clientes dentro da VPN e endereços reais para outras solicitações.

  • O método correto é "proteger" a página do acesso público?

Testando este sistema, descobri uma coisa estranha: se eu solicitar uma dessas páginas "protegidas" usando uma máquina Windows, conectada à nossa rede OpenVPN, o servidor poderá ver o endereço IP real (não 10.8.0.xx), ao fazer o mesmo no dispositivo Android funciona como esperado (o servidor não pode ver o endereço IP real e obter 10.8.0.xx em php).

Eu uso o aplicativo OpenVPN Connect no Android e OpenVPN GUI no Windows. Em ambos os casos, o cliente roteia o tráfego através do servidor VPN e "Qual é o meu IP?" serviços mostram endereço VPN e não o endereço real do meu ISP.

Mas, de alguma forma, o cliente Windows é identificado por seu endereço real (provedor) no servidor da Web e não pode acessar páginas protegidas, independentemente de a VPN estar ativada ou desativada.

  • Quais são as possíveis razões para isso?

Tenho suspeitas de que o OpenVPN não funcione corretamente no PC com Windows. Caso contrário, por que o servidor reconhece os clientes vpn Android e Windows de maneira diferente?

Obrigado.

UPD: iptables -L na máquina 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 na máquina 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 é o IP da máquina VPN / websrv.

UPD: mais dois fatos  - Webserver e páginas protegidas usam o certificado SSL (https)  - O DNS nos dispositivos Windows / Android está definido apenas para o DNS do Google.

    
por Croll 31.10.2015 / 22:54

4 respostas

1

Instale a ligação no servidor Openvpn / web. Adicione uma zona para www.example.com para apontar para o IP interno do servidor web e definir os encaminhadores para 8.8.8.8 e 8.8.4.4, verifique também se ele está escutando e definido como um resolvedor para sub-redes internas / VPN.

Uma zona básica para o subdomínio específico, certifique-se de replicar quaisquer detalhes duplicados conforme necessário.

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; }

Arquivo de 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

certifique-se de testar e configurar o openvpn para empurrar este servidor de DNS.

    
por 08.11.2015 / 21:24
1

O que vejo é apenas um problema de DNS. Quando você tenta se conectar ao site, você resolve o IP da Internet, não o IP da VPN. Thy o seguinte: editar C: \ Windows \ System32 \ drivers \ etc \ hosts e adicionar uma entrada como

10.8.0.X   www.yourdomain.com

Isso deve fazer com que a máquina do Windows seja resolvida para o IP e a rota corretos de acordo. Se isso funcionar, então você deve configurar o servidor VPN para dizer aos clientes para usarem um servidor DNS dentro de 10.8.0.0/24 (acho que dhcp-option é o nome da diretiva, mas você deve fazer alguma pesquisa). O servidor DNS deve ser configurado para resolver www.yourdomain.com para o endereço IP do seu servidor interno.

    
por 05.11.2015 / 17:58
1

Sua VPN está usando a sub-rede 10.8.0.0/24, mas a rota para o endereço xxx.53.xxx.yy usa o gateway 192.168.137.1 em vez de 10.8.0.5, o que significa que as solicitações da Web para o servidor a partir do Windows cliente está passando pela Internet, não pela VPN. Para corrigir isso, você precisa desabilitar o tunelamento dividido em seu cliente Windows OpenVPN para enviar todo seu tráfego através da VPN ou alterar o gateway na rota estática para xxx.53.xxx.yy para ser 10.8 .0.5.

    
por 06.11.2015 / 19:48
0

Na máquina Windows, você verificou a métrica e ver se a rota da VPN está em uma métrica mais baixa para ter prioridade mais alta? Talvez seja um problema com a métrica.

Mais uma coisa que você pode tentar é definir a configuração openvpn no servidor para que os clientes rotearão todo o tráfego através da conexão VPN.

    
por 31.10.2015 / 23:18