Cómo configurar el servidor VPN OpenConnect

Tener una Red Privada Virtual (VPN) es imprescindible en esta era de tecnología. Las VPN se han vuelto cada vez más cruciales tanto para uso personal como, especialmente, para empresas y corporaciones. Y si aún estás decidiendo en qué solución VPN apostar, ¿por qué no considerar OpenConnect VPN?

OpenConnect VPN es una solución VPN gratuita con rendimiento y características de grado empresarial. Y en este tutorial, aprenderás cómo configurar y conectarte al Servidor OpenConnect VPN (ocserv).

Sigue leyendo y mantén alejadas a las entidades maliciosas de tu red.

Prerrequisitos

Este tutorial incluye demostraciones prácticas. Para seguir, asegúrate de tener lo siguiente en su lugar:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • Un usuario administrativo o un usuario no root con privilegios de sudo/root.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

Instalación del Servidor VPN OpenConnect

El Servidor VPN OpenConnect es un servidor VPN de código abierto basado en SSL para Linux, disponible en la mayoría de las distribuciones de Linux, como Debian, Ubuntu, RHEL/CentOS y Fedora.

El Servidor VPN OpenConnect es compatible con la mayoría de los clientes, desde equipos de escritorio hasta dispositivos móviles (Android e iOS). Asimismo, el Servidor VPN OpenConnect admite múltiples sistemas de autenticación, como Radius, OpenID, Kerberos y Tarjeta Inteligente.

Pero antes de aprovechar estas funciones, primero debes instalar el Servidor VPN OpenConnect, de la siguiente manera:

1. Conéctate a tu servidor SSH y ejecuta el siguiente comando apt update para actualizar y refrescar el índice de paquetes. Este comando asegura que tengas la información de paquetes más reciente.

sudo apt update
Updating the package repository

2. A continuación, ejecuta el siguiente comando apt install para instalar el paquete ocserv.

sudo apt install ocserv -y

Una vez que la instalación esté completa, el nuevo servicio systemd llamado ocserv estará arriba y

Installing the OpenConnect VPN Server

3. Ahora, ejecuta los siguientes comandos systemctl para asegurarte de que el servicio ocserv esté en ejecución.

# Verificando que el servicio ocserv esté habilitado
sudo systemctl is-enabled ocserv
# Verificando que el servicio ocserv esté en ejecución
sudo systemctl status ocserv

Como puedes ver en la salida, el estado del servicio ocserv está habilitado y en ejecución.

Verifying the ocserv service is enabled and running

Generación de Certificados SSL/TLS

Con el servidor VPN OpenConnect instalado, el siguiente paso es asegurarte de que puedas conectar de forma segura al servidor VPN OpenConnect. ¿Cómo? El primer paso es generar certificados SSL/TLS a través de Certbot y LetsEncrypt.

Pero antes de generar certificados, asegúrate de tener una dirección de correo electrónico para registrarte en LetsEncrypt y de que el nombre de dominio esté apuntando a la dirección IP del servidor Debian.

Para generar certificados SSL/TLS:

1. Ejecuta el siguiente comando para instalar certbot en tu servidor Linux.

sudo apt install certbot -y
Installing Certbot

2. A continuación, ejecuta el comando certbot a continuación para generar certificados SSL/TLS. Asegúrate de cambiar la dirección de correo electrónico ([email protected]) y el nombre de dominio (vpn.atadomain.io) según corresponda.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. Por último, ejecuta el siguiente comando para verificar que los certificados SSL/TLS generados existan en el directorio de tu dominio.

ls /etc/letsencrypt/live/vpn.atadomain.io

Si tienes éxito, verás las claves pública (fullchain.pem) y privada (privkey.pem), como se muestra a continuación.

Verifying the SSL/TLS certificates exist

Configuración del servidor VPN OpenConnect

Incluso con los certificados SSL/TSL a tu disposición, permanecerán inactivos a menos que configures el servidor VPN OpenConnect. Modificarás la configuración predeterminada del servidor VPN OpenConnect (/etc/ocserv/ocserv.conf) de la siguiente manera:

  • Cambia el método de autenticación predeterminado.
  • Deshabilita UDP en el servidor VPN OpenConnect.
  • Cambia los certificados SSL/TLS predeterminados.
  • Configuración del nombre de dominio y una red interna o dirección IP para los clientes.

Para configurar el servidor VPN OpenConnect, sigue los pasos a continuación:

1. Primero, ejecuta el comando cp a continuación para hacer una copia de seguridad de la configuración predeterminada del servidor OpenConnect VPN (ocserv.conf) en ocserv.conf.orig almacenado en el directorio /etc/ocserv.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. A continuación, abre la configuración del servidor OpenConnect VPN (/etc/ocserv/ocserv.conf) con tu editor preferido.

3. Cambia el valor del parámetro auth a plain[passwd=/etc/ocserv/ocpasswd], como se muestra a continuación. Esto reemplaza la autenticación predeterminada con el archivo de contraseñas Módulos de Autenticación Enchufables (PAM).

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. Ahora, coloca # al principio del parámetro udp-port para deshabilitar las conexiones UDP predeterminadas.

Usarás OpenConnect VPN en modo solo TCP, lo que puede aumentar la velocidad a través de los parámetros del kernel.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. Reemplaza la ruta del archivo de certificado en el parámetro server-cert con la clave pública y el parámetro server-key con la clave privada.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. Cambia el valor del parámetro try-mtu-discovery a true para habilitar el descubrimiento de MTU. Al hacerlo, se aumenta la velocidad y el rendimiento del Servidor VPN OpenConnect.

try-mtu-discovery = true
Enabling MTU discovery

7. A continuación, introduce el nombre de dominio del Servidor VPN OpenConnect en el parámetro default-domain, y cambia la dirección IP interna predeterminada en el parámetro ipv4-network.

En este ejemplo, los clientes VPN utilizarán la red interna 10.11.0.0/24.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. Comenta los parámetros route predeterminados agregando el carácter # al inicio de cada línea para deshabilitar la puerta de enlace de ruta predeterminada. Una vez terminado, guarda el archivo y sal del editor.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. Ahora, ejecuta los siguientes comandos para restartear el servicio ocserv, aplicar los cambios y listar todos los puertos abiertos (ss) en tu sistema.

# Reiniciar el servicio ocserv y aplicar los cambios
sudo systemctl restart ocserv
# Listar todos los puertos abiertos
ss -tulpn | grep ocserv

Si el Servidor VPN OpenConnect está en ejecución, verás el puerto 443 en estado LISTEN y utilizado por el servicio ocserv, como se muestra a continuación.

Checking the ocserv port

Agregar Usuarios al Servidor VPN OpenConnect

Con el servidor VPN OpenConnect configurado, necesitas una forma de conectarte a él. ¿Cómo? Creando y añadiendo un usuario VPN al servidor VPN OpenConnect.

Para agregar un usuario al servidor VPN OpenConnect, creará un usuario VPN y generará un archivo de contraseña a través de la utilidad ocpasswd de la siguiente manera:

Ejecute el siguiente comando ocpasswd a continuación para crear un nuevo usuario. Cuando se le solicite, ingrese una nueva contraseña para el usuario y repítala. La elección de este tutorial para el nombre de usuario es atauser, pero puedes proporcionar el tuyo propio.

Una vez creado el usuario, también se creará el archivo de contraseña (/etc/ocserv/ocpasswd).

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

Ahora, ejecute el siguiente comando cat para verificar los detalles del archivo de contraseña (/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

Agregando Reglas de Firewall UFW a Puertos Cruciales Abiertos

En un sistema Debian, el firewall predeterminado es IPTables, que requiere un entendimiento profundo de redes para configurar. ¿Por qué no simplificar el proceso? En este tutorial, instalará y configurará UFW como el firewall predeterminado.

1. Ejecute el siguiente comando para instalar UFW mientras acepta automáticamente todas las solicitudes (-y)

sudo apt install ufw -y
Installing UFW

2. Una vez instalado UFW, ejecute los siguientes comandos ufw para abrir puertos cruciales para que el servidor VPN OpenConnect funcione correctamente.

# Agregue el servicio OpenSSH que se ejecuta en el puerto 22.
sudo ufw allow OpenSSH
# Agregue el puerto 80 para renovar certificados LetsEncrypt,
# y el puerto 443 para ser utilizado por el Servidor VPN OpenConnect.
sudo ufw allow 80,443/tcp
# Inicie y habilite UFW.
sudo ufw enable

Cuando se le solicite, ingrese Y y presione Enter para proceder con la operación, como se muestra a continuación.

Adding firewall rules to open ports

3. Por último, ejecute el siguiente comando para verificar el estado de UFW y asegurarse de que UFW esté en ejecución.

sudo ufw status

La salida a continuación muestra el estado activo de UFW y todas las reglas de firewall agregadas.

Checking the UFW status and listing all firewall rules

Habilitar el reenvío de puertos

Con un servidor VPN en funcionamiento, debe dirigir el tráfico desde el mundo exterior a su servidor habilitando el reenvío de puertos. Permitirá el reenvío de puertos en su servidor Debian a través de los parámetros del kernel.

Para habilitar el reenvío de puertos, siga estos pasos:

Ejecute el siguiente comando, que no produce salida en la terminal, pero crea un nuevo archivo llamado /etc/sysctl.d/60-ocserv.conf. Este archivo contiene parámetros del kernel para habilitar el reenvío de puertos en su sistema.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Ahora, ejecute el comando sysctl a continuación para aplicar los nuevos parámetros del kernel y habilitar el reenvío de puertos.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

Configuración de NAT con UFW

Habilitar el reenvío de puertos es solo uno de los primeros pasos a seguir. Esta vez, debe asegurarse de que los clientes de VPN puedan conectarse a Internet o a redes específicas a través del Servidor VPN OpenConnect. ¿Cómo? Configurando NAT a través de UFW.

Para configurar NAT con UFW para el servidor VPN OpenConnect:

1. Ejecute el siguiente comando para verificar la lista de interfaces en su sistema.

ip a

En este ejemplo, la interfaz eth1 será la puerta de enlace NAT para los clientes VPN.

Checking available interfaces

2. A continuación, abra la configuración de UFW (/etc/ufw/before.rules) usando su editor preferido y agregue las siguientes líneas antes de la opción *filter. Estas configuraciones harán NAT a los usuarios de VPN (especificar interfaz de salida) o red interna a la interfaz eth1.

Asegúrese de cambiar la subred (10.11.0.0/24) con las redes de sus clientes de VPN y la interfaz (eth1) con su interfaz de red.

# NAT para el servidor VPN OpenConnect
# con la red del cliente 10.11.0.0/24
# a la interfaz eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. Agregue las siguientes líneas debajo de la sección ok icmp code for FORWARD de las opciones ufw-before-forward, guarde el archivo y salga del editor.

Estas configuraciones habilitan el reenvío (origen y destino) de la red del cliente VPN.

# permitir reenvío de red de cliente VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. Una vez guardado, ejecute el siguiente comando para recargar las reglas de UFW y reiniciar el servicio UFW. Al hacerlo, se asegura que la configuración NAT se aplicará al sistema.

sudo ufw reload
sudo systemctl restart ufw

5. Por último, ejecute el siguiente comando iptables para verificar el estado NAT en UFW ya que el backend de UFW es IPTables.

sudo iptables -t nat -L POSTROUTING

Cuando sea exitoso, recibirá una salida como la que se muestra a continuación.

Conectándose al servidor VPN OpenConnect a través de OpenConnect-GUI

A continuación, siguiendo las instrucciones, deberías tener un servidor VPN OpenConnect completamente funcional en ejecución. Pero después de todo el trabajo duro, ha llegado el momento de la verdad.

El servidor VPN OpenConnect puede estar en funcionamiento, pero solo hay una mejor manera de verificarlo: conectándose al servidor VPN OpenConnect.

Para conectarse al servidor VPN OpenConnect, debes instalar la aplicación OpenConnect-GUI:

1. Abre tu navegador web favorito y visita la página de GitHub de OpenConnect-GUI.

2. A continuación, descarga e instala la aplicación OpenConnect VPN para Windows.

Downloading the OpenConnect VPN application for Windows

3. Abre el cliente VPN OpenConnect-GUI y haz clic en el menú ArchivoPerfilesNuevo perfil (avanzado) (o presiona Ctrl+Shift+N). Aparecerá una pequeña ventana donde podrás completar los detalles del nuevo perfil (paso cuatro).

Creating a new VPN profile

4. Ahora, completa la información del perfil VPN con lo siguiente:

  • Nombre – Proporciona un nombre de conexión (por ejemplo, testvpn).
  • Puerta de enlace – Especifica el nombre de dominio de tu servidor VPN OpenConnect (por ejemplo, https://vpn.atadomain.io).
  • Usuario – El usuario añadido (atauser) al servidor VPN OpenConnect.

Una vez completado, haz clic en Guardar para confirmar la información y crear el perfil VPN.

Configuring the new VPN profile

5. A continuación, configura tu perfil de VPN recién creado (testvpn) como el Servidor y haz clic en Conectar para establecer una conexión con el servidor de VPN OpenConnect.

Connecting to the OpenConnect VPN Server

6. Cuando se te solicite, ingresa la Contraseña de tu usuario de VPN y haz clic en OK.

Authenticating the connection to the OpenConnect VPN Server

7. Una vez conectado, el color del candado cambiará a verde, como se muestra a continuación.

Confirming successful connection to the OpenConnect VPN Server

8. Por último, haz clic en la pestaña Información de VPN para obtener detalles sobre el estado de la conexión. Deberías ver la dirección IP interna que obtuviste del servidor VPN, el servidor DNS y la versión de TLS que estás utilizando.

Checking the VPN connection details

Conclusión

A lo largo de este tutorial, has aprendido a configurar el servidor VPN OpenConnect. Al mismo tiempo, has aprendido a utilizar certificados SSL/TSL y agregar reglas de firewall para establecer una conexión segura con el servidor de VPN OpenConnect.

Con este conocimiento recién adquirido, ¿por qué no integrar el servidor VPN OpenConnect con múltiples sistemas de autenticación, como Radius y OpenID? ¿O agregar una capa de seguridad para la autenticación del cliente a través de autenticación de dos factores?

Source:
https://adamtheautomator.com/openconnect-vpn/