GNU/Linux >> Tutoriales Linux >  >> Panels >> OpenVPN

Cómo configurar un servidor VPN IKEv2 con StrongSwan en Ubuntu 22.04

Introducción

Una red privada virtual, o VPN, le permite cifrar de forma segura el tráfico a medida que viaja a través de redes que no son de confianza, como las de una cafetería, una conferencia o un aeropuerto.

Internet Key Exchange v2, o IKEv2, es un protocolo que permite la tunelización IPSec directa entre el servidor y el cliente. En las implementaciones de VPN IKEv2, IPSec proporciona cifrado para el tráfico de red. IKEv2 es compatible de forma nativa con algunas plataformas (OS X 10.11+, iOS 9.1+ y Windows 10) sin necesidad de aplicaciones adicionales y maneja los contratiempos de los clientes sin problemas.

En este tutorial, configurará un servidor VPN IKEv2 usando StrongSwan en un servidor Ubuntu 22.04. Luego aprenderá a conectarse con clientes de Windows, macOS, Ubuntu, iOS y Android.

Requisitos

Para completar este tutorial, necesitará:

  • Un servidor Ubuntu 22.04 configurado siguiendo la guía de configuración inicial del servidor Ubuntu 22.04, incluido un sudo usuario no root y un cortafuegos.

Paso 1:Instalación de StrongSwan

Primero, instalará StrongSwan, un demonio IPSec de código abierto que configurará como su servidor VPN. También instalará el componente de infraestructura de clave pública (PKI) para que pueda crear una Autoridad de certificación (CA) para proporcionar credenciales para su infraestructura.

Comience por actualizar la memoria caché del paquete local:

  1. sudo apt update

Luego instale el software escribiendo:

  1. sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins

Los libcharon-extauth-plugins adicionales El paquete se utiliza para garantizar que varios clientes puedan autenticarse en su servidor utilizando un nombre de usuario y una frase de contraseña compartidos. Los libstrongswan-extra-plugins El paquete se incluye para que Strongswan admita suites de cifrado de curva elíptica que usan Curve25519 suite de criptografía.

Ahora que todo está instalado, continúe con la creación de sus certificados.

Paso 2:crear una autoridad de certificación

Un servidor IKEv2 requiere un certificado para identificarse ante los clientes. Para ayudar a crear el certificado requerido, strongswan-pki el paquete viene con una utilidad llamada pki para generar una autoridad certificadora y certificados de servidor.

Para comenzar, cree algunos directorios para almacenar todos los activos en los que trabajará. La estructura de directorios coincide con algunos de los directorios en /etc/ipsec.d , donde eventualmente moverá todos los elementos que cree:

  1. mkdir -p ~/pki/{cacerts,certs,private}

Luego bloquee los permisos para que otros usuarios no puedan ver nuestros archivos privados:

  1. chmod 700 ~/pki

Ahora que tiene una estructura de directorios para almacenar todo, puede generar una clave raíz. Esta será una clave RSA de 4096 bits que se usará para firmar su certificado de autoridad certificadora raíz.

Ejecute estos comandos para generar la clave:

  1. pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

A continuación, puede continuar con la creación de su entidad emisora ​​de certificados raíz, utilizando la clave que acaba de generar para firmar el certificado raíz:

  1. pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
  2. --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

El --lifetime 3650 bandera se utiliza para garantizar que el certificado raíz de la autoridad de certificación será válido durante 10 años. El certificado raíz de una autoridad no suele cambiar, ya que tendría que redistribuirse a todos los servidores y clientes que dependen de él, por lo que 10 años es un valor de caducidad predeterminado seguro.

Puede cambiar el nombre distinguido (DN) valor a otra cosa si lo desea. El nombre común (campo CN) aquí es solo el indicador, por lo que no tiene que coincidir con nada en su infraestructura.

Ahora que tiene su autoridad de certificación raíz en funcionamiento, puede crear un certificado que usará el servidor VPN.

Paso 3:generar un certificado para el servidor VPN

Ahora creará un certificado y una clave para el servidor VPN. Este certificado permitirá al cliente verificar la autenticidad del servidor usando el certificado CA que acabamos de generar.

Primero, cree una clave privada para el servidor VPN con el siguiente comando:

  1. pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

Ahora, cree y firme el certificado del servidor VPN con la clave de la autoridad de certificación que creó en el paso anterior. Ejecute el siguiente comando, pero cambie el Nombre común (CN) y el campo Nombre alternativo del sujeto (SAN) al nombre DNS o la dirección IP de su servidor VPN:

  1. pki --pub --in ~/pki/private/server-key.pem --type rsa \
  2. | pki --issue --lifetime 1825 \
  3. --cacert ~/pki/cacerts/ca-cert.pem \
  4. --cakey ~/pki/private/ca-key.pem \
  5. --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
  6. --flag serverAuth --flag ikeIntermediate --outform pem \
  7. > ~/pki/certs/server-cert.pem

Nota :si está utilizando una dirección IP en lugar de un nombre DNS, deberá especificar varios --san entradas. La línea en el bloque de comando anterior donde especifica el nombre distinguido (--dn ... ) deberá modificarse con la entrada adicional como la siguiente línea extraída:

--dn "CN=IP address" --san @IP_address --san IP_address \

El motivo de este --san @IP_address entrada es que algunos clientes verificarán si el certificado TLS tiene una entrada de DNS y una entrada de dirección IP para un servidor cuando verifiquen su identidad.

--flag serverAuth La opción se usa para indicar que el certificado se usará explícitamente para la autenticación del servidor, antes de que se establezca el túnel cifrado. --flag ikeIntermediate La opción se usa para admitir clientes macOS más antiguos.

Ahora que ha generado todos los archivos TLS/SSL que necesita StrongSwan, puede mover los archivos a su lugar en /etc/ipsec.d directorio escribiendo:

  1. sudo cp -r ~/pki/* /etc/ipsec.d/

En este paso, ha creado un par de certificados que se utilizará para proteger las comunicaciones entre el cliente y el servidor. También firmó los certificados con la clave de CA, por lo que el cliente podrá verificar la autenticidad del servidor VPN utilizando el certificado de CA. Con todos estos certificados listos, está listo para continuar con la configuración de SrongSwan.

Paso 4:Configuración de StrongSwan

StrongSwan tiene un archivo de configuración predeterminado con algunos ejemplos, pero tendremos que hacer la mayor parte de la configuración nosotros mismos. Hagamos una copia de seguridad del archivo como referencia antes de empezar desde cero:

  1. sudo mv /etc/ipsec.conf{,.original}

Cree y abra un nuevo archivo de configuración en blanco con su editor de texto preferido. Aquí, usarás nano :

  1. sudo nano /etc/ipsec.conf

Nota :A medida que avanza en esta sección para configurar la parte del servidor de su VPN, encontrará configuraciones que se refieren a izquierda y correcto lados de una conexión. Cuando se trabaja con VPN IPSec, la izquierda lado por convención se refiere al sistema local que está configurando, en este caso el servidor. Las directivas del lado derecho en esta configuración se referirán a clientes remotos, como teléfonos y otras computadoras.

Cuando pase a configurar clientes más adelante en este tutorial, los archivos de configuración de clientes se referirán a sí mismos usando varios izquierda. directivas, y se hará referencia al servidor usando right terminología secundaria.

Primero, le diremos a StrongSwan que registre los estados de los demonios para la depuración y permita conexiones duplicadas. Agregue estas líneas al archivo:

/etc/ipsec.conf
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

Luego, crearemos una sección de configuración para nuestra VPN. También le indicaremos a StrongSwan que cree túneles VPN IKEv2 y que cargue automáticamente esta sección de configuración cuando se inicie. Agregue las siguientes líneas al archivo:

/etc/ipsec.conf
. . .
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

También configuraremos la detección de pares inactivos para borrar cualquier conexión "colgante" en caso de que el cliente se desconecte inesperadamente. Añade estas líneas:

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

A continuación, configuraremos los parámetros IPSec del lado "izquierdo" del servidor. Cada uno de los siguientes parámetros garantiza que el servidor esté configurado para aceptar conexiones de clientes y para identificarse correctamente. Agregará cada una de estas configuraciones a /etc/ipsec.conf archivo una vez que esté familiarizado con lo que son y por qué se usan:

  • left=%any El %any El valor asegura que el servidor utilizará la interfaz de red donde recibe las conexiones entrantes para la comunicación posterior con los clientes. Por ejemplo, si está conectando un cliente a través de una red privada, el servidor utilizará la dirección IP privada donde recibe el tráfico para el resto de la conexión.
  • leftid=@server_domain_or_IP Esta opción controla el nombre que el servidor presenta a los clientes. Cuando se combina con la siguiente opción leftcert , el leftid La opción garantiza que el nombre configurado del servidor y el nombre distinguido (DN) que se encuentra en el certificado público coincidan.
  • leftcert=server-cert.pem Esta opción es la ruta al certificado público para el servidor que configuró en el Paso 3. Sin ella, el servidor no podrá autenticarse con los clientes ni finalizar la negociación de la configuración de IKEv2.
  • leftsendcert=always El always El valor garantiza que cualquier cliente que se conecte al servidor siempre recibirá una copia del certificado público del servidor como parte de la configuración de la conexión inicial.
  • leftsubnet=0.0.0.0/0 La última opción del lado "izquierdo" que agregará informa a los clientes sobre las subredes a las que se puede acceder detrás del servidor. En este caso, 0.0.0.0/0 se utiliza para representar el conjunto completo de direcciones IPv4, lo que significa que el servidor les indicará a los clientes que envíen todo su tráfico a través de la VPN de manera predeterminada.

Ahora que está familiarizado con cada una de las opciones relevantes del lado "izquierdo", agréguelas todas al archivo de esta manera:

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

Nota :Al configurar el ID del servidor (leftid ), solo incluye el @ carácter si su servidor VPN será identificado por un nombre de dominio:

/etc/ipsec.conf
    . . .    leftid=@vpn.example.com
    . . .

Si el servidor será identificado por su dirección IP, simplemente ingrese la dirección IP en:

/etc/ipsec.conf
    . . .
    leftid=your_server_ip
    . . .

A continuación, podemos configurar los parámetros IPSec del lado "derecho" del cliente. Cada uno de los siguientes parámetros le dice al servidor cómo aceptar conexiones de los clientes, cómo los clientes deben autenticarse en el servidor y los rangos de direcciones IP privadas y los servidores DNS que usarán los clientes. Agregue cada una de estas configuraciones a /etc/ipsec.conf archivo una vez que esté familiarizado con lo que son y por qué se usan:

  • right=%any El %any opción para el right lado de la conexión le indica al servidor que acepte conexiones entrantes de cualquier cliente remoto.
  • rightid=%any Esta opción garantiza que el servidor no rechace conexiones de clientes que proporcionen una identidad antes de que se establezca el túnel cifrado.
  • rightauth=eap-mschapv2 Esta opción configura el método de autenticación que los clientes utilizarán para autenticarse en el servidor. eap-mschapv2 se usa aquí para una amplia compatibilidad para admitir clientes como dispositivos Windows, macOS y Android.
  • rightsourceip=10.10.10.0/24 Esta opción indica al servidor que asigne direcciones IP privadas a los clientes del 10.10.10.0/24 especificado. conjunto de direcciones IP.
  • rightdns=8.8.8.8,8.8.4.4 Estas direcciones IP son los solucionadores de DNS públicos de Google. Se pueden cambiar para usar otros resolutores públicos, los resolutores del servidor VPN o cualquier otro resolutor al que puedan acceder los clientes.
  • rightsendcert=never Esta opción indica al servidor que los clientes no necesitan enviar un certificado para autenticarse.

Ahora que está familiarizado con las opciones del lado "derecho" requeridas para la VPN, agregue las siguientes líneas a /etc/ipsec.conf :

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

Ahora le diremos a StrongSwan que le pida al cliente las credenciales de usuario cuando se conecte:

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    eap_identity=%identity

Finalmente, agregue las siguientes líneas para admitir clientes Linux, Windows, macOS, iOS y Android. Estas líneas especifican los diversos algoritmos de intercambio de claves, hashing, autenticación y cifrado (comúnmente denominados Suites de cifrado ) que StrongSwan permitirá que diferentes clientes utilicen:

/etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Cada suite de cifrado admitida está delimitada de las demás por una coma. Por ejemplo chacha20poly1305-sha512-curve25519-prfsha512 es una suite y aes256gcm16-sha384-prfsha384-ecp384 es otro. Los conjuntos de cifrado que se enumeran aquí se seleccionan para garantizar la más amplia gama de compatibilidad entre los clientes de Windows, macOS, iOS, Android y Linux.

El archivo de configuración completo debería verse así:

/etc/ipsec.conf
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server_domain_or_IP
    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,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Guarde y cierre el archivo una vez que haya verificado que ha agregado cada línea correctamente. Si usaste nano , hazlo presionando CTRL + X , Y , luego ENTER .

Ahora que ha configurado los parámetros de VPN, puede pasar a crear una cuenta para que los usuarios puedan conectarse al servidor.

Paso 5:Configuración de la autenticación VPN

Su servidor VPN ahora está configurado para aceptar conexiones de clientes, pero aún no hay credenciales configuradas. Deberá configurar un par de cosas en un archivo de configuración especial llamado ipsec.secrets :

  • Debe decirle a StrongSwan dónde encontrar la clave privada para nuestro certificado de servidor, para que el servidor pueda autenticarse ante los clientes.
  • También debe configurar una lista de usuarios que podrán conectarse a la VPN.

Abramos el archivo de secretos para editarlo:

  1. sudo nano /etc/ipsec.secrets

Primero, dígale a StrongSwan dónde encontrar la clave privada y cómo analizarla.

/etc/ipsec.secrets
: RSA "server-key.pem"

Asegúrese de que la línea comience con : carácter y que haya un espacio después de él para que toda la línea diga : RSA "server-key.pem" .

Luego, definirá las credenciales de usuario. Puede inventar cualquier combinación de nombre de usuario o contraseña que desee:

/etc/ipsec.secrets
your_username : EAP "your_password"

Guarde y cierre el archivo. Ahora que ha terminado de trabajar con los parámetros de VPN, reinicie el servicio de VPN para que se aplique nuestra configuración:

  1. sudo systemctl restart strongswan-starter

Ahora que el servidor VPN se ha configurado por completo con las opciones del servidor y las credenciales de usuario, es hora de pasar a configurar la parte más importante:el cortafuegos.

Paso 6:configurar el firewall y el reenvío de IP del kernel

Con la configuración de StrongSwan completa, debe configurar el firewall para permitir el tráfico de VPN y reenviarlo.

Si siguió el tutorial de configuración inicial del servidor de requisitos previos, debe tener habilitado un firewall UFW. Si aún no tiene configurado UFW, debe comenzar agregando una regla para permitir conexiones SSH a través del firewall para que su sesión actual no se cierre cuando habilite UFW:

  1. sudo ufw allow OpenSSH

Luego habilite el firewall escribiendo:

  1. sudo ufw enable

Luego, agregue una regla para permitir el tráfico UDP a los puertos IPSec estándar, 500 y 4500 :

  1. sudo ufw allow 500,4500/udp

A continuación, abrirá uno de los archivos de configuración de UFW para agregar algunas políticas de bajo nivel para enrutar y reenviar paquetes IPSec. Sin embargo, antes de hacer esto, debe encontrar qué interfaz de red en nuestro servidor se usa para el acceso a Internet. Encuentre esta interfaz consultando el dispositivo asociado con la ruta predeterminada:

  1. ip route show default

Su interfaz pública debe seguir la palabra "dev". Por ejemplo, este resultado muestra la interfaz llamada eth0 , que se destaca en el siguiente ejemplo:

Outputdefault via your_server_ip dev eth0 proto static

Cuando tenga su interfaz de red pública, abra /etc/ufw/before.rules archivo en su editor de texto. Las reglas de este archivo se agregan al cortafuegos antes que el resto de las reglas habituales de entrada y salida. Se utilizan para configurar la traducción de direcciones de red (NAT) para que el servidor pueda enrutar correctamente las conexiones hacia y desde los clientes e Internet.

  1. sudo nano /etc/ufw/before.rules

Cerca de la parte superior del archivo (antes del *filter línea), agregue el siguiente bloque de configuración. Cambiar cada instancia de eth0 en la configuración anterior para que coincida con el nombre de la interfaz que encontró con ip route . El *nat Las líneas crean reglas para que el cortafuegos pueda enrutar y manipular correctamente el tráfico entre los clientes VPN e Internet. El *mangle line ajusta el tamaño máximo del segmento de paquete para evitar posibles problemas con ciertos clientes VPN:

/etc/ufw/before.rules
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .

A continuación, después del *filter y líneas de definición de cadena, agregue un bloque más de configuración:

/etc/ufw/before.rules
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Estas líneas le indican al cortafuegos que reenvíe el tráfico ESP (Encapsulating Security Payload) para que los clientes VPN puedan conectarse. ESP proporciona seguridad adicional para nuestros paquetes VPN cuando atraviesan redes que no son de confianza.

Cuando haya terminado, abra y cierre el archivo una vez que haya verificado que ha agregado cada línea correctamente. Si usaste nano , hazlo presionando CTRL + X , Y , luego ENTER .

Antes de reiniciar el firewall, también debe cambiar algunos parámetros del núcleo de la red para permitir el enrutamiento de una interfaz a otra. El archivo que controla estas configuraciones se llama /etc/ufw/sysctl.conf . Deberá configurar algunas cosas en el archivo.

Primero se debe activar el reenvío de paquetes IPv4 para que el tráfico pueda moverse entre la VPN y las interfaces de red públicas en el servidor. A continuación, deshabilitará el descubrimiento de Path MTU para evitar problemas de fragmentación de paquetes. Finalmente, no aceptaremos redireccionamientos ICMP ni enviaremos redireccionamientos ICMP para evitar ataques de intermediarios.

Abra el archivo de configuración de parámetros del kernel de UFW usando nano o su editor de texto preferido:

  1. sudo nano /etc/ufw/sysctl.conf

Ahora agregue lo siguiente net/ipv4/ip_forward=1 configuración al final del archivo para habilitar el reenvío de paquetes entre interfaces:

/etc/ufw/sysctl.conf
. . .
net/ipv4/ip_forward=1

A continuación, bloquee el envío y la recepción de paquetes de redirección ICMP agregando las siguientes líneas al final del archivo:

/etc/ufw/sysctl.conf
. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0

Finalmente, desactive el descubrimiento de Path MTU agregando esta línea al final del archivo:

/etc/ufw/sysctl.conf
. . .
net/ipv4/ip_no_pmtu_disc=1

Guarde el archivo cuando haya terminado. Ahora puede habilitar todos sus cambios al deshabilitar y volver a habilitar el firewall, ya que UFW aplica esta configuración cada vez que se reinicia:

  1. sudo ufw disable
  2. sudo ufw enable

Se le pedirá que confirme el proceso. Escriba Y para habilitar UFW nuevamente con la nueva configuración.

Paso 7:Probar la conexión VPN en Windows, macOS, Ubuntu, iOS y Android

Ahora que tiene todo configurado, es hora de probarlo. Primero, deberá copiar el certificado de CA que creó e instalarlo en los dispositivos de su cliente que se conectarán a la VPN. La forma más sencilla de hacerlo es iniciar sesión en su servidor y generar el contenido del archivo del certificado:

  1. cat /etc/ipsec.d/cacerts/ca-cert.pem

Verá un resultado similar a este:

Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE

. . .

H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----

Copie este resultado en su computadora, incluido el -----BEGIN CERTIFICATE----- y -----END CERTIFICATE----- y guárdelo en un archivo con un nombre reconocible, como ca-cert.pem . Asegúrese de que el archivo que cree tenga el .pem extensión.

Alternativamente, use SFTP para transferir el archivo a su computadora.

Una vez que tenga el ca-cert.pem archivo descargado a su computadora, puede configurar la conexión a la VPN.

Conectando desde Windows

Hay varias formas de importar el certificado raíz y configurar Windows para conectarse a una VPN. El primer método utiliza herramientas gráficas para cada paso. El segundo método utiliza comandos de PowerShell, que se pueden programar y modificar para adaptarse a su configuración de VPN.

Nota: Estas instrucciones se han probado en instalaciones de Windows 10 que ejecutan las versiones 1903 y 1909.

Configurar Windows con Herramientas Gráficas

Primero, importe el certificado raíz siguiendo estos pasos:

  1. Presione WINDOWS+R para abrir Ejecutar e ingrese mmc.exe para iniciar la Consola de administración de Windows.

  2. Desde el Archivo menú, vaya a Agregar o quitar complemento , seleccione Certificados de la lista de complementos disponibles y haga clic en Agregar .

  3. Queremos que la VPN funcione con cualquier usuario, así que seleccione Cuenta de computadora y haga clic en Siguiente .

  4. Estamos configurando cosas en la computadora local, así que seleccione Computadora local y luego haz clic en Finalizar .

  5. Bajo la raíz de la consola expanda el nodo Certificados (equipo local) entrada, expanda Autoridades de certificación raíz de confianza y, a continuación, seleccione Certificados entrada:

  6. Desde la Acción menú, seleccione Todas las tareas y haz clic en Importar para mostrar el asistente de importación de certificados. Haga clic en Siguiente para pasar de la introducción.

  7. En el Archivo para importar pantalla, presione el botón Examinar , asegúrese de cambiar el tipo de archivo de "Certificado X.509 (.cer; .crt)” a “Todos los archivos (. )”, y seleccione el ca-cert.pem archivo que ha guardado. Luego haga clic en Siguiente .

  8. Asegúrese de que el almacén de certificados está establecido en Autoridades de certificación raíz de confianza y haga clic en Siguiente .

  9. Haga clic en Finalizar para importar el certificado.

Luego configure la VPN con estos pasos:

  1. Ejecutar Panel de control , luego navegue al Centro de redes y recursos compartidos .
  2. Haga clic en Configurar una nueva conexión o red y luego seleccione Conectarse a un lugar de trabajo .
  3. Seleccione Usar mi conexión a Internet (VPN) .
  4. Ingrese los detalles del servidor VPN. Introduzca el nombre de dominio o la dirección IP del servidor en la dirección de Internet campo, luego complete Nombre de destino con algo que describa su conexión VPN. Luego haz clic en Listo .

Configuración de Windows usando PowerShell

Para importar el certificado de CA raíz mediante PowerShell, primero abra un indicador de PowerShell con privilegios de administrador. Para ello, haga clic con el botón derecho en el icono del menú Inicio y seleccione Windows PowerShell (Admin) . También puede abrir un símbolo del sistema como administrador y escribir powershell .

A continuación, importaremos el certificado utilizando Import-Certificate Cmdlet de PowerShell. En el siguiente comando, el primer -CertStoreLocation El argumento garantizará que el certificado se importe a las autoridades de certificación raíz de confianza de la computadora. store para que todos los programas y usuarios puedan verificar el certificado del servidor VPN. El -FilePath El argumento debe apuntar a la ubicación donde copió el certificado. En el siguiente ejemplo, la ruta es C:\Users\sammy\Documents\ca-cert.pem . Asegúrese de editar el comando para que coincida con la ubicación que utilizó.

  1. Import-Certificate `
  2. -CertStoreLocation cert:\LocalMachine\Root\ `
  3. -FilePath C:\users\sammy\Documents\ca-cert.pem

El comando generará algo como lo siguiente:

Output   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root

Thumbprint                                Subject
----------                                -------
DB00813B4087E9367861E8463A60CEA0ADC5F002  CN=VPN root CA

Ahora, para configurar la VPN usando PowerShell, ejecute el siguiente comando. Sustituya el nombre DNS o la dirección IP de su servidor en -ServerAddress línea. Las diversas banderas garantizarán que Windows esté correctamente configurado con los parámetros de seguridad apropiados que coincidan con las opciones que configuró en /etc/ipsec.conf .

  1. Add-VpnConnection -Name "VPN Connection" `
  2. -ServerAddress "server_domain_or_IP" `
  3. -TunnelType "IKEv2" `
  4. -AuthenticationMethod "EAP" `
  5. -EncryptionLevel "Maximum" `
  6. -RememberCredential `

Si el comando tiene éxito, no habrá ninguna salida. Para confirmar que la VPN está configurada correctamente, use Get-VPNConnection cmdlet:

  1. Get-VpnConnection -Name "VPN Connection"

Recibirá un resultado como el siguiente:

OutputName                  : VPN Connection
ServerAddress         : your_server_ip
AllUserConnection     : False
Guid                  : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType            : Ikev2
AuthenticationMethod  : {Eap}
EncryptionLevel       : Maximum
L2tpIPsecAuth         :
UseWinlogonCredential : False
EapConfigXmlStream    : #document
ConnectionStatus      : Disconnected
RememberCredential    : True
SplitTunneling        : False
DnsSuffix             :
IdleDisconnectSeconds : 0

De forma predeterminada, Windows elige algoritmos más antiguos y lentos. Ejecute Set-VpnConnectionIPsecConfiguration cmdlet to upgrade the encryption parameters that Windows will use for the IKEv2 key exchange, and to encrypt packets:

  1. Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
  2. -AuthenticationTransformConstants GCMAES256 `
  3. -CipherTransformConstants GCMAES256 `
  4. -DHGroup ECP384 `
  5. -IntegrityCheckMethod SHA384 `
  6. -PfsGroup ECP384 `
  7. -EncryptionMethod GCMAES256

Nota :If you would like to delete the VPN connection and reconfigure it with different options, you can run the Remove-VpnConnection cmdlet.

  1. Remove-VpnConnection -Name "VPN Connection" -Force

The -Force flag will skip prompting you to confirm the removal. You must be disconnected from the VPN if you attempt to remove it using this command.

Connecting to the VPN

Once you have the certificate imported and the VPN configured using either method, your new VPN connection will be visible under the list of networks. Select the VPN and click Connect . You’ll be prompted for your username and password. Type them in, click OK , and you’ll be connected.

Connecting from macOS

Follow these steps to import the certificate:

  1. Double-click the certificate file. Keychain Access will pop up with a dialog that says “Keychain Access is trying to modify the system keychain. Enter your password to allow this.”
  2. Enter your password, then click on Modify Keychain
  3. Double-click the newly imported VPN certificate. This brings up a small properties window where you can specify the trust levels. Set IP Security (IPSec) to Always Trust and you’ll be prompted for your password again. This setting saves automatically after entering the password.

Now that the certificate is imported and trusted, configure the VPN connection with these steps:

  1. Go to System Preferences and choose Network .
  2. Click on the small “plus” button on the lower-left of the list of networks.
  3. In the popup that appears, set Interface to VPN , set the VPN Type to IKEv2 , and give the connection a name.
  4. In the Server and Remote ID field, enter the server’s domain name or IP address. Leave the Local ID blank.
  5. Click on Authentication Settings , select Username , and enter your username and password you configured for your VPN user. Luego haga clic en Aceptar .

Finally, click on Connect to connect to the VPN. You should now be connected to the VPN.

Connecting from Ubuntu

To connect from an Ubuntu machine, you can set up and manage StrongSwan as a service or use a one-off command every time you wish to connect. Instructions are provided for both.

Managing StrongSwan as a Service

To manage StrongSwan as a service, you will need to perform the following configuration steps.

First, update your local package cache using apt

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. sudo apt install strongswan libcharon-extra-plugins

Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem file into place:

  1. sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

To ensure the VPN only runs on demand, use systemctl to disable StrongSwan from running automatically:

  1. sudo systemctl disable --now strongswan-starter

Next configure the username and password that you will use to authenticate to the VPN server. Edit /etc/ipsec.secrets using nano or your preferred editor:

  1. sudo nano /etc/ipsec.secrets

Add the following line, editing the highlighted username and password values to match the ones that you configured on the server:

/etc/ipsec.secrets
your_username : EAP "your_password"

Finally, edit the /etc/ipsec.conf file to configure your client to match the server’s configuration:

/etc/ipsec.conf
config setup

conn ikev2-rw
    right=server_domain_or_IP
    # This should match the `leftid` value on your server's configuration
    rightid=server_domain_or_IP
    rightsubnet=0.0.0.0/0
    rightauth=pubkey
    leftsourceip=%config
    leftid=username
    leftauth=eap-mschapv2
    eap_identity=%identity
    auto=start

To connect to the VPN, type:

  1. sudo systemctl start strongswan-starter

To disconnect again, type:

  1. sudo systemctl stop strongswan-starter

Using the charon-cmd Client for One-Off Connections

To manage StrongSwan as a service, you will need to perform the following configuration steps.

First, update your local package cache using apt

  1. sudo apt update

Next, install StrongSwan and the required plugins for authentication:

  1. sudo apt install strongswan libcharon-extra-plugins

Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem file into place:

  1. sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

At this point you can connect to the VPN server with charon-cmd using the server’s CA certificate, the VPN server’s IP address, and the username you configured.

Run the following command whenever you want to connect to the VPN:

  1. sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username

When prompted, provide the VPN user’s password and you will be connected to the VPN. To disconnect, press CTRL+C in the terminal and wait for the connection to close.

Connecting from iOS

To configure the VPN connection on an iOS device, follow these steps:

  1. Send yourself an email with the root certificate attached.
  2. Open the email on your iOS device and tap on the attached certificate file, then tap Install and enter your passcode. Once it installs, tap Done .
  3. Go to Settings , General , VPN and tap Add VPN Configuration . This will bring up the VPN connection configuration screen.
  4. Tap on Type and select IKEv2 .
  5. In the Description field, enter a short name for the VPN connection. This could be anything you like.
  6. In the Server and Remote ID field, enter the server’s domain name or IP address. The Local ID field can be left blank.
  7. Enter your username and password in the Authentication section, then tap Done .
  8. Select the VPN connection that you just created, tap the switch on the top of the page, and you’ll be connected.

Connecting from Android

Follow these steps to import the certificate:

  1. Send yourself an email with the CA certificate attached. Save the CA certificate to your downloads folder.
  2. Download the StrongSwan VPN client from the Play Store.
  3. Open the app. Tap the “more” icon (. . . ) in the upper-right corner and select CA certificates .
  4. Tap the “more” icon (. . . ) in the upper-right corner again. Select Import certificate .
  5. Browse to the CA certificate file in your downloads folder and select it to import it into the app.

Now that the certificate is imported into the StrongSwan app, you can configure the VPN connection with these steps:

  1. In the app, tap ADD VPN PROFILE at the top.
  2. Fill out the Server with your VPN server’s domain name or public IP address.
  3. Make sure IKEv2 EAP (Username/Password) is selected as the VPN Type.
  4. Fill out the Username and Password with the credentials you defined on the server.
  5. Deselect Select automatically in the CA certificate section and click Select CA certificate .
  6. Tap the IMPORTED tab at the top of the screen and choose the CA you imported (it will be named “VPN root CA” if you didn’t change the “DN” earlier).
  7. If you’d like, fill out Profile name (optional) with a more descriptive name.

When you wish to connect to the VPN, click on the profile you just created in the StrongSwan application.

Troubleshooting Connections

If you are unable to import the certificate, ensure the file has the .pem extension, and not .pem.txt .

If you’re unable to connect to the VPN, check the server name or IP address you used. The server’s domain name or IP address must match what you’ve configured as the common name (CN) while creating the certificate. If they don’t match, the VPN connection won’t work. For example, if you set up a certificate with the CN of vpn.example.com , you must use vpn.example.com when you enter the VPN server details. Double-check the command you used to generate the certificate, and the values you used when creating your VPN connection.

Finally, double-check the VPN configuration to ensure the leftid value is configured with the @ symbol if you’re using a domain name:

/etc/ipsec.conf
    leftid=@vpn.example.com

If you’re using an IP address, ensure that the @ symbol is omitted. Also make sure that when you generated the server-cert.pem file that you included both --san @IP_address and --san IP_address flags.

Conclusión

In this tutorial, you’ve built a VPN server that uses the IKEv2 protocol. You learned about the directives that control the left and right sides of a connection on both server and clients. You also configured a Windows, macOS, iOS, Android, or Linux client to connect to the VPN.

To add or remove users, skip to Step 5 again. Each line in /etc/ipsec.secrets is for one user, so adding or removing users, or changing passwords just requires editing the file.

Now you can be assured that your online activities will remain secure wherever you go and with any device that you use to access the internet.


OpenVPN
  1. Cómo configurar un servidor OpenVPN en Ubuntu 18.04

  2. Cómo configurar WireGuard VPN en Ubuntu (una guía paso a paso)

  3. Cómo establecer y configurar una autoridad de certificación en Ubuntu 22.04

  4. Cómo configurar WireGuard en Ubuntu 22.04

  5. Cómo configurar un servidor TeamSpeak en Ubuntu 16.04

¿Cómo configurar un Pptp Vpn en el propio servidor Ubuntu?

Cómo configurar la sincronización de tiempo con NTP en Ubuntu 18.04

Cómo configurar un servidor Seafile con Nginx en Ubuntu 18.04

Cómo configurar un servidor FTP con ProFTPD en Ubuntu 18.04

Cómo configurar un servidor de correo con Modoboa en Ubuntu 20.04

Cómo instalar y configurar una VPN con OpenVPN en Ubuntu 18.04