WirelessVPN

Differences between revisions 3 and 4
Revision 3 as of 2006-12-27 13:39:48
Size: 7324
Comment:
Revision 4 as of 2008-04-21 17:52:55
Size: 7995
Editor: LuizAquino
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Contents'''[[BR]][[TableOfContents]]|| ||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Conteúdo'''[[BR]][[TableOfContents]]||
Line 5: Line 5:
== Summary ==

While Wifi encryption generally provides a first protective layer for a wireless network, it is far from being perfect:
 * WEP is still widely used and must be considered as very insecure
 * WPA can also be broken (it requires more efforts), and many devices are still not WPA-enabled

This document intends to provide a complementary approach to secure a wireless network, by using an additional encryption level using a Virtual Private Network (VPN). It is assumed that the reader understands basic IP networks routing and Linux system administration. However, in an attempt to widen the audience to non-experts, this document will not cover many technical aspects of VPN.

This document contains instructions to setup a routed VPN using a static key, which will work with one client only. Multiple-clients setup requires a public key infrastructure (PKI), which is slightly more complex, and is not treated here.

== Routing ==

Ideally, the wireless access point, as well as the Wifi machine, have no direct Internet access. It should be connected to the VPN server, so that all the routing can be handled by the router. In practice, the VPN server would be connected to the LAN_SUBNET with one network interface, and to the wireless access point with another network interface. It is highly recommended to configure different subnets for these two interfaces.

In the document, the network topology is expected to look like:
{{{
[WIFI_MACHINE]----(WIFI)---->[WIRELESS_ACCESS_POINT]----(LAN)---->[VPN_SERVER]----->INTERNET (potentially via a local gateway)
}}}
''Example:''
 * The Internet gateway: eth0 inet adr:192.168.0.10 bcast:192.168.0.255 (LAN_SUBNET)
 * The VPN server: eth0 inet adr:192.168.0.1 bcast:192.168.0.255 (LAN_SUBNET)
 * The VPN server: eth1 inet adr:192.168.1.1 bcast:192.168.1.255 (WIFI_SUBNET)
 * The wireless access point: eth0 inet adr:192.168.1.2 bcast:192.168.1.255 (WIFI_SUBNET)
 * Wifi machine (SYSTEM): eth0 inet adr:192.168.1.3 bcast:192.168.1.255 (WIFI_SUBNET)

The following [:IptablesHowTo:iptables] configuration could be installed on the VPN server to route the traffic:

{{{
# Default declaration, with DROP as a default INPUT policy
== 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 alarguar a audiência para não-expertes, 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 [:IptablesHowTo: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)
Line 39: Line 41:
# Enable full access from localhost # Habilitar acesso completo a partir do localhost
Line 42: Line 44:
# Allow connections initiated from this machine # Permitir conexões iniciadas a partir dessa máquina
Line 49: Line 51:
# Preventing Wifi to reach LAN_SUBNET
# LAN_SUBNET: Ethernet LAN subnet. Ex: 192.168.0.0/24
# Impedindo Wifi de alcançar LAN_SUBNET
# LAN_SUBNET: Ethernet LAN sub-rede. Ex.: 192.168.0.0/24
Line 53: Line 55:
# Enable VPN # Habilitar VPN
Line 57: Line 59:
# Force the machine(s) identified as SYSTEM to use VPN.
# This means that without using VPN, SYSTEM will NOT access the Internet
# SYSTEM: A Wifi machine, or the whole Wifi subnet. Ex: 192.168.1.3
# 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
Line 61: Line 63:
# -A FORWARD -s SYSTEM -j DROP

# Allow access to the VPN service
# -A FORWARD -s SISTEMA -j DROP

# Permitir acesso ao serviço VPN
Line 68: Line 70:
# INTERNET/WIFI -> LAN services
#######################################################

# Internal services on the VPN server can potentially
# be made available to LAN_SUBNET
# LAN_SUBNET: Ethernet LAN subnet. Ex: 192.168.0.0/24
# 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
Line 76: Line 78:
# Allow SSH from the Internet AND from the Wifi # Permitir SSH a partir da Internet E a partir da Wifi
Line 79: Line 81:
# DHCP may also be useful # DHCP também pode ser útil
Line 82: Line 84:
# Log all rejected packets to syslog (useful for debugging)
# -A INPUT -j LOG --log-level warn --log-prefix "[DENIED] "
# Registrar todos os pacotes rejeitados no syslog (útil para achar erros)
# -A INPUT -j LOG --log-level warn --log-prefix "[NEGADO] "
Line 88: Line 90:
== Configuring OpenVPN ==

=== Setting up the server ===

 * Install OpenVPN

Install the following package: {{{openvpn}}} (see InstallingSoftware).

 * Generate a shared static key
== Configurando o OpenVPN ==

=== Configurando o servidor ===

 * Instalar o OpenVPN

Instale o seguinte pacote: {{{openvpn}}} (veja InstallingSoftware).

 * Gerar uma chave estática compartilhada
Line 101: Line 103:
 * Comment all the lines from /etc/default/openvpn, and add:  * Comentar todas as linhas de /etc/default/openvpn e adicionar:
Line 106: Line 108:
 * Populate the configuration file /etc/openvpn/openvpn.conf with:  * Preencher o arquivo de configuração /etc/openvpn/openvpn.conf com:
Line 109: Line 111:
# Network interface used by the VPN server on WIFI_SUBNET
# eth1 (192.168.1.1) in the previous example
# Interface de rede usado pelo servidor VPN sobre a WIFI_SUBNET
# eth1 (192.168.1.1) no exemplo anterior
Line 112: Line 114:
# The following line defines two new VPN interfaces # A linha seguinte define duas novas interfaces VPN
Line 123: Line 125:
 * /etc/openvpn/office.up should be executable and contain:  * /etc/openvpn/office.up pode ser executável e conter:
Line 129: Line 131:
 * Finally, we can complete the routing for the wireless network in the [:IptablesHowTo:iptables] configuration:
{{{
#######################################################
# ROUTING WIFI -> LAN/INTERNET
# Route the Wifi traffic to the Internet
 * Finalmente, nós podemos completar o roteamento para a rede sem fio na configuração do [:IptablesHowTo:iptables]:
{{{
#######################################################
# ROTEANDO WIFI -> LAN/INTERNET
# Rotear o tráfego Wifi para a Internet
Line 140: Line 142:
# Route all the Wifi traffic -even without VPN!- to the Internet
# WIFI_SUBNET: Wifi subnet. Ex: 192.168.1.0/24
# Rotear todo o tráfego Wifi - mesmo sem VPN! - para a Internet
# WIFI_SUBNET: Wifi sub-rede. Ex: 192.168.1.0/24
Line 144: Line 146:
# Route traffic from VPN_HOST to the LAN/Internet
# VPN_CLIENT: VPN host (or VPN subnet for multiple-clients setups). Ex: 10.1.0.2
# 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
Line 150: Line 152:
 * Start the OpenVPN service:  * Iniciar o serviço OpenVPN:
Line 153: Line 155:
=== Setting up the client ===

 * Install OpenVPN
=== Configurando o cliente ===

 * Instalar OpenVPN
Line 160: Line 162:
 * Copy the static key /etc/openvpn/static.key to the client system in /etc/openvpn.

 * Comment all the lines from /etc/default/openvpn, and add:
 * 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:
Line 167: Line 169:
 * Populate the configuration file /etc/openvpn/openvpn.conf with:  * Preencher o arquivo de configuração /etc/openvpn/openvpn.conf com:
Line 171: Line 173:
# Network interface used by the VPN client (SYSTEM) on WIFI_SUBNET
# eth0 (192.168.1.3) in the previous example
# Interface de rede usada pelo cliente VPN (SISTEMA) na WIFI_SUBNET
# eth0 (192.168.1.3) no exemplo anterior
Line 174: Line 176:
# Network interface used by the VPN server on WIFI_SUBNET
# eth1 (192.168.1.1) in the previous example
# Interface de rede usada pelo servidor VPN na WIFI_SUBNET
# eth1 (192.168.1.1) no exemplo anterior
Line 178: Line 180:
# The following line defines two new VPN interfaces # A linha seguinte define duas novas interfaces VPN
Line 190: Line 192:
 * /etc/openvpn/home.up should be executable and contain:  * /etc/openvpn/home.up deve ser executável e conter:
Line 195: Line 197:
# In the following, eth0 is the network interface
# used by the VPN client (SYSTEM) on WIFI_SUBNET
# Na linha seguinte, eth0 é a interface de rede
# usada pelo cliente VPN (SISTEMA) na WIFI_SUBNET
Line 199: Line 201:
 * /etc/openvpn/home.down should be executable and contain:
{{{
# In the following, eth0 is the network interface
# used by the VPN client (SYSTEM) on WIFI_SUBNET
 * /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
Line 205: Line 207:
 * Start the OpenVPN service:  * Iniciar o serviço OpenVPN:
Line 207: Line 209:
 * If the following ping commands do not return an error, it worked!  * Se o seguinte comando ping não retornar um erro, então tudo está funcionado!
Line 213: Line 215:
CategoryTraduzir == Créditos ==

||'''Original: ''' [https://help.ubuntu.com/community/WirelessVPN WirelessVPN]||'''Autor:''' [https://help.ubuntu.com/community/Credits Community Ubuntu] ||
||'''Tradutor:''' LuizAquino, AlexandroSilva ||'''Data:''' 15/04/2008 ||

----
CategoryRevisar

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 alarguar a audiência para não-expertes, 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 [:IptablesHowTo: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 InstallingSoftware).

  • 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 [:IptablesHowTo: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: [https://help.ubuntu.com/community/WirelessVPN WirelessVPN]

Autor: [https://help.ubuntu.com/community/Credits Community Ubuntu]

Tradutor: LuizAquino, AlexandroSilva

Data: 15/04/2008


CategoryRevisar

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