miércoles, 15 de enero de 2014

Instalacion y configuracion extra basica de VPN con IPSEC y PRESHAREDKEY en LINUX

En muchos casos se requiere una conexion segura entre redes, o acceso a recursos compartidos entre oficinas remotas, en este caso se montará una vpn para conectar varias oficinas a traves de internet, ambas redes con estructura similar donde x sera el identificador de la oficina:
 Red LAN con ip 192.168.x.0/24
 Red DMZ con ip 10.10.x.0/24
Se utiliza un servidor como router, vpn, etc. para distribuir internet con las siguientes interfaces:
 eth0 - WAN IP 200.x.x.x
 eth1 - LAN IP 192.168.x.1
 eth2 - DMZ IP 10.10.x.1

Por facilidad se usara "x" sera la local y "y" sera la remota, x=1 y=2

Se usara el nombre de la vpn como vpnxy. Es decir vpn12 y en el equipo remoto configurar al reves vpn21

El presharedkey o PSK sera una clave que conozcan ambos servidores, se usara "contrasenia", se recomienda que toda la malla de la vpn use el mismo psk y la misma encriptación, usaremos 3des - sha1 1024 bits


1.- DESHABILITAR REDIRECCIONES, editar el archivo /etc/sysctl.conf y buscar net.ipv4.ip_forward y ponerlo en valor 1 (ojo, descomentarlo primero quitando el numeral de la izquierda)

2.- Instalar OpenSwan:
apt-get install openswan

3.- Configuracion global del IPSEC, editar el archivo /etc/ipsec.conf y dejarlo como sigue:

version 2.0
config setup
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16
oe=off
include /etc/ipsec.d/*.conf

4.- Configuracion de las claves PSK, editar el archivo /etc/ipsec.secrets y dejarlo como sigue (aumentar filas para mas servidores):

include /var/lib/openswan/ipsec.secrets.inc
200.1.1.1 200.2.2.2 : PSK "contrasenia"

5.- Configurar la conexion de la vpn.- crear un archivo para cada vpn con su nombre en /etc/ipsec.d/vpn12.conf:

conn vpn12
authby=secret
auto=start
keyexchange=ike
esp=3des
compress=yes
left=200.1.1.1
leftsubnet=10.10.1.0/24
right=200.2.2.2
rightsubnet=10.10.2.0/24

6.- Iniciar y verificar el servicio:
service ipsec restart
ipsec verify
7.- Levantar la vpn:
ipsec auto --add vpn12
ipsec auto --up vpn12
8.- Configurar un gateway por defecto
route add default gw 200.1.1.1 eth0
9.- Verificar la reglas del firewall, de preferencia quitar todas las reglas
iptables -vnL -t nat
iptables -vnL

10.- Enmascaramiento para dar internet, evitando colision con la vpn
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 \! -d 10.10.0.0/16 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 \! -d 10.10.0.0/16 -j MASQUERADE

11.- Redireccion de la red interna a la vpn usando nat
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 10.10.2.0/28 -j SNAT --to 10.10.1.254

12.- Aceptar trafico puertos 500 y 50 para la encriptación del PSK
iptables -I INPUT -p udp --sport 500 --dport 500 -j ACCEPT
iptables -I OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT
iptables -I INPUT -p 50 -j ACCEPT
iptables -I OUTPUT -p 50 -j ACCEPT

13.- Pruebas de conexion en un servidor local(10.10.1.2)
ping google.com #ping a internet
ping 10.10.2.2 #ping a un servidor remoto a traves de la VPN

14.- Pruebas de conexion en un equipo local(192.168.1.2)
ping google.com #ping a internet
ping 10.10.1.2 #ping a un servidor local en DMZ
ping 10.10.2.2 #ping a un servidor remoto a traves de la VPN

15.- Publicar un servidor(virtualip)
adicionar un alias a la interface o virtual ip

ifconfig eth0:0 200.1.1.2 up
ifconfig eth0:1 200.1.1.3 up
....
iptables -t nat -A PREROUTING -p tcp -d 200.1.1.2 -j DNAT --to-destination 10.10.1.2
iptables -t nat -A PREROUTING -p tcp -d 200.1.1.3 -j DNAT --to-destination 10.10.1.3
....

No hay comentarios: