WirelessVPN

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



CategoryRevisada

WirelessVPN (last edited 2011-09-19 23:20:21 by localhost)