Configura un servidor VPN IPsec IKEv2 en pfSense

Configura un servidor VPN IPsec IKEv2 en pfSense

Sergio De Luz

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.

¿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.

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. A continuación, tenéis todos los detalles para abrir ambos puertos.

Tendremos que 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

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 en aceptar para permitir el tráfico.

Guardamos y aplicamos 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.