Configuración VPN

VPN de Opuntia

Opuntia es compatible con una amplia variedad de tecnologías de VPN. Las principales opciones para Opuntia son los siguientes tipos de Vpn.

  • Wireguard
  • OpenVpn
  • IPsec
  • IPsec/L2TP

Detallaremos cada opción en una sección del presente capítulo del manual de Opuntia.

Wireguard

WireGuard es una solución VPN moderna, sencilla y rápida que utiliza la criptografía más avanzada. Está diseñado para reemplazar a las VPN IPsec, pero es más sencillo de configurar. Y también es más eficaz que OpenVpn. El sitio oficial de WireGuard enumera las siguientes ventajas principales de WireGuard.

  • Sencillo y fácil de usar
  • Criptográficamente sólido
  • Superficie de ataque mínima
  • Alto desempeño

WireGuard también es muy tolerante a los cambios en la red. Por ejemplo, si un dispositivo cliente está conectado a un sistema Opuntia utilizando WireGuard y la dirección IP pública de los dispositivos cliente cambia debido a la itinerancia a una nueva red; el túnel vpn de WireGuard puede ser restablecido en sólo milisegundos. Esto permite un funcionamiento sin problemas en condiciones de red cambiantes.

Por estas razones WireGuard es la solución VPN preferida para Opuntia.

Generar un par de claves

WireGuard requiere un par de claves públicas y privadas. Y todos los dispositivos que se conecten necesitarán conocer la clave pública de la interfaz de WireGuard. Debe haber una clave privada única para cada interfaz de WireGuard. Es posible generar estas claves en otros sistemas y luego utilizarlas en un sistema Opuntia. Pero actualmente no hay una opción integrada para generar un nuevo par de claves desde la GUI Web de Luci. Esta funcionalidad se añadirá en el futuro.

Para generar un nuevo par de claves de WireGuard tendrá que acceder a la CLI de Bash; le sugerimos ver el capítulo Acceso-SSH del manual. Una vez que tenga una consola CLI activa, puede ejecutar los siguientes comandos.

mkdir -p /etc/wireguard
cd /etc/wireguard
wg genkey | tee ./privatekey | wg pubkey > ./publickey

Los dos primeros comandos crean un directorio /etc/wireguard. Sólo la última línea crea efectivamente la clave pública y privada. Las claves resultantes estarán codificadas en Base64. Para el resto de este capítulo utilizaremos las siguientes claves de ejemplo.

privatekey: 4NM0x6/2ndJktcHTfRXnWS3tzlo95QEgPBsen+swjFw=
publickey:  2wGMjbn6FU4+QKk7y1s37LuOfotw5moUR2LlFwXqJQ8=

Interfaz gráfica de usuario web (GUI Web)

Para funcionar, una VPN de WireGuard requiere una interfaz de WireGuard y una configuración de pares para cada dispositivo conectado a la VPN.

Para comenzar a crear una nueva interfaz de WireGuard primero navegue a la página de interfaces de la red.

Menú principal - Red –> Interfaces

Luego, haga clic en el botón «Añadir nueva interfaz».

Screenshot showing the initial WireGuard Interface creation.

Dé nombre su nueva interfaz y seleccione el protocolo WireGuard VPN.

Screenshot showing WireGuard Interface configuraion

A continuación, verá los ajustes de configuración de la interfaz de WireGuard. Inicie la configuración añadiendo la clave privada para esta interfaz de WireGuard. La clave privada sólo se utilizará en la configuración de la interfaz. Para permitir

Nota

WireGuard utilizará un puerto de escucha predeterminado de 51820. Si tiene varias interfaces de WireGuard tendrá que especificar diferentes puertos udp para cada interfaz.

Aunque técnicamente no es necesario, le recomendamos que establezca una dirección IP en la interfaz del WireGuard.

IPsec/L2TP

IPsec/L2TP es una tecnología VPN muy extendida, ya que el soporte de clientes está integrado en la mayoría de los sistemas operativos. Cuenta con una seguridad robusta de IPsec con la adición del protocolo de túnel L2TP. Esto añade complejidad a la ya enriquecida vpn IPsec. Esto permite asignar un nombre de usuario y una contraseña a cada usuario. A veces también se considera una VPN multifactor (nombre de usuario/contraseña y PSK) que puede cumplir los requisitos de configuración en algunos entornos de seguridad remotos.

Actualmente, a partir de la versión 4.8.17 de Opuntia, esta configuración no ha recibido un menú de configuración de la GUI Web. Vamos a describir el método de CLI para configurar este tipo de VPN. Para configurar correctamente IPsec/L2TP necesitará los siguientes elementos.

  • Dirección IP pública
  • Clave precompartida
  • Nombre de usuario para cada usuario
  • Contraseña para cada usuario

Dado que las opciones predeterminadas para IPsec/L2TP es negociar automáticamente la mayoría de las opciones para este tipo de VPN, la configuración total no es tan compleja. Hay cuatro archivos principales que deben ser editados.

El primer archivo que debe ser editado es /etc/ipsec.secrets.
/etc/ipsec.secrets
# /etc/ipsec.secrets - strongSwan IPsec secrets file
203.0.113.1   %any : PSK "3dTamd01m"

Este archivo configura su dirección IP pública y la clave precompartida. En este ejemplo, la dirección 203.0.113.1 es su dirección IP pública a la que se conectarán los clientes. El «%any» permite que cualquier dirección IP se conecte a esta VPN. Se puede utilizar para limitar los clientes que se conectan, pero generalmente se establece en «%any» en la mayoría de las configuraciones de VPN.

La clave precompartida en este ejemplo es una cadena de texto corta 3dTamd01m. Esta cadena puede ser cualquier cadena ASCII válida.

El segundo archivo es el archivo principal de configuración de IPsec /etc/ipsec.conf

/etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration

config setup
     # strictcrlpolicy=yes
     # uniqueids = no

 # Add connections here.
 conn vpnserver
     type=transport
     authby=secret
     rekey=no
     keyingtries=1
     left=203.0.113.1
     leftprotoport=udp/l2tp
     right=%any
     rightprotoport=udp/%any
     auto=add

Aquí puede ver la configuración de la clave precompartida IPsec denominada vpnserver. Este define los parámetros IPsec para la conexión. Las opciones especificadas son authby=secret, left=203.0.113.1, right=%any y ambos puertos de protocolo derecho (right) e izquierdo (left).

La configuración authby le dice al subsistema IPsec que use la clave precompartida que establecimos en el archivo /etc/ipsec.secrets. La configuración izquierda define la dirección IP pública que el sistema está utilizando y esta derecha permite que cualquier cliente se conecte. Las dos opciones de protocolport especifican que sólo el puerto UDP 1701 será encriptado usando IPsec.

Esto termina la configuración de IPsec que necesita configurarse.

Los dos siguientes archivos se ocupan de la configuración de L2TP. El primero es el archivo de configuración /etc/xl2tpd/xl2tpd.conf.

/etc/xl2tpd/xl2tpd.conf
[global]
port = 1701
auth file = /etc/xl2tpd/xl2tp-secrets
listen-addr = 203.0.113.1
access control = no
debug tunnel = no

[lns default]
exclusive = yes
local ip = 192.168.88.1
ip range = 192.168.88.10-192.168.88.200
hidden bit = no
length bit = yes
require chap = yes
refuse pap = yes
name = vpn
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd

Este es el archivo de configuración del servidor L2TP. Aquí se ve la dirección IP pública referenciada en el ajuste global listen-addr. El lns (servidor L2TP) predeterminado especifica la dirección IP local que se asignará al router y a los dispositivos cliente.

En este ejemplo, hemos elegido establecer la dirección IP del router en 192.168.88.1 y permitimos a los clientes utilizar un intervalo de 192.168.88.10 a 192.168.88.200. Si está accediendo a otras redes internas, es posible que tenga que añadir una ruta a esta red desde otros dispositivos.

Otro ajuste a tener en cuenta es la opción ppp debug = yes. Esto hará que se generen registros detallados del sistema cuando los clientes se conecten al servicio vpn.

El archivo de configuración final define los usuarios y las contraseñas que los clientes deben proporcionar para acceder a la VPN.

/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client       server         secret               IP addresses
alice         vpn            47roses            *
bob           vpn            D3adB33f           *

Este archivo tiene el formato estándar de chap-secrets. Aquí tenemos dos usuarios configurados; alice y bob. Vemos que la configuración del servidor es vnp que es el nombre del lns predeterminado establecido en nuestro archivo xl2tpd.conf de ejemplo anteriormente. También vemos las dos contraseñas que han elegido estos usuarios. Esta configuración «*» permite al cliente obtener cualquier dirección IP del grupo que hayamos definido.

Configuración del cortafuegos

Por defecto, Opuntia necesita ser configurado para permitir conexiones L2TP entrantes en la zona del firewall wan. Consulte el capítulo de cortafuegos para más información general.

La regla que necesitamos añadir es una regla de aceptación para la zona de entrada Wan que permite el tráfico de los puertos TCP y UDP 1701.

Navegar a la página de configuración del cortafuegos (firewall).

Menú principal - Red –> Firewall –> Reglas de tráfico

L2TP Firewall ruleset

Una vez instalada esa regla, verá esto en el resumen del conjunto de reglas del cortafuegos.

L2TP Firewall ruleset

Configuración del cliente

MacOS Big Sur

MacOS soporta clientes IPsec/L2TP de forma nativa. En esta sección detallaremos el proceso de configuración de un cliente MacOS para conectarse a nuestro ejemplo anterior de vpn IPsec/L2TP.

MacOS Big Sur Step1

El primer paso es añadir una nueva interfaz en las Preferencias del sistema–>*Red*. Puede crear una nueva interfaz haciendo clic en el signo + de la parte inferior izquierda del menú de la interfaz. Fije el «Tipo de interfaz» a VPN y el «Tipo de VPN» a L2TP sobre IPsec. El «Nombre del Servicio» puede establecerse al nombre preferido para su VPN. En nuestro ejemplo lo fijaremos como L2TP-VPN.

MacOS Big Sur Step2

El siguiente paso es configurar la «Dirección del servidor» básica y el «Nombre de la cuenta» para la VPN. La «Dirección del servidor» será la dirección IPv4 pública que establecimos anteriormente; o en este ejemplo 203.0.113.1. El «Nombre de la cuenta» será alice.

Los dos siguientes elementos de configuración se pueden establecer pulsando el botón «Configuración de la autenticación…» .

MacOS Big Sur Step3

En el cuadro de diálogo «Configuración de la autenticación…» deberá establecer la contraseña del usuario. En este ejemplo, la contraseña de alice es 47roses y se introduce en el campo «Contraseña» de la sección «Autenticación de usuario».

A continuación, establezca la clave precompartida en el campo «Secreto compartido» (Shared Secret) de la sección «Autenticación de máquina» (Machine Authentication). En nuestro ejemplo sería 3dTamd01m. Esto concluye los ajustes mínimos de configuración para una VPN IPsec/L2TP.

Configuración opcional de MacOS Big Sur

MacOS IPsec/L2TP tiene dos opciones de configuración comunes que se describen a continuación.

MacOS Big Sur default route.

Por defecto, MacOS no enruta todo el tráfico a través de la Vpn IPsec/L2TP. Esta es una configuración solicitada con frecuencia. Acceda a la opción de configuración avanzada de vpn. A continuación, en la pestaña Opciones seleccione «Enviar todo el tráfico a través de la conexión VPN».

MacOS Big Sur DNS settings.

Al enrutar todo el tráfico a través de la VPN también es necesario definir sus servidores DNS. Acceda a la opción de configuración avanzada de vpn. A continuación, en la pestaña DNS añada un nuevo servidor DNS haciendo clic en el botón «+» en la parte inferior izquierda del cuadro de diálogo. En este ejemplo establecemos los servidores DNS públicos IPv4 de Google.