Búsqueda de sitios web

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, con todas las funciones y ampliamente utilizada que se ejecuta en Linux, FreeBSD, OS X, Windows, Android e iOS. Es principalmente un demonio de claves que admite los protocolos Internet Key Exchange (IKEv1 y IKEv2) para establecer asociaciones de seguridad (SA).) entre dos pares.

Este artículo describe cómo configurar puertas de enlace VPN IPSec de sitio a sitio utilizando strongSwan en servidores Ubuntu y Debian. . Por sitio a sitio nos referimos a que cada puerta de enlace de seguridad tiene una subred detrás. Además, los pares se autenticarán entre sí mediante una clave previamente compartida (PSK).

Entorno de prueba

Recuerde reemplazar las siguientes IP con sus IP del mundo real para configurar su entorno.

Puerta de enlace 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

Puerta de enlace 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, debe configurar el kernel para habilitar el reenvío de paquetes agregando las variables de sistema apropiadas en el archivo de configuración /etc/sysctl.conf en ambas puertas de enlace de seguridad.

sudo vim /etc/sysctl.conf

Busque las siguientes líneas, descoméntelas y establezca sus valores como se muestra (lea 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, cargue la nueva configuración ejecutando el siguiente comando.

sudo sysctl -p

3. Si tiene un servicio de firewall UFW habilitado, debe agregar las siguientes reglas al archivo de configuración /etc/ufw/before.rules justo antes de las reglas de filtrado en ya sea puertas de enlace de seguridad.

Puerta de enlace 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

Puerta de enlace 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 hayan agregado las reglas de firewall, aplique los nuevos cambios reiniciando UFW como se muestra.

sudo ufw disable 
sudo ufw enable

Paso 2: Instalar strongSwan en Debian y Ubuntu

5. Actualice la caché de su paquete en ambas puertas de enlace de seguridad e instale el paquete strongswan utilizando el administrador 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 permitirá que se inicie automáticamente al iniciar el sistema. Puede verificar su estado y si está habilitado usando el siguiente comando.

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

Paso 3: Configurar puertas de enlace de seguridad

7. A continuación, debe configurar las puertas de enlace de seguridad utilizando el archivo de configuración /etc/ipsec.conf.

Puerta de enlace del sitio 1 (tecmint-devgateway)

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

Copie y pegue 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 

Copie y pegue 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:

  • config setup: 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 se debe registrar.
  • uniqueids: especifica si un ID de participante en particular debe mantenerse único.
  • 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 que se utilizará.
  • authby: define cómo los pares deben autenticarse entre sí.
  • 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 correcto.
  • rightsubnet: indica la subred privada detrás del participante izquierdo.
  • ike: define una lista de algoritmos de autenticación/encriptación IKE/ISAKMP SA que se utilizarán. Puede agregar una lista separada por comas.
  • esp: define una lista de algoritmos de autenticación/encriptación ESP que se utilizarán para la conexión. Puede agregar una lista separada por comas.
  • agresivo: indica si se debe utilizar el modo agresivo o 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.
  • vida útil: define cuánto tiempo debe durar una instancia particular de una conexión, desde la negociación exitosa hasta el vencimiento.
  • dpddelay: especifica el intervalo de tiempo con el que se envían los mensajes R_U_THERE/intercambios INFORMACIONALES al par.
  • dpdtimeout: especifica el intervalo de tiempo de espera, después del cual todas las conexiones con un igual se eliminan en caso de inactividad.
  • dpdaction: define cómo utilizar el protocolo de detección de pares muertos (DPD) para gestionar la conexión.

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

man ipsec.conf

Paso 4: Configurar PSK para la autenticación de igual a igual

8. Después de configurar ambas puertas de enlace de seguridad, genere un PSK seguro para que lo utilicen los pares usando el siguiente comando.

head -c 24 /dev/urandom | base64

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

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

11. Finalmente, verifique que pueda acceder a las subredes privadas desde cualquiera de las puertas de enlace de seguridad ejecutando un comando ping.

ping 192.168.0.101
ping 10.0.2.15

12. Además, puede detener e iniciar IPSec como se muestra.

sudo ipsec stop
sudo ipsec start

13. Para saber más sobre los comandos IPSec para abrir conexiones manualmente 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 usando strongSwan en servidores Ubuntu y Debian, donde ambos Las puertas de enlace de seguridad se configuraron para autenticarse entre sí mediante un PSK. Si tiene alguna pregunta o idea para compartir, comuníquese con nosotros a través del formulario de comentarios a continuación.