
Conectando un linux a una VPN IPSEC de Fortigate
En este documento vamos a intentar describir todos los pasos que necesitaremos para conectar una máquina con linux a una VPN que esté ofreciendo un Fortigate, en este caso una VPN de tipo IPSEC. Un post que espero no albergue mucho misterio.
Este post lo baso en una máquina linux con Ubuntu, si estás usando otro SO no basado en Debian, entiendo que excepto la instalación, los demás pasos serán iguales, y la instalación similar, vaya. Que la máquina la tenemos actualizada, con un nombre, un direcciona miento IP… total, que empezamos! Instalaremos el cliente de VPN StrongSwan:
sudo apt install strongswan -y sudo apt install charon-systemd -y
Si queremos permitir el reenvío de paquetes a través de nosotros a la VPN, o sea, para otros equipos de la red del linux que se puedan conectar a la red de la VPN, editamos ‘sudo nano /etc/sysctl.conf’ y descomentamos las líneas siguientes, quedando:
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Editamos el fichero de configuración de StrongSwan ‘sudo nano /etc/ipsec.conf’ y creamos la configuración de la VPN en base a la definición que haya en el lado de la VPN IPSEC en el Fortigate, quedando algo como esto (obviamente es posible que tengáis que cambiar algún valor, dependerá si os habéis salido de las configuraciones standard, así como aportar algunos direccionamientos):
config setup charondebug = "dmn 1, mgr 1, ike 2, chd 1, job 1, cfg 3, knl 2, net 2, lib 1" nat_traversal = yes conn "FORTI_VPN" type=tunnel dpdaction=restart keyexchange=ikev1 ikelifetime=1440m keylife=60m aggressive=yes ike=aes128-sha1-modp1536 esp=aes128-sha1-modp1536 xauth=client #leftid=LOCAL_ID #Si tenemos Local ID. left=%defaultroute leftsourceip=%config leftauth=psk rightid=%any rightauth=psk leftauth2=xauth right=IP_PUBLICA_FORTIGATE rightsubnet=RED_LADO_VPN/MASCARA xauth_identity=NOMBRE_DE_USUARIO auto=add
Creamos el fichero de secretos ‘sudo nano /etc/ipsec.secrets’ y con el siguiente formato añadimos y modificamos nuestros datos:
IP_PUBLICA_FORTIGATE : PSK "SECRETO_PRESHARED_KEY" NOMBRE_DE_USUARIO : XAUTH "CONTRASEÑA_DEL_USUARIO"
Recargamos y probamos a conectar la VPN…
sudo systemctl restart strongswan sudo ipsec update sudo ipsec reload sudo ipsec up FORTI_VPN
Como todo habrá ido bien 😉 es hora de crear un script para que se ejecute automáticamente al iniciarse el equipo, que conecte la VPN y que además, si la VPN se desconecta, que se intente conectar de nuevo, ‘nano /home/usuario/inicia_vpn.sh’ quedando algo como:
#!/bin/bash while : do sudo ipsec status |grep "ESTABLISHED" RET=$? if [ ! $RET -eq 0 ];then echo "[!] No hay tunel levantado, reconectando..." sudo systemctl restart strongswan sudo ipsec update sudo ipsec reload sudo ipsec up FORTI_VPN fi sleep 5 done
Hacemos el script ejecutable con ‘chmod +x /home/usuario/inicia_vpn.sh’ y lo ponemos en el cron para que cuando arranque la máquina linux se conecte sola, mediante ‘crontab -e’:
# m h dom mon dow command @reboot sleep 30 && sudo /home/usuario/inicia_vpn.sh
¡Y listo! Ya tendríamos una máquina linux conectada por la VPN IPSEC de un Fortigate, así como un scriptcillo que controlará la conectividad! Cómo diría Arguiñano… ¡Fácil, sencillo y para toda la familia! Ale, que os vaya muy bien, os mando un abrazo!!