WirelessVPN
Conteúdo |
Rede Wireless segura usando VPN
Sumário
Enquanto a criptografia do Wifi geralmente provê uma primeira camada de proteção para redes sem fio, ela está longe de ser perfeita:
- WEP ainda é largamente usado e deve ser considerado como muito inseguro
- WPA também pode ser quebrado (isso requer mais esforços) e muitos dispositivos ainda não estão habilitados para WPA
Esse documento pretende prover um material complementar para dar segurança a uma rede sem fios, usando um nível de criptografia adicional com uma Rede Privada Virtual (Virtual Private Network - VPN). É assumido que o leitor tem conhecimentos básicos de roteamento de IP em redes e adminstração de sistemas Linux. Porém, para alargar a audiência para não-experts, esse documento não irá abordar muitos dos aspectos técnicos da VPN.
Esse documento contém instruções para configurar uma VPN roteada usando uma chave estática, a qual funcionará somente com um cliente. Configurar múltiplos clientes requer uma infra-instrutura de chave pública (Public Key Infrastructure - PKI), a qual é levemente mais complexa e não será tratada aqui.
Roteando
De forma ideal, o ponto de acesso sem fio, bem como a máquina Wifi, não têm acesso direto a Internet. Ela poderia ser conectada ao servidor VPN, assim todo o roteamento pode ser controlado pelo roteador. Na prática, o servidor VPN estaria conectado a LAN_SUBNET com uma interface de rede e ao ponto de acesso sem fio com outra interface de rede. É altamente recomendado configurar diferentes sub-redes para essas duas interfaces.
Nesse documento, a topologia de rede é esperada como algo parecido a isso:
[MÁQUINA_WIFI]----(WIFI)---->[PONTO_DE_ACESSO_SEM_FIO]----(LAN)---->[SERVIDOR_VPN]----->INTERNET (potencialmente via um ''gateway'' local)
Exemplo:
- O gateway da Internet: eth0 inet end:192.168.0.10 bcast:192.168.0.255 (LAN_SUBNET)
- O servidor VPN: eth0 inet end:192.168.0.1 bcast:192.168.0.255 (LAN_SUBNET)
- O servidor VPN: eth1 inet end:192.168.1.1 bcast:192.168.1.255 (WIFI_SUBNET)
- O ponto de acesso sem fio: eth0 inet end:192.168.1.2 bcast:192.168.1.255 (WIFI_SUBNET)
- Máquina Wifi (SISTEMA): eth0 inet end:192.168.1.3 bcast:192.168.1.255 (WIFI_SUBNET)
A seguinte configuração do iptables poderia ser instalada no servidor VPN para rotear o tráfego:
# Declaração padrão, com DROP como uma política padrão de ENTRADA (INPUT) *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Habilitar acesso completo a partir do localhost -A INPUT -i lo -p all -j ACCEPT # Permitir conexões iniciadas a partir dessa máquina -A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT ####################################################### # WIFI --> LAN ####################################################### # Impedindo Wifi de alcançar LAN_SUBNET # LAN_SUBNET: Ethernet LAN sub-rede. Ex.: 192.168.0.0/24 -A FORWARD -d LAN_SUBNET -j DROP # Habilitar VPN -A INPUT -i tun+ -j ACCEPT -A FORWARD -i tun+ -j ACCEPT # Forçar a(s) máquina(s) identificada(s) como SISTEMA a usar o VPN. # Isso significa que sem o uso do VPN, SISTEMA não acessará a Internet # SISTEMA: Uma máquina Wifi ou sub-rede Wifi inteira. Ex.: 192.168.1.3 # # -A FORWARD -s SISTEMA -j DROP # Permitir acesso ao serviço VPN -A INPUT -p udp --dport 1194 -j ACCEPT ####################################################### # INTERNET/WIFI -> LAN serviços ####################################################### # Serviços internos no servidor VPN podem potencialmente # se tornarem disponíveis para a LAN_SUBNET # LAN_SUBNET: Ethernet LAN sub-rede. Ex: 192.168.0.0/24 -A INPUT -s LAN_SUBNET -p all -j ACCEPT # Permitir SSH a partir da Internet E a partir da Wifi -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # DHCP também pode ser útil # -A INPUT -p udp --dport 137:138 -j ACCEPT # Registrar todos os pacotes rejeitados no syslog (útil para achar erros) # -A INPUT -j LOG --log-level warn --log-prefix "[NEGADO] " COMMIT
Configurando o OpenVPN
Configurando o servidor
- Instalar o OpenVPN
Instale o seguinte pacote: openvpn (veja Adicionando e Removendo Programas).
- Gerar uma chave estática compartilhada
cd /etc/openvpn/ && /usr/sbin/openvpn --genkey --secret static.key
- Comentar todas as linhas de /etc/default/openvpn e adicionar:
AUTOSTART="openvpn"
- Preencher o arquivo de configuração /etc/openvpn/openvpn.conf com:
dev tun # Interface de rede usado pelo servidor VPN sobre a WIFI_SUBNET # eth1 (192.168.1.1) no exemplo anterior local 192.168.1.1 # A linha seguinte define duas novas interfaces VPN # ifconfig VPN_SERVER VPN_CLIENT ifconfig 10.1.0.1 10.1.0.2 up ./office.up secret static.key ping 15 tun-mtu 1200 mssfix 1400 verb 3
- /etc/openvpn/office.up pode ser executável e conter:
route add -net 10.0.1.0 netmask 255.255.255.0 gw $5
Finalmente, nós podemos completar o roteamento para a rede sem fio na configuração do iptables:
####################################################### # ROTEANDO WIFI -> LAN/INTERNET # Rotear o tráfego Wifi para a Internet ####################################################### *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Rotear todo o tráfego Wifi - mesmo sem VPN! - para a Internet # WIFI_SUBNET: Wifi sub-rede. Ex: 192.168.1.0/24 # -A POSTROUTING -s WIFI_SUBNET -o eth0 -j MASQUERADE # Rotear o tráfego de VPN_HOST para a LAN/Internet # VPN_CLIENT: VPN host (ou sub-rede VPN para configurações de múltiplos clientes). Ex: 10.1.0.2 -A POSTROUTING -s VPN_CLIENT -o eth0 -j MASQUERADE COMMIT
- Iniciar o serviço OpenVPN:
/etc/init.d/openvpn start
Configurando o cliente
- Instalar OpenVPN
apt-get install openvpn
- Copiar a chave estática /etc/openvpn/static.key para o sistema cliente em /etc/openvpn.
- Comentar todas as linhas de /etc/default/openvpn e adicionar:
AUTOSTART="openvpn"
- Preencher o arquivo de configuração /etc/openvpn/openvpn.conf com:
dev tun # Interface de rede usada pelo cliente VPN (SISTEMA) na WIFI_SUBNET # eth0 (192.168.1.3) no exemplo anterior local 192.168.1.3 # Interface de rede usada pelo servidor VPN na WIFI_SUBNET # eth1 (192.168.1.1) no exemplo anterior remote 192.168.1.1 nobind # A linha seguinte define duas novas interfaces VPN # ifconfig VPN_CLIENT VPN_SERVER ifconfig 10.1.0.2 10.1.0.1 up ./home.up down ./home.down secret static.key ping 15 tun-mtu 1200 mssfix 1400 verb 3
- /etc/openvpn/home.up deve ser executável e conter:
route add -net 10.0.0.0 netmask 255.255.255.0 gw $5 route add -net 0.0.0.0 netmask 0.0.0.0 dev tun0 # Na linha seguinte, eth0 é a interface de rede # usada pelo cliente VPN (SISTEMA) na WIFI_SUBNET route del -net 0.0.0.0 netmask 0.0.0.0 dev eth0
- /etc/openvpn/home.down deve ser executável e conter:
# Na linha seguinte, eth0 é a interface de rede # usada pelo cliente VPN (SISTEMA) na WIFI_SUBNET route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0
- Iniciar o serviço OpenVPN:
/etc/init.d/openvpn start
- Se o seguinte comando ping não retornar um erro, então tudo está funcionado!
ping 10.1.0.1 ping 10.1.0.2
Créditos
Original: WirelessVPN |
Autor: Community Ubuntu |
Tradutor: LuizAquino, AlexandroSilva |
Data: 15/04/2008 |
WirelessVPN (last edited 2011-09-19 23:20:21 by localhost)