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.