En este tutorial, LibreSwan se instalará en la plataforma Ubuntu. LibreSwan es una implementación de código abierto del protocolo IPsec, se basa en el proyecto FreeSwan y está disponible como paquete listo para usar en distribuciones de Linux basadas en RedHat. Sin embargo, se dan instrucciones detalladas en el código fuente del proyecto para compilarlo en otras plataformas Linux. Después del proceso de instalación, se configurará una VPN IPsec basada en puerta de enlace para proteger los datos del emisor al receptor.
Una VPN basada en IPsec consta del intercambio de claves de Internet protocolo y la carga útil de seguridad encapsulada (ESP) protocolo.
--> IKE
Como su nombre lo indica, el propósito del protocolo IKE es autenticar (usando una clave precompartida, criptografía de clave pública, freeradius) pares de una VPN, generar claves dinámicamente y compartir las claves con los pares VPN. Las claves de cifrado para la segunda fase de IPsec también dependen de IKE. Libreswan implementa el protocolo IKE utilizando el programa pluto del proyecto.
--> ESP
El protocolo ESP es la especificación real de la política acordada entre pares que se implementa en la pila IPsec del kernel de Linux (NETEY/XFRM).
Características de Libreswan
- Compatibilidad con autenticación basada en clave precompartida.
- Compatibilidad con autenticación basada en clave pública.
- Admite ambas versiones IKE v1/v2 de intercambio de claves.
- Compatible con la biblioteca criptográfica NSS.
- Xauth y DNSSec también son compatibles.
Paquetes necesarios para Ubuntu 16.04
Se requiere instalar los siguientes paquetes en Ubuntu para una compilación exitosa de LibreSwan. También se brinda una breve información en el código fuente sobre cómo habilitar o deshabilitar complementos/funciones y comandos cuando instala LibreSwan.
apt-get -y update
apt-get install libunbound-dev libevent-dev libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make libnss3-tools
La instalación de los paquetes necesarios se muestra a continuación.
El último código fuente de la herramienta IPsec se descarga con el comando wget y se extrae con el siguiente comando tar.
wget https://download.libreswan.org/libreswan-3.20.tar.gz
tar -xzf libreswan-3.20.tar.gz
cd libreswan-3.20
No es necesario ejecutar el comando de configuración, simplemente ejecute make comando que mostrará dos formas de construir LibreSwan como se muestra a continuación.
Finalmente, ejecuta make all Comando para compilar LibreSwan en la plataforma.
make all
Ahora ejecuta make install comando para instalar el programa IPsec.
Iniciar el servicio IPsec
Como se muestra en la captura de pantalla anterior, se requiere habilitar el servicio IPSec en la plataforma Ubuntu usando el siguiente comando.
systemctl enable ipsec.service
Es necesario inicializar la biblioteca criptográfica NSS antes de iniciar el servicio IPsec. Lo utiliza LibreSwan para el uso de algoritmos criptográficos en IPsec VPN.
IPsec initnss
Finalmente, inicie el servicio IPSec usando el siguiente comando.
ipsec setup start
Ejecutar estado ipsec comando para ver la configuración de LibreSwan en la plataforma Ubuntu.
ipsec status
Configuración de LibreSwan
En este tutorial, se configurará una VPN IPsec entre pares utilizando una clave precompartida y claves RSA (par de claves públicas/privadas). La configuración de ambos compañeros (izquierda/derecha) se muestra a continuación.
VPN basada en clave precompartida
ipsec.conf (configuration file of left VM) ipsec.secrets (configuration file of left VM)
versión 2 192.168.15.145 192.168.15.245:PSK "vpn_psk>123"123
config setup
protostack=clave de red
conexión vpn_psk
ike=aes256-sha256;modp4096
fase2alg=aes256-sha256;modp4096
izquierda=192.168.15.145
subred izquierda=172.16.10.0/24
derecha=192.168.15.245
rightsubnet=192.169.50.0/24
authby=secreto
tipo=túnel
auto=iniciar
ipsec.conf (configuration file of right VM) ipsec.secrets (configuration file of right VM)
versión 2 192.168.15.245 192.168.15.145:PSK "vpn_psk123"
config setup
protostack=clave de red
conexión vpn_psk
ike=aes256-sha256;modp4096
fase2alg=aes256-sha256;modp4096
izquierda=192.168.15.245
subred izquierda=192.169.50.0/24
derecha=192.168.15.145
rightsubnet=172.16.10.0/24
authby=secreto
tipo=túnel
auto=iniciar
Después de establecer la configuración anterior en los archivos ipsec.conf e ipsec.secrets, ejecute el siguiente comando en ambos lados para iniciar el proceso de negociación de IPSec.
ipsec restart
Estado de VPN de clave previamente compartida
La salida de estado ipsec y setkey -D los comandos se muestran a continuación.
ipsec status
setkey -D
VPN basada en clave RSA (pública/privada)
Se requiere generar claves RSA para ambas máquinas e incluirlas en el archivo de configuración. La versión reducida de una clave RSA se muestra en este tutorial. También asegúrese de que la clave pública incluida esté en una sola línea.
Generación de claves RSA
Como se muestra a continuación, los siguientes comandos se utilizan para generar claves para ambos pares.
ipsec newhostkey --output /etc/ipsec.secrets
La clave pública generada se agrega en el archivo ipsec.secrets como se muestra a continuación.
De manera similar, las claves RSA se generan usando el mismo comando para la máquina del lado derecho, como se muestra en la siguiente instantánea.
Como se muestra arriba, los comandos de generación de claves incluyen automáticamente la clave pública RSA en /etc/ipsec.secrets en ambas máquinas pares. La clave privada de RSA se almacena en la base de datos de NSS en /etc/ipsec.d/*.db archivos.
Después de generar claves RSA, el siguiente paso cambia la configuración de ambas máquinas en el archivo ipsec.conf.
ipsec.conf (configuration file of left VM)
versión 2
config setup
protostack=clave de red
conexión vpn_rsa
ike=aes256-sha256;modp4096
fase2alg=aes256-sha256;modp4096
izquierda=192.168.15.145
subred izquierda=172.16.10.0/24
derecha=192.168.15.245
rightsubnet=192.169.50.0/24
authby=rsasig
tipo=túnel
auto=iniciar
ipsec.conf (configuration file of right VM)
versión 2
config setup
protostack=clave de red
conexión vpn_rsa
ike=aes256-sha256;modp4096
fase2alg=aes256-sha256;modp4096
izquierda=192.168.15.245
subred izquierda=192.169.50.0/24
derecha=192.168.15.145
rightsubnet=172.16.10.0/24
authby=rsasig
rightrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
tipo=túnel
auto=iniciar
Después de cambiar los archivos de configuración de LibreSwan, el siguiente paso es reiniciar el servicio IPsec en ambas máquinas con el siguiente comando.
ipsec restart
El estado de la VPN IPsec en el dispositivo izquierdo se muestra en la siguiente captura de pantalla. Muestra que RSASIG se utiliza en la política para autenticar a los pares del túnel IPsec.
El propósito de este tutorial es explorar "LibreSwan", que proporciona la implementación del protocolo IPsec. Está disponible en las distribuciones de RedHat, sin embargo, se puede compilar fácilmente para otra plataforma como Ubuntu/Debian. En este artículo, la primera herramienta LibreSwan se crea desde el origen y luego se configuran dos VPN usando claves precompartidas y RSA entre los dispositivos de puerta de enlace.