strongSwan es una implementación de VPN (red privada virtual) 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 de intercambio de claves de Internet ( IKEv1 e 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 precompartida ( 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: Habilitación del reenvío de paquetes del kernel
1. Primero, necesita 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, elimine los comentarios 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
Cargar la configuración del kernel de Sysctl
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 filtro en cualquiera de las 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 su caché de paquetes en ambas puertas de enlace de seguridad e instale el paquete strongswan usando el administrador de paquetes APT.
$ sudo apt update $ sudo apt install strongswan
6. Una vez que se complete la instalación, la secuencia de comandos del instalador iniciará el servicio strongswan y lo habilitará para que se inicie automáticamente al arrancar 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 mediante 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 cp /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 la información de configuración general para IPSec que se aplica a todas las conexiones.
- charondebug : define la cantidad de salida de depuración de Charon que se debe registrar.
- uniqueids : especifica si una identificación de participante en particular debe mantenerse única.
- conn prodgateway-to-devgateway : define el nombre de la conexión.
- type : 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í.
- left : 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.
- right : 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 / cifrado IKE / ISAKMP SA que se utilizarán. Puede agregar una lista separada por comas.
- esp : define una lista de algoritmos de autenticación / cifrado ESP que se utilizarán para la conexión. Puede agregar una lista separada por comas.
- agresivo : indica si se debe utilizar el modo principal o agresivo.
- 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 los mensajes R_U_THERE / intercambios INFORMACIONALES se envían 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 Dead Peer Detection (DPD) para administrar la conexión.
Para obtener más información sobre los parámetros de configuración anteriores, lea la página de manual de ipsec.conf ejecutando el comando.
$ man ipsec.conf
Paso 4: configuración de 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 mediante el siguiente comando.
$ head -c 24 /dev/urandom | base64
Generar clave PSK
9. A continuación, agregue el PSK en el archivo /etc/ipsec.secrets en ambas puertas de enlace.
$ sudo vim /etc/ipsec.secrets
Copia y pega 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
Ver el estado de la conexión IPSec
11. Finalmente, verifique que puede 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
Verificar la configuración de VPN de sitio a sitio
12. Además, puede detener e iniciar IPSec como se muestra.
$ sudo ipsec stop $ sudo ipsec start
13. Para obtener más información 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 ambas puertas de enlace de seguridad se configuraron para autenticarse entre sí usando un PSK . Si tiene alguna pregunta o pensamiento que compartir, comuníquese con nosotros a través del formulario de comentarios a continuación.
Debian , red , Ubuntu , VPN