Cómo configurar una VPN basada en IPsec con Strongswan en Debian y Ubuntu

strongSwan es una implementación de VPN (Red Privada Virtual) basada en IPsec, de código abierto, multiplataforma, completa y ampliamente utilizada que se ejecuta en Linux, FreeBSD, OS X, Windows, Android e iOS. Es principalmente un demonio de intercambio de claves que admite los protocolos de Intercambio de Claves de Internet (IKEv1 y IKEv2) para establecer asociaciones de seguridad (SA) entre dos pares.

Este artículo describe cómo configurar pasarelas de VPN IPSec de sitio a sitio utilizando strongSwan en servidores Ubuntu y Debian. Por sitio a sitio nos referimos a que cada pasarela de seguridad tiene una subred detrás de ella. Además, los pares se autenticarán mutuamente utilizando una clave precompartida (PSK).

Entorno de Pruebas

Recuerda reemplazar las siguientes IPs con tus IPs del mundo real para configurar tu entorno.

Pasarela del Sitio 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Pasarela del Sitio 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Paso 1: Habilitar el Reenvío de Paquetes del Kernel

1. Primero, necesitas configurar el kernel para habilitar el reenvío de paquetes agregando las variables del sistema apropiadas en el archivo de configuración /etc/sysctl.conf en ambas pasarelas de seguridad.

$ sudo vim /etc/sysctl.conf

Busca las siguientes líneas, descoméntalas y establece sus valores como se muestra (lee los comentarios en el archivo para obtener más información).

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 

2. A continuación, carga la nuevas configuraciones ejecutando el siguiente comando.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. Si tienes habilitado el servicio de firewall UFW, necesitas añadir las siguientes reglas al archivo de configuración /etc/ufw/before.rules justo antes de las reglas de filtrado en cualquiera de las pasarelas de seguridad.

Pasarela del Sitio 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Pasarela del Sitio 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. Una vez que se han añadido las reglas del firewall, aplica los nuevos cambios reiniciando UFW como se muestra a continuación.

$ sudo ufw disable 
$ sudo ufw enable

Paso 2: Instalación de strongSwan en Debian y Ubuntu

5. Actualiza tu caché de paquetes en ambas pasarelas de seguridad e instala el paquete strongswan usando el gestor de paquetes APT.

$ sudo apt update
$ sudo apt install strongswan 

6. Una vez completada la instalación, el script del instalador iniciará el servicio strongswan y lo habilitará para iniciar automáticamente en el arranque del sistema. Puedes verificar su estado y si está habilitado utilizando el siguiente comando.

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

Paso 3: Configuración de las Pasarelas de Seguridad

7. A continuación, necesitas configurar las pasarelas de seguridad utilizando el archivo de configuración /etc/ipsec.conf.

Pasarela del Sitio 1 (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copia y pega la siguiente configuración en el archivo.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Puerta de enlace del sitio 2 (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copia y pega la siguiente configuración en el archivo.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Aquí está el significado de cada parámetro de configuración:

  • configuración de instalación – especifica información de configuración general para IPSec que se aplica a todas las conexiones.
  • charondebug – define cuánta salida de depuración de Charon debe registrarse.
  • uniqueids – especifica si se debe mantener única una ID de participante específica.
  • conn prodgateway-to-devgateway – define el nombre de la conexión.
  • tipo – define el tipo de conexión.
  • auto – cómo manejar la conexión cuando se inicia o reinicia IPSec.
  • keyexchange – define la versión del protocolo IKE a utilizar.
  • authby – define cómo deben autenticarse mutuamente los pares.
  • izquierda – define la dirección IP de la interfaz de red pública del participante izquierdo.
  • leftsubnet – indica la subred privada detrás del participante izquierdo.
  • derecha – especifica la dirección IP de la interfaz de red pública del participante derecho.
  • rightsubnet – indica la subred privada detrás del participante izquierdo.
  • ike – define una lista de algoritmos de cifrado y autenticación de SA IKE/ISAKMP que se utilizarán. Puedes agregar una lista separada por comas.
  • esp – define una lista de algoritmos de cifrado y autenticación de ESP que se utilizarán para la conexión. Puedes agregar una lista separada por comas.
  • aggressive – indica si se debe usar el Modo Agresivo o el Modo Principal.
  • keyingtries – indica el número de intentos que se deben realizar para negociar una conexión.
  • ikelifetime – indica cuánto tiempo debe durar el canal de clave de una conexión antes de ser renegociado.
  • lifetime – define cuánto tiempo debe durar una instancia particular de una conexión, desde la negociación exitosa hasta la expiración.
  • dpddelay – especifica el intervalo de tiempo con el que se envían mensajes R_U_THERE/intercambios INFORMATIVOS al par.
  • dpdtimeout – especifica el intervalo de tiempo de espera, después del cual todas las conexiones a un par se eliminan en caso de inactividad.
  • dpdaction – define cómo utilizar el protocolo de Detección de Pares Inactivos (DPD) para gestionar la conexión.

Para obtener más información sobre los parámetros de configuración anteriores, lee la página del manual de ipsec.conf ejecutando el comando correspondiente.

$ man ipsec.conf

Paso 4: Configuración de PSK para Autenticación entre Pares

8. Después de configurar ambas pasarelas de seguridad, genera una PSK segura que utilizarán los pares mediante el siguiente comando.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. A continuación, agregue el PSK en el archivo /etc/ipsec.secrets en ambas pasarelas.

$ sudo vim /etc/ipsec.secrets

Copie y pegue la siguiente línea.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Reinicie el programa IPSec y verifique su estado para ver las conexiones.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. Por último, verifique que puede acceder a las subredes privadas desde cualquiera de las pasarelas de seguridad ejecutando un comando ping.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. Además, puede detener y reiniciar IPSec como se muestra.

$ sudo ipsec stop
$ sudo ipsec start

13. Para obtener más información sobre los comandos de IPSec para establecer manualmente conexiones y más, consulte la página de ayuda de IPSec.

$ ipsec --help

¡Eso es todo! En este artículo, hemos descrito cómo configurar una VPN IPSec de sitio a sitio utilizando strongSwan en servidores Ubuntu y Debian, donde ambas pasarelas de seguridad se configuraron para autenticarse mutuamente utilizando un PSK. Si tiene alguna pregunta o pensamiento para compartir, contáctenos a través del formulario de comentarios a continuación.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/