Búsqueda de sitios web

VPN Ipsec basada en Libreswan usando claves precompartidas y RSA en Ubuntu


En esta página

  1. Características de Librewan
  2. Inicio del servicio IPsec
  3. Configuración de LibreSwan
    1. Estado de la VPN de clave precompartida

    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.

    Los detalles sobre el protocolo IPsec se proporcionan en nuestro artículo anterior. Sin embargo, a continuación se explica una breve información sobre las dos partes del protocolo IPsec con respecto a LibreSwan.

    Una VPN basada en IPsec consta del protocolo de intercambio de claves de Internet y el protocolo de carga útil de seguridad encapsulada (ESP).

    -->   COMO

    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.
    • También se admiten Xauth y DNSSec.

    Paquetes requeridos 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 configure, simplemente ejecute el comando make que mostrará dos formas de compilar LibreSwan como se muestra a continuación.

    Finalmente, ejecute el comando make all para compilar LibreSwan en la plataforma.

    make all

    Ahora ejecute el comando make install para instalar el programa IPsec.

    Inicio del 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

    Ejecute el comando de estado de ipsec 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\2

    config setup                                                         
                     protostack=netkey
    conn vpn_psk

                      ike=aes256-sha256;modp4096
                      phase2alg=aes256-sha256;modp4096
                     left=192.168.15
    <.145                  leftsubnet=172.16.10.0/24
                      right=192.168.15.245
                     rightsubnet=192.169.50.0/24
                      authby=secret
                      type=tunnel
                      auto=start

    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=netkey
    conn vpn_psk

             ike=aes256-sha256;modp4096
             phase2alg=aes256-sha256;modp4096
             left=192.168.15.245
    <         leftsubnet=192.169.50.0/24
             right=192.168.15.145
             rightsubnet=172.16.10.0/24
             authby=secret
             type=tunnel
             auto=start

    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 la VPN de clave precompartida

    La salida de los comandos ipsec status y setkey -D se muestra 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. Asegúrese también 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 del mismo nivel. La clave privada de RSA se almacena en la base de datos de NSS en archivos /etc/ipsec.d/*.db.

    Después de generar las 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=netkey
    conn vpn_rsa

                      ike=aes256-sha256;modp4096
                      phase2alg=aes256-sha256;modp4096
                     left=192.168.15
    <.145                  leftsubnet=172.16.10.0/24
                      right=192.168.15.245
                     rightsubnet=192.169.50.0/24
                      authby=rsasig
                      leftrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
                     rightrsasigkey=0sAQOs7aPh44Lpp+

                      type=tunnel
                      auto=start

    ipsec.conf (configuration file of right VM)              

    versión 2

    config setup                                                        
                      protostack=netkey
    conn vpn_rsa

             ike=aes256-sha256;modp4096
             phase2alg=aes256-sha256;modp4096
             left=192.168.15.245
    <         leftsubnet=192.169.50.0/24
             right=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 usa 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.