El sistema operativo orientado a firewall llamado pfSense ofrece varios protocolos de VPN para establecer servidores de VPN de acceso remoto y también túneles VPN Site-to-Site. Entre ellos, el protocolo L2TP/IPsec es una opción muy popular que permite a los clientes VPN remotos, como computadoras, teléfonos inteligentes y tabletas, conectarse de manera segura a la red local tanto profesional como doméstica. L2TP se encarga de establecer el túnel mientras que el protocolo IPsec se encarga de brindar confidencialidad, autenticación e integridad a todos los datos transmitidos. En este artículo, explicaremos detalladamente cómo configurar el servidor VPN L2TP/IPsec para poder conectarse de forma remota.
¿Cuál es el propósito de un servidor VPN L2TP/IPsec?
Un servidor VPN en pfSense nos permite acceder de forma remota a diferentes subredes configuradas y redireccionar todo el tráfico de Internet a través de él. Gracias a la configuración de un servidor VPN, podemos conectarnos de manera segura a una red insegura, ya que todo el tráfico desde el origen hasta el servidor VPN está cifrado y autenticado.
L2TP (Protocolo de Tunelización de Capa 2) es uno de los protocolos VPN más utilizados, utiliza el protocolo PPP para la conexión de los enlaces y también incluye mecanismos de autenticación PPP como PAP y CHAP. Además, admite el uso de servidores RADIUS para la autenticación de los clientes. Sin embargo, este protocolo VPN no ofrece una encriptación sólida y no garantiza la integridad de los paquetes. Tampoco cifra el tráfico desde el origen hasta el destino.
Para solucionar estas limitaciones, la IETF decidió combinar los protocolos criptográficos de IPsec con L2TP para proporcionar confidencialidad, autenticación e integridad al túnel de L2TP. Por esta razón, encontraremos este protocolo escrito como «L2TP/IPsec» en los sistemas operativos, ya que utiliza ambos protocolos simultáneamente.
Ahora que entendemos cómo funcionan estos dos protocolos VPN, podemos proceder con su configuración. Dado que hay dos protocolos que debemos configurar, L2TP e IPsec, dividiremos claramente la configuración en dos partes.
Ventajas del protocolo L2TP
Este protocolo tiene varias ventajas en términos de seguridad y configuración. Hoy en día, es crucial utilizar cifrados robustos en los servicios para garantizar la seguridad de la información. En este sentido, L2TP utiliza el cifrado AES de 256 bits, considerado uno de los más seguros en el campo de la informática. Es extremadamente difícil de descifrar con la tecnología actual.
Otra ventaja importante es la compatibilidad con diversos sistemas operativos. L2TP es compatible con una amplia gama de dispositivos, tanto en los principales sistemas operativos de computadoras como en teléfonos móviles.
Por último, pero no menos importante, la configuración de L2TP es sencilla, lo que ahorra tiempo y costos a los administradores del sistema. Esto es especialmente beneficioso en servidores de gran tamaño, donde los gastos y el tiempo requeridos aumentan significativamente.
Desventajas del protocolo L2TP
Las desventajas del protocolo L2TP se pueden reducir principalmente a dos aspectos que afectan al rendimiento. Lo más destacado es la necesidad de tener precaución con algunos puertos, ya que algunos de ellos pueden generar bloqueos en los firewalls, lo cual requiere una configuración adicional.
Por otro lado, dependiendo de la configuración establecida, el protocolo L2TP puede ser más lento que otros protocolos, como el IPSec IKEv2. Esto se debe a la posibilidad de que se produzca una doble encapsulación, lo cual afecta al rendimiento. En sistemas de gran tamaño, esto podría tener un impacto aún mayor.
Configuración del protocolo L2TP
Para configurar el protocolo L2TP, en primer lugar, debemos ir a la sección de «VPN / L2TP» y realizar la siguiente configuración:
- Enable L2TP: Habilitado
- Configuration:
- Interface: WAN
- Server Address: 192.168.100.1 (se debe utilizar una subred que no esté en uso y que sirva únicamente como gateway para los clientes)
- Remote Address Range: 192.168.100.128/25 (asigna una subred local a los clientes que se conecten)
- Number of L2TP Users: 10 (este valor puede ser configurado según las necesidades del usuario)
- Secret: 1234clavel2tp (se recomienda establecer una contraseña, aunque algunos clientes no lo requieren. Esto depende de la configuración)
- Authentication Type: CHAP
- Primary/Secondary L2TP DNS Server: se puede agregar un servidor DNS para los clientes
Una vez configurado, se debe hacer clic en «Guardar». A continuación, en la sección de «Users», se debe crear un usuario y una contraseña para acceder al servidor L2TP. Aquí es donde se deben agregar todos los usuarios que se conectarán al servidor VPN, pudiendo dejar en blanco la parte de la dirección IP para que el servidor la asigne de forma dinámica.
Una vez configurado el servidor L2TP, se podrá proceder a configurar el protocolo IPsec.
Configuración del protocolo IPsec
Para configurar el protocolo IPsec junto con el protocolo L2TP, se deben realizar tres acciones. En primer lugar, habilitar los «Mobile Clients», es decir, la VPN de acceso remoto. En segundo lugar, habilitar la fase 1 de IPsec y, finalmente, configurar la fase 2 de IPsec.
Configuración del «Mobile Clients»
Esta etapa es fundamental, ya que al acceder a la sección de «Tunnels» creamos un túnel VPN de sitio a sitio, y nuestro objetivo es configurar una VPN de acceso remoto para que los diferentes clientes puedan conectarse.
En este menú, habilitamos la opción «Enable IPsec Mobile Client Support» y seleccionamos «Local Database», aunque no lo utilizaremos ya que eso es para la autenticación xAuth. Luego, guardamos los cambios.
Una vez que hayamos hecho clic en «Guardar», también debemos hacer clic en «Aplicar cambios» y luego presionamos el botón verde que indica «Crear Fase 1».
Configuración de la Fase 1 de IPsec
En este menú, debemos configurar correctamente el protocolo IPsec para usarlo con L2TP. No todas las configuraciones funcionarán y, además, la configuración de seguridad puede variar dependiendo del cliente VPN utilizado (Android, iOS, Windows…), ya que no todos los sistemas operativos admiten los mejores algoritmos de cifrado para VPN. Por defecto, veremos el siguiente menú donde se ha seleccionado IKEv2, el cual no es compatible con el protocolo L2TP/IPsec que deseamos configurar.
Las opciones que debemos configurar para que funcione correctamente son las siguientes:
- Información general
Versión del intercambio de claves: IKEv1, si seleccionamos cualquier otra versión no funcionará.
Protocolo de Internet: IPv4 o IPv6.
Interfaz: WAN de Internet.
Descripción: agregamos una descripción. - Propuesta de la Fase 1 (Autenticación)
Método de autenticación: Mutual PSK.
Modo de negociación: Aggressive; si seleccionamos «Main» es más seguro, pero menos flexible, y podríamos impedir que el cliente VPN se conecte correctamente. Más adelante, si todo funciona con «Aggressive», podemos probar si también funciona con «Main».
Mi identificador: Nombre distintivo de usuario – [email protected] o el que prefieran. - Propuesta de la Fase 1 (Cifrado)
Algoritmo de cifrado: AES de 128 bits, SHA1, DH Group 2 (1024 bits).
pfSense admite cifrados más fuertes que el que hemos configurado, pero el problema radica en los clientes VPN que se conectarán, los cuales no admiten una mayor seguridad. Para configurarlo con la máxima seguridad, podemos ir probando según las «propuestas recibidas» de IPsec que recibamos del cliente y, de esta manera, elegir la más segura de todas.
El resto de los ajustes de configuración pueden dejarse como están, con las opciones predeterminadas.
Una vez finalizado, hacemos clic en «Guardar» y seremos redirigidos al menú principal, donde tendremos todos los túneles de VPN con IPsec. Debemos seleccionar el único túnel creado y hacer clic en «Mostrar Entradas de Fase 2» y luego en «Crear Fase 2» para continuar.
Configurar la Fase 2 de IPsec
- Información General
Modo: transporte
Descripción: una descripción que elijamos. - Propuesta de Fase 2 (SA / Intercambio de Clave)
Protocolo: ESP
Algoritmos de cifrado: AES de 128 bits
Algoritmos de hash: seleccionamos SHA-1 y SHA-256
Grupo de clave PFS: desactivado, el protocolo no lo admite.
Podemos dejar el resto de opciones de configuración por defecto.
En el menú principal de «IPsec / Tunnels», podremos ver un resumen de toda la configuración realizada.
A continuación, debemos ir a la sección «IPsec / Pre-Shared Keys» y agregar un nuevo identificador.
- Identificador: allusers (debe ser así, sin mayúsculas y sin ningún otro nombre)
- Tipo de clave compartida: PSK
- Clave compartida: la contraseña que elijamos, será compartida con todos los usuarios que se conecten.
Una vez hecho esto, el servidor L2TP/IPsec estará listo para aceptar conexiones. Sin embargo, antes de continuar, debemos crear las reglas correspondientes en el firewall.
Abrir puertos en el firewall de pfSense
Debemos crear una regla en la sección «Firewall / Rules / WAN» con la siguiente información:
- Acción: Pasar
- Interfaz: WAN
- Familia de direcciones: IPv4
- Protocolo: UDP
- Origen: cualquier
- Destino: Dirección WAN en el puerto 1701, que es el puerto de L2TP.
Guardamos y aplicamos los cambios, asegurándonos de que esta regla se cumpla.
Cuando creamos un servidor VPN de tipo L2TP/IPsec, tendremos dos pestañas adicionales en la sección de «Firewall / Reglas». Aquí podemos permitir o denegar el tráfico a ciertas subredes, definir reglas avanzadas, etc. Para la primera conexión y evitar posibles fallos de configuración a nivel del firewall, recomendamos crear una regla de «pasar cualquier cualquier» y aplicar los cambios. Después de establecer la comunicación, si necesitas definir reglas diferentes, entonces puedes editar reglas más específicas para cumplir todos tus requisitos.
Una vez que hayamos configurado correctamente el firewall, debemos configurar el cliente VPN para probar la conexión.
Prueba de conexión
En nuestro caso, hemos establecido una conexión VPN con un smartphone Android, específicamente el Huawei P30, que tiene un cliente L2TP/IPsec PSK. La configuración que debemos realizar es la siguiente (no podemos proporcionar una captura de pantalla porque el sistema operativo lo detecta como contenido privado).
- Nombre: asignamos un nombre a la VPN
- Tipo: L2TP/IPsec PSK
- Servidor: IP o dominio DDNS de tu servidor VPN
- L2TP Secreto: 1234clavel2tp; la clave que establecimos en la sección L2TP y que es compartida con todos los clientes.
- Identificador de IPsec: [email protected]
- Clave compartida inicial de IPsec: 12345678; la clave que establecimos para el identificador «allusers» en la sección IPsec / Pre-Shares Key.
Hacemos clic en guardar y luego en conectar. Al conectarnos, se nos solicitará un nombre de usuario y contraseña. Estas credenciales son las que establecimos en «L2TP Users». Una vez hecho esto, nos conectaremos sin problemas al servidor VPN y tendremos acceso a la administración de pfSense y a cualquier red.
Tal y como has visto, la conexión se ha establecido correctamente y sin problemas.
Recomendaciones y consejos
Según el cliente VPN que utilicen, la configuración del servidor puede variar. Por razones de seguridad, siempre es recomendable utilizar los mejores algoritmos criptográficos. Por lo tanto, les recomendamos que modifiquen las opciones de seguridad y que obliguen a los clientes a elegir siempre las mejores opciones. Sin embargo, es importante revisar los registros de IPsec para ver qué «proposal» están enviando los diferentes clientes al conectarse. Algunos smartphones utilizan un cliente VPN L2TP/IPsec que admite los últimos métodos de cifrado, mientras que otros modelos no lo permiten. Deberán probar y elegir una configuración que sea segura y al mismo tiempo usable.
Otro consejo importante si van a utilizar L2TP/IPsec por primera vez es saber de antemano qué clientes van a conectar, como Android, iOS, Windows, etc., ya que la configuración puede variar dependiendo de cómo esté configurado internamente el cliente. Es posible que no todos puedan coexistir al mismo tiempo, por lo que podrían considerar otros VPN como OpenVPN o IPsec xAuth, entre otros.
Con este mismo tutorial, podrán configurar L2TP/IPsec RSA al modificar el «Mutual PSK» por «Mutual RSA» y al configurar los certificados correspondientes para el servidor y los clientes. Próximamente les mostraremos cómo hacerlo. Esto también puede ser complicado, ya que si crean una Autoridad de Certificación con un certificado de cliente que utiliza los últimos algoritmos, es posible que se produzca un error al intentar establecer la conexión debido a que no serán reconocidos.