Instalar y configurar StrongSwan VPN en Ubuntu 20.04
Una red privada virtual se utiliza para crear una red privada desde 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 los protocolos IKEv1 e IKEv2 para establecer 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 de root en ambos servidores.
Instalar StrongSwan
De forma predeterminada, StrongSwan está disponible en el repositorio predeterminado de Ubuntu 20.04. Puede instalarlo con otros componentes necesarios usando el siguiente comando:
apt-get install 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 de CA.
Genere un certificado para el 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
A continuación, cree una clave privada para el servidor VPN con 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 StrongSwan VPN
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 las siguientes configuraciones y configuraciones de 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 leftid=@vpn.domain.com 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 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 kernel
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 y luego vuelva a cargar la nueva configuración con 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 requeridos 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 root@vpn.domain.com:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/
Para configurar la autenticación del cliente VPN, use 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, contraseña que ha especificado 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ía 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 que la dirección IP 10.10.10.1 se asigna a la máquina cliente.
También puede verificar su nueva dirección IP con el siguiente comando:
ip a
Debería 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 StrongSwan VPN en Ubuntu 20.04. Ahora puede proteger su identidad y asegurar sus actividades en línea.