Servidor VPN

De doc.ubuntu-es
Revisión a fecha de 13:13 18 feb 2008; Kelp (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Asegurando en una pequeña red inalámbrica utilizando VPN

Contenido

Resumen

Aunque el cifrado Wifi generalmente proporciona una primera capa de protección para una red wireless, está lejos de ser perfecta:

  • WEP aun se utiliza ampliamente y debe ser considerada como muy insegura
  • WPA puede romperse también (aunque requiere más esfuerzo), y muchos dispositivos no tiene aun el WPA habilitado

Este documento pretende proporcionar un enfoque complementario para asegurar una red inalámbrica con un nivel adicional de cifrado usando Virtual Private Network (VPN). Se asume que el lector tiene conocimientos básicos de enrutamiento de redes IP y de administración del sistema linux. Sin embargo, en un intento por ampliar la audiencia a los no expertos, este documento no cubrirá muchos aspectos técnicos de la VPN.

Este documento contiene instrucciones para configurar un VPN usando una clave estática, la cual funcionara con un solo cliente. La configuración para múltiples clientes requiere una infraestructura para clave pública (PKI), lo cual es más complejo y no se describe aquí.

Enrutamiento

Idealmente, el punto de acceso wireless, al igual que la máquina wifi, no tiene acceso directo a Internet. Debería estar conectado al servidor VPN, y así todo el enrutamiento pueda ser manejado por el router. En la práctica, el servidor VPN estaría conectado a la LAN_SUBNET con un interfaz de red, y al punto de acceso wireless con otro interfaz de red. Es altamente recomendado configurar diferentes subredes para cada uno de los interfaces.

En el documento, la topología de la red debe tener un aspecto parecido a esto:

[WIFI_MACHINE]----(WIFI)---->[WIRELESS_ACCESS_POINT]----(LAN)---->[VPN_SERVER]----->INTERNET (potentially via a local gateway)

Ejemplo:

  • La dirección de puerta de enlace: eth0 inet adr:192.168.0.10 bcast:192.168.0.255 (LAN_SUBNET)
  • El servidor VPN: eth0 inet adr:192.168.0.1 bcast:192.168.0.255 (LAN_SUBNET)
  • El servidor VPN: eth1 inet adr:192.168.1.1 bcast:192.168.1.255 (WIFI_SUBNET)
  • El punto de acceso wireless: eth0 inet adr:192.168.1.2 bcast:192.168.1.255 (WIFI_SUBNET)
  • Wifi del equipo (SYSTEM): eth0 inet adr:192.168.1.3 bcast:192.168.1.255 (WIFI_SUBNET)

La siguiente configuración de iptables debe ser instalada en el servidor VPN para enrutar el tráfico:

# Default declaration, with DROP as a default INPUT policy
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Enable full access from localhost
-A INPUT -i lo -p all -j ACCEPT

# Allow connections initiated from this machine
-A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT

#######################################################
# WIFI --> LAN
#######################################################

# Preventing Wifi to reach LAN_SUBNET
# LAN_SUBNET: Ethernet LAN subnet. Ex: 192.168.0.0/24
-A FORWARD -d LAN_SUBNET -j DROP

# Enable VPN
-A INPUT -i tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT 


# 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
#
# -A FORWARD -s SYSTEM -j DROP

# Allow access to the VPN service
-A INPUT -p udp --dport 1194 -j ACCEPT


#######################################################
# 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
-A INPUT -s LAN_SUBNET -p all -j ACCEPT

# Allow SSH from the Internet AND from the Wifi
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

# DHCP may also be useful
# -A INPUT -p udp --dport 137:138 -j ACCEPT

# Log all rejected packets to syslog (useful for debugging)
# -A INPUT -j LOG --log-level warn --log-prefix "[DENIED] "

COMMIT

Configurar OpenVPN

Montando el servidor

  • Instalar OpenVPN

Instala el siguiente paquete: openvpn.

  • Genera una clave estática compartida
cd /etc/openvpn/ && /usr/sbin/openvpn --genkey --secret static.key
  • Comenta todas las lineas de /etc/default/openvpn y añade:
AUTOSTART="openvpn"
  • Rellena el archivo de configuración /etc/openvpn/openvpn.conf con:
dev tun
# Network interface used by the VPN server on WIFI_SUBNET
# eth1 (192.168.1.1) in the previous example
local 192.168.1.1
# The following line defines two new VPN interfaces
# 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 debe ser ejecutable y contener:
#!/bin/sh
route add -net 10.0.1.0 netmask 255.255.255.0 gw $5
  • Finalmente, podemos completar el enrutamiento para la red wireless en la configuración de iptables:
#######################################################
# ROUTING WIFI -> LAN/INTERNET
# Route the Wifi traffic to the Internet
#######################################################
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Route all the Wifi traffic -even without VPN!- to the Internet
# WIFI_SUBNET: Wifi subnet. Ex: 192.168.1.0/24
# -A POSTROUTING -s WIFI_SUBNET -o eth0 -j MASQUERADE

# 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
-A POSTROUTING -s VPN_CLIENT -o eth0 -j MASQUERADE
    
COMMIT
  • Inicia el servicio OpenVPN:
/etc/init.d/openvpn start 

Configurar el cliente

  • Instala OpenVPN
apt-get install openvpn
  • Copia la clave estática /etc/openvpn/static.key al sistema cliente en /etc/openvpn.
  • Comenta todas las líneas de /etc/default/openvpn y añade:
AUTOSTART="openvpn"
  • Rellena el fichero de configuración /etc/openvpn/openvpn.conf con:
dev tun

# Network interface used by the VPN client (SYSTEM) on WIFI_SUBNET
# eth0 (192.168.1.3) in the previous example
local 192.168.1.3
# Network interface used by the VPN server on WIFI_SUBNET
# eth1 (192.168.1.1) in the previous example
remote 192.168.1.1
nobind
# The following line defines two new VPN interfaces
# 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 debe ser ejecutable y contener:
#!/bin/sh
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
# In the following, eth0 is the network interface 
# used by the VPN client (SYSTEM) on WIFI_SUBNET
route del -net 0.0.0.0 netmask 0.0.0.0 dev eth0
  • /etc/openvpn/home.down debe ser ejecutable y contener:
# In the following, eth0 is the network interface 
# used by the VPN client (SYSTEM) on WIFI_SUBNET
route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0
  • Inicia el servicio OpenVPN:
/etc/init.d/openvpn start
  • Si el siguiente comando de ping no devuelve un error, es que funciona
ping 10.1.0.1
ping 10.1.0.2

CategoryDocumentação


Fuentes

Herramientas personales