El sistema operativo pfSense nos permite configurar diferentes tipos de VPN, uno de los más seguros es IPsec IKEv2, el cual es un protocolo bastante nuevo que viene incorporado de manera predeterminada en los sistemas operativos Windows, y también en algunas marcas de móviles como Samsung. Lamentablemente, este protocolo no es compatible con muchos clientes de VPN que podemos encontrarnos en otros móviles como Huawei. Hoy en RedesZone os vamos a enseñar cómo configurar un servidor VPN IPsec IKEv2 para que te conectes remotamente a tu red local de forma segura.
IKEv2 es uno de los protocolos de seguridad que se utilizan para establecer conexiones VPN. Es la evolución directa de IKEv1, el cual fue desarrollado por Microsoft y Cisco. En el caso de esta versión 2, forma parte de una suite de protocolos IPsec que se utilizan para labores de protección del tráfico IP entre diferentes dispositivos de red.
¿Para qué sirve un servidor VPN IPsec IKEv2?
El protocolo IPsec es uno de los protocolos VPN más usados y conocidos, se utiliza tanto a nivel doméstico como también a nivel empresarial. Normalmente el protocolo IPsec IKEv2 se utiliza para conectar diferentes sedes, configurando VPN Site-to-Site que nos permitirá interconectar diferentes sedes a través de Internet de forma segura, ya que todo el tráfico irá cifrado, autenticado y se comprobará la integridad de los datos.
En este caso, haremos uso del protocolo IKEv2 que es un protocolo más seguro que IKEv1 para la negociación del cifrado de datos entre los diferentes clientes y el servidor, además, creamos una autenticación basada en PSK para autenticar a los clientes. Dentro del protocolo IPsec IKEv2, tenemos dos métodos de autenticación:
- Mutual PSK: se establece una clave Pre-shared Key asociada a una identidad, una para cada cliente VPN que quieran conectarse. Esta clave estará tanto en el servidor como en todos los clientes VPN.
- Mutual RSA: se debe crear una CA con certificados de servidor y también certificados para los clientes VPN, una vez que se ha establecido la autenticación con estos certificados, tendremos acceso a la VPN sin necesidad de introducir ninguna contrsaeña.
En este tutorial veremos cómo configurar el protocolo IPsec IKEv2 en el sistema operativo pfSense, para que los clientes VPN puedan conectarse a la red empresarial y empezar a compartir datos.
Principales ventajas de IKEv2
IKEv2 supone una gran ventaja con respecto a su antecesor IKEv1. Estas son muy importantes, ya que tocan temas como la seguridad del protocolo, la velocidad y la confiabilidad que podemos tener en este cuando lo estamos utilizando. Lo único que cabe recordar, es que no es compatible con la versión 1, por lo cual un equipo con IKEv2, no podrá establecer comunicación con IKEv1. Por lo demás, la mejora es notoria, por lo cual es recomendable actualizarlo si es posible.
- Velocidad: Las velocidades que ofrece son más rápidas en general que la versión 1, esto es en parte gracias a que admite NAT transversal, lo cual le sirve para evitar firewalls y establecer conexiones mucho más rápido. Por otro lado, admite MOBIKE, el cual es un protocolo basado en la movilidad y el hospedaje múltiple. Lo que esto facilita, es la reconexión rápida e instantánea cuando cambiamos entre dos redes diferentes, ejemplo de ello, Wi-Fi y la red móvil. Por último en este apartado, el ancho de banda necesario será menor con IKEv2, lo cual es posible gracias a que necesita menos asociaciones de seguridad para establecer los túneles VPN.
- Seguridad: En este caso estamos ante una gran mejora también. Usando los principales algoritmos de encriptación como son AES, Camelia y Chacha 2.0, ha logrado superar a la versión 1. Otro aspecto diferenciador, es que en la v2, el encriptado se realiza a ambos extremos de la comunicación, mientras que con IKEv1 no ocurría. Si hablamos de la autenticación también tenemos mejoras, pues puede usarse el protocolo EAP, el cual es muy seguro. Prueba de ello es que se utiliza en gran cantidad de redes corporativas. Esto lo convierte en uno de los protocolos más seguros actualmente.
- Confiabilidad: Todas las comunicaciones se establecen en pares de mensajes de solicitud y respuesta, mientras que con IKEv1, esto era diferente. De nuevo, tenemos que mencionar MOBIKE, lo cual hace que se establezca una conexión mucho más resistente a los cambios.
Aunque, hay que tener en cuenta una serie de aspectos que juegan en contra de este protocolo. Por ejemplo, el primer detalle importante es que es posible que sea bloqueado directamente por un firewall. Además de esto, otro punto clave es que ofrece una menor compatibilidad con aquellos dispositivos más antiguos, al igual que es menos flexible y también dentro de la cuestión de la personalización. Sin olvidar mencionar que se trata de una alternativa de código cerrado.
Con qué dispositivos es compatible
Uno de los primeros puntos que hay que tener en cuenta a la hora de conocer la compatibilidad de nuestro dispositivo con este protocolo es el hecho de como se vaya a implementar la VPN. Por ejemplo, es compatible con Windows, Android, iOS o macOS. Aunque, hay que tener en cuenta que no es el protocolo que mayor compatibilidad ofrezca con clientes de VPN. Por lo tanto, es una característica que hay que poner sobre la mesa a la hora de querer usar esta opción.
En cualquier caso, es cierto que diferentes proveedores de VPN ofrecen IKEv2/IPSec como protocolo ya de serie en sus respectivas aplicaciones cliente. Por lo que si te interesa, solamente debes encontrar el servicio en el que venga ya de manera predeterminada.
Conseguir más seguridad
Lo cierto es que con IKEv2 ya tenemos ante nosotros un protocolo muy seguro, pero este se puede complementar con algunas otras funcionalidades. Siempre buscando un nivel extra de seguridad, que haga que nuestras conexiones sean mucho más confiables. Y una de ellas es el uso de certificados. En lugar de dar uso de tan solo una autenticación basada en contraseñas, podemos implementar un sistema basado en certificados. Esto añade esta capa de seguridad adicional, y hace que los clientes necesiten un certificado válido aparte de sus contraseñas. Estos deben estar emitidos por entidades autorizadas.
Otra forma de complementar a IKEv2, es mediante el uso de algoritmos que sean muy fuertes. A pesar de que de por sí es bastante flexible, hay algunos algoritmos más modernos y más robustos como AES-GCM, SHA-256 o SHA-384. Lo recomendable en estos casos, es evitar algoritmos que ya se han quedado obsoletos. Pero eso no es todo, sino que es posible implementar un PFS (Perfect Forward Secrecy). Esto utiliza grupos Diffie-Hellman de muy alta seguridad, lo cual nos asegura que, si por un casual una clave de sesión es comprometida, no es posible descifrar las sesiones activas previas.
Por supuesto establecer límites de acceso es otra de las medidas de seguridad más adecuadas. Restringir conexiones VPN a determinadas direcciones IP o rango de IPs, o implementar políticas de listas de controles ACL. Limitando así el tráfico permitido a través de la conexión VPN. En la cual incluso se puede considerar la desactivación del split tunneling, y cambiarlo por un uso completo de una VPN para asegurarnos de que el tráfico siempre pasa por esa VPN.
Configuración del protocolo IPsec IKEv2
Este protocolo IPsec IKEv2 está orientado para entornos donde podamos crear una VPN Site-to-Site e interconectar sedes, sin embargo, también es apta para configurar VPN de acceso remoto, siempre que los clientes sean compatibles con este tipo de VPN. Por ejemplo, cualquier sistema operativo Linux es compatible, pero también la última versión de Windows 10 y los smartphones de Samsung, ya que incorporan un cliente IPsec IKEv2.
Configurar el «Mobile Clients»
Lo primero que tenemos que hacer para configurar el servidor VPN, es irnos a la sección de «VPN / IPsec / Mobile Clients«, debemos seleccionar las siguientes opciones:
- Enable IPsec Mobile Client Support
- Virtual Address Pool: provide a virtual IP address to clients, y ponemos una subred que no esté en uso, como la 192.168.100.0/24.
- DNS Server: provide a DNS Server to clients: aquí podremos poner unos DNS locales o unos DNS públicos como los de Google o Cloudflare.
La configuración definitiva sería de la siguiente forma:
Una vez que lo hayamos guardado, pinchamos en «Save» y arriba nos pondrá un botón verde para aplicar cambios, pinchamos en aplicar cambios y cuando cargue nuevamente, debemos pinchar en el botón verde de «Create Phase 1».
Con el protocolo IPsec IKEv2, el establecimiento de la conexión también está dividido en dos fases, la fase 1 realizará la autenticación, y la fase 2 se negociarán los cifrados del túnel con criptografía simétrica para el intercambio de información.
Primero deberemos configurar la fase 1 con un conjunto de cifrados compatible con la mayoría de clientes, en principio, IKEv2 da menos problemas a la hora de seleccionar cifrados más robustos, porque es un protocolo más nuevo, y no tendremos problemas por elegir cifrados más seguros.
Configurar la fase 1 de IPsec
En este menú tendremos que configurar el protocolo IPsec para usarlo con IKEv2. Es posible que la configuración de seguridad cambie si usas clientes VPN de Android, iOS, programas externos para Windows, etc, porque dependiendo del software integrado en el propio dispositivos, soportarán mayor o menor nivel de seguridad.. Nosotros usaremos una configuración conservadora, pero bastante segura, y que es compatible con la mayoría de clientes VPN, pero debes tener en cuenta esto, porque es posible que tengas que modificar algún parámetro para rebajar o aumentar la seguridad.
Las opciones que debemos configurar para que funcione correctamente son las siguientes:
- General Information
- Key Exchange version: IKEv2
- Internet Protocol: IPv4 o IPv6
- Interface: WAN de Internet
- Description: ponemos una descripción.
- Phase 1 Proposal (Authentication)
- Authentication Method: Mutual PSK
- Negotiation Mode: Aggresive; si seleccionamos «Main» es más seguro, pero los clientes VPN podrían no conectarse. Si la VPN es capaz de conectarse bien con la configuración que os ofrecemos, posteriormente podéis cambiar a «Main» para comprobar si funciona también.
- My identifier: distinguished name: vpn.redeszone.net
- Phase 1 Proposal (Encryption)
- Encryption Algorithm: AES de 256 bits, SHA256, DH Group 14 (2048 bits).
pfSense soporta mucha mayor seguridad, e incluso permite activar el PFS (Perfect Forward Secrecy), el problema es que los clientes VPN podráin no soportarlo. Por este motivo, no hemos usado los algoritmos más robustos como SHA-512 o un grupo DH superior de 4096 bits, e incluso haciendo uso de EC. Para configurarlo con la mejor seguridad, es necesario revisar los registros de conexión, donde veremos los diferentes conjuntos de cifrado que soportan los diferentes clientes IPsec que se vayan a conectar. De esta forma, y conociendo qué modelos de dispositivos y sistema operativo se van a conectar, podremos elegir la configuración más segura que sea compatible con todos.
El resto de opciones de configuración las podemos dejar como vienen por defecto.
Una vez que hayamos configurado la fase 1 de IPsec IKEv2, vamos a configurar la fase 2.
Configurar la fase 2 de IPsec
En este menú lo primero que deberemos elegir es el modo de funcionamiento, nosotros hemos elegido «Tunnel IPv4». Además, también tendremos que poner la «Local Network» que nosotros queramos que tenga acceso los clientes VPN, tenemos varias opciones, lo más normal es elegir subred LAN o una subred específica que nosotros definamos. En la opción de «NAT» lo dejaremos en «none».
En este menú de configuración deberemos poner lo siguiente:
- General Information
- Mode: tunnel IPv4.
- Local Network: LAN subnet.
- Description: una descripción que nosotros queramos.
- Phase 2 Proposal (SA / Key Exchange):
- Protocol: ESP.
- Encryption Algorithm: AES auto y AES-128-GCM auto.
- Phase 2 Proposal (SA / Key Exchange)
- Hash algorithms: seleccionamos SHA-1 y SHA-256
- PFS Key group: off, no lo soportan los clientes.
El resto de opciones podemos poner las de por defecto, y pinchamos en save para guardar todos los cambios.
Una vez acabado, podremos ver el resumen de la configuración realizada en la sección de «IPsec / Tunnels».
Ahora tendremos que crear un usuario y contraseña para poder acceder:
- Identificador: redeszone@redeszone.net
- Secrey Type: PSK
- Pre-Shared Key: 12345678
Ahora que ya hemos configurado el servidor VPN IPsec IKEv2, tenemos que abrir los puertos en el firewall de la WAN.
Abrir puertos en el firewall de pfSense
En esta VPN también es necesario abrir puertos en la WAN de Internet, tendremos que abrir el puerto 500 UDP y el puerto 4500 UDP. Por lo tanto, es uno de los diferentes pasos que hay que ir realizando sobre la marcha para que funcione sin inconvenientes la conexión VPN. Es por esto mismo por lo que, a continuación, tenéis todos los detalles para abrir ambos puertos.
El primer paso en este proceso que deberemos seguir será la de crear una regla en la sección «Firewall / Rules / WAN» con la siguiente información:
- Action: Pass
- Interface: WAN
- Address Family: IPv4
- Protocol: UDP
- Source: any
- Destination: WAN Address en el puerto 500
Por otra parte, la segunda regla sería:
- Action: Pass
- Interface: WAN
- Address Family: IPv4
- Protocol: UDP
- Source: any
- Destination: WAN Address en el puerto 4500
Tal y como podéis ver, tenemos las dos reglas se deben aceptar para permitir el tráfico en cuestión.
Una vez se hayan realizado los pasos anteriores de este proceso, entonces será el momento de guardar y aplicar los cambios, asegurándonos de que esta regla se va a cumplir. Ahora nos vamos a la sección de «IPsec» donde haremos un «permitir todo». Luego cuando nos conectemos, si queremos limitar los accesos podremos hacerlo poniendo aquí las correspondientes reglas.
- Action: Pass
- Interface: IPsec
- Address Family: IPv4
- Protocol: any
- Source: any
- Destination: any
Ahora que ya tenemos el servidor VPN IPsec IKEv2 configurado y también lo tenemos abierto en el firewall, vamos a realizar una prueba de conexión con Android.
Prueba de conexión
En nuestro caso, hemos establecido una conexión VPN con un smartphone Android, concretamente el Samsung S8 Plus que incorpora un cliente IPsec IKEv2 PSK. La configuración que debemos realizar es la siguiente (no podemos poner captura porque el sistema operativo lo detecta como contenido privado).
- Nombre: le damos un nombre a la VPN
- Tipo: IPsec IKEv2 PSK
- Servidor: IP o dominio DDNS de vuestro servidor VPN
- Identificador de IPsec: redeszone@redeszone.net
- Clave compartida inicial de IPsec: 12345678; la clave que pusimos en la sección de «Pre-Shared Key».
Pinchamos en guardar, y en conectar. Una vez hecho, nos conectará sin problemas al servidor VPN y tendremos acceso a la administración del pfSense y a cualquier red.
Recomendaciones y consejos
Aunque IPsec IKEv2 funciona mejor que otros tipos de VPN basados en IPsec en cuanto a compatibilidad, debemos prestar especial atención a los algoritmos de cifrado que pongamos en el servidor VPN, porque podría ocasionar que algunos clientes IPsec no puedan conectarse. Esto es algo bastante habitual con el protocolo IPsec, porque dependemos de qué software de cliente IPsec lleven los dispositivos, y qué algoritmos son compatibles. Lógicamente, por seguridad siempre es recomendable elegir los más seguros, pero podría impedirnos que se conectasen los clientes VPN.
Lo recomendable es ver los registros de las diferentes conexiones IPsec, y comprobar qué «proposal» envían los clientes IPsec al servidor para la negociación IKE, de esta forma, podremos forzar en el servidor que solamente tengan acceso a los mejores algoritmos criptográficos, y dejar de usar los que no sean seguros.
Con este mismo tutorial, podréis configurar el IPsec IKEv2 RSA, modificando el «Mutual PSK» por «Mutual RSA» y configurando los correspondientes certificados de servidor y clientes, próximamente os enseñaremos cómo hacerlo. Esto también trae complicaciones añadidas, porque es posible que el cliente VPN no sea capaz de leer el certificado RSA o ECDSA configurado, debido a que se usan algoritmos demasiado seguros.