Una red privada virtual se utiliza para crear una red privada a partir de una conexión pública a Internet para proteger su identidad. VPN utiliza un túnel cifrado para enviar y recibir datos de forma segura.
strongSwan es uno de los software VPN más famosos que admite diferentes sistemas operativos, incluidos Linux, OS X, FreeBSD, Windows, Android e iOS. Utiliza el protocolo IKEv1 e IKEv2 para el establecimiento de una conexión segura. Puede ampliar su funcionalidad con complementos integrados.
En este tutorial, explicaremos las instrucciones paso a paso sobre cómo configurar un servidor VPN KEv2 con StrongSwan en Ubuntu 20.04.
Requisito previo
• Dos sistemas que ejecutan el servidor Ubuntu 20.04
• Se configura una contraseña raíz en ambos servidores
Instalar StrongSwan
De forma predeterminada, StrongSwan está disponible en el repositorio predeterminado de Ubuntu 20.04. Puede instalarlo con otros componentes requeridos usando el siguiente comando:
apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y
Después de instalar todos los paquetes, puede proceder a generar un certificado CA.
Generar un certificado para servidor VPN
A continuación, deberá generar un certificado y una clave para que el servidor VPN verifique la autenticidad del servidor en el lado del cliente.
Primero, cree una clave privada para la CA raíz con el siguiente comando:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem
A continuación, cree una CA raíz y fírmela con la clave anterior:
ipsec pki --self --in /etc/ipsec.d/private/ca.key.pem --type rsa --dn "CN=My VPN Server CA" --ca --lifetime 3650 --outform pem > /etc/ipsec.d/cacerts/ca.cert.pem
Luego, cree una clave privada para el servidor VPN usando el siguiente comando:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem
Finalmente, genere el certificado del servidor usando el siguiente comando:
ipsec pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa | ipsec pki --issue --lifetime 2750 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem --dn "CN=vpn.domain.com" --san="vpn.domain.com" --flag serverAuth --flag ikeIntermediate --outform pem > /etc/ipsec.d/certs/server.cert.pem
En este punto, todos los certificados están listos para el servidor VPN.
Configurar VPN de StrongSwan
El archivo de configuración predeterminado de strongswan es /etc/ipsec.conf. Podemos hacer una copia de seguridad del archivo de configuración principal y crear un nuevo archivo:
mv /etc/ipsec.conf /etc/ipsec.conf-bak
A continuación, cree un nuevo archivo de configuración:
nano /etc/ipsec.conf
Agregue los siguientes ajustes de configuración y conexión:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
strictcrlpolicy=no
uniqueids=yes
cachecrls=no
conn ipsec-ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
[email protected]
leftcert=server.cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8
rightsendcert=never
eap_identity=%identity
Guarde y cierre el archivo /etc/ipsec.conf.
A continuación, deberá definir las credenciales de usuario de EAP y las claves privadas de RSA para la autenticación.
Puede configurarlo editando el archivo /etc/ipsec.secrets:
nano /etc/ipsec.secrets
Agregue la siguiente línea:
: RSA "server.key.pem"
vpnsecure : EAP "password"
Luego reinicie el servicio StrongSwan de la siguiente manera:
systemctl restart strongswan-starter
Para permitir que StrongSwan se inicie en el arranque del sistema, escriba:
systemctl enable strongswan-starter
Verifique el estado del servidor VPN, escriba:
systemctl status strongswan-starter
Habilitar el reenvío de paquetes del núcleo
A continuación, deberá configurar el kernel para habilitar el reenvío de paquetes editando el archivo /etc/sysctl.conf:
nano /etc/sysctl.conf
Descomente las siguientes líneas:
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
Guarde y cierre el archivo, luego vuelva a cargar la nueva configuración usando el siguiente comando:
sysctl -p
Instalar y configurar el cliente StrongSwan
En esta sección, instalaremos el cliente StrongSwan en la máquina remota y nos conectaremos al servidor VPN.
Primero, instale todos los paquetes necesarios con el siguiente comando:
apt-get install strongswan libcharon-extra-plugins -y
Una vez que todos los paquetes estén instalados, detenga el servicio StrongSwan con el siguiente comando:
systemctl stop strongswan-starter
A continuación, deberá copiar el archivo ca.cert.pem del servidor VPN al directorio /etc/ipsec.d/cacerts/. Puede copiarlo usando el comando SCP como se muestra a continuación:
scp [email protected]:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/
Para configurar la autenticación del cliente VPN, utilice el archivo /etc/ipsec.secrets:
nano /etc/ipsec.secrets
Agregue la siguiente línea:
vpnsecure : EAP "password"
Luego edite el archivo de configuración principal de strongSwan:
nano /etc/ipsec.conf
Agregue las siguientes líneas que coincidan con su dominio, la contraseña que especificó en el archivo /etc/ipsec.secrets.
conn ipsec-ikev2-vpn-client
auto=start
right=vpn.domain.com
rightid=vpn.domain.com
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=vpnsecure
leftauth=eap-mschapv2
eap_identity=%identity
Ahora inicie el servicio StrongSwan VPN usando el siguiente comando:
systemctl start strongswan-starter
A continuación, verifique el estado de la conexión VPN con el siguiente comando:
ipsec status
Deberías obtener el siguiente resultado:
Security Associations (1 up, 0 connecting):
ipsec-ikev2-vpn-client[1]: ESTABLISHED 28 seconds ago, 104.245.32.158[vpnsecure]...104.245.33.84[vpn.domain.com]
ipsec-ikev2-vpn-client{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ca6f451c_i ca9f9ff7_o
ipsec-ikev2-vpn-client{1}: 10.10.10.1/32 === 0.0.0.0/0
El resultado anterior indica que se establece una conexión VPN entre el cliente y el servidor, y la dirección IP 10.10.10.1 se asigna a la máquina del cliente.
También puede verificar su nueva dirección IP con el siguiente comando:
ip a
Deberías obtener el siguiente resultado:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:68:f5:20:9e brd ff:ff:ff:ff:ff:ff
inet 104.245.32.158/25 brd 104.245.32.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.10.1/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:68ff:fef5:209e/64 scope link
valid_lft forever preferred_lft forever
Conclusión
En la guía anterior, aprendimos cómo configurar un servidor y cliente VPN StrongSwan en Ubuntu 20.04. Ahora puede proteger su identidad y asegurar sus actividades en línea.