Configura un servidor VPN IPsec IKEv1 xAuth en pfSense

El sistema operativo pfSense nos permite configurar diferentes tipos de VPN, entre las que se encuentra IPsec IKEv1 xAuth, un tipo de VPN que nos permitirá conectarnos con nuestros smartphones y tablets con Android y iOS, y también con nuestros ordenadores o Mac, siempre que instalemos el correspondiente software compatible con este tipo de protocolo. Hoy en RedesZone os vamos a enseñar cómo configurar un servidor VPN IPsec IKEv1 xAuth para que te conectes remotamente a tu red local de forma segura.

¿Para qué sirve un servidor VPN IPsec IKEv1 xAuth?

El protocolo IPsec es uno de los protocolos VPN más utilizados y conocidos, se utiliza tanto a nivel doméstico para conectarnos a nuestro hogar de manera fácil y rápida (routers como los de AVM FRITZ! incorporan este tipo de VPN segura), como también para conectarnos a nivel empresarial a la oficina o pequeña y mediana empresa. Esta VPN hace uso del protocolo IKEv1 (Internet Key Exchange) para negociar el cifrado entre los diferentes clientes y el servidor, además, hace uso de autenticación con usuario y contraseña (xAuth) que nos permitirá autenticar a los diferentes clientes cuando se conecten al servidor VPN. Dentro del protocolo IPsec IKEv1 xAuth, tenemos dos métodos de autenticación:

  • Mutual PSK + xAuth: se establece una contraseña de paso que tendrán todos y cada uno de los clientes VPN que quieran conectarse, esta clave está tanto en el servidor como en todos los clientes. Posteriormente, se solicita un nombre de usuario y contraseña para autenticarse individualmente en la VPN.
  • Mutual RSA + xAuth: 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, también se pedirá un nombre de usuario y contraseña para autenticarse en la VPN.

Un detalle muy importante, es que no podremos hacer uso del protocolo IKEv2 ya que no es compatible con este tipo de VPN, debemos usar sí o sí IKEv1 para que los clientes VPN puedan conectarse correctamente.

En este tutorial veremos cómo configurar el protocolo IPsec IKEv1 xAuth 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

Antes de empezar a configurar el protocolo IPsec IKEv1 xAuth, debemos tener en cuenta que este protocolo está orientado a VPN de acceso remoto, es decir, los conocidos como «Mobile Clients», por tanto, los clientes VPN serán móviles, tablets u ordenadores, pero no se establecerá un túnel Site-to-Site, para hacer esto es mejor usar un protocolo como IPsec IKEv2 directamente, sin el xAuth que aquí vamos a tratar.

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
  • Extended Authentication (xAuth)
    • User authentication: Local Database

En la sección de Extended Authentication también es necesario definir la subred donde se van a colocar los clientes VPN que se conecten.

  • Extended Authentication (xAuth)
    • 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».

Debemos recordar que el protocolo IPsec se divide claramente en dos fases, la fase 1 es la fase de autenticación, y la fase 2 la fase donde se negocian los cifrados simétricos para el intercambio de información. Primero deberemos configurar la fase 1 con un conjunto de cifrados compatible con la mayoría de clientes, para, posteriormente, configurar la fase 2.

Configurar la fase 1 de IPsec

En este menú tendremos que configurar el protocolo IPsec correctamente para usarlo con IKEv1 con xAuth, no todas las configuraciones funcionarán con este protocolo. Además, un detalle muy importante, es que es posible que la configuración de seguridad cambie si usas clientes VPN de Android, iOS, programas externos para Windows etc. Nosotros usaremos una configuración conservadora, 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.

Las opciones que debemos configurar para que funcione correctamente son las siguientes:

  • General Information
    • Key Exchange version: IKEv1, si seleccionamos cualquier otro no funcionará.
    • Internet Protocol: IPv4 o IPv6
    • Interface: WAN de Internet
    • Description: ponemos una descripción.
  • Phase 1 Proposal (Authentication)
    • Authentication Method: Mutual PSK + xAuth
    • 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: My IP address
    • Peer identifier: User distinguished name – redeszone@redeszone.net o el que vosotros queráis.
    • Pre-Shared Key: 12345678
  • Phase 1 Proposal (Encryption)
    • Encryption Algorithm: AES de 128 bits, SHA1, DH Group 2 (1024 bits).

pfSense es un sistema operativo profesional, el problema es que los clientes VPN podrían no soportar una mayor seguridad, por este motivo, no hemos utilizado algoritmos más robustos como SHA-512 o un grupo DH superior. Para configurarlo con la máxima seguridad, deberemos ver los registros de IPsec y conocer qué «propuestas» nos enviarán los clientes VPN para poder conectarse, en base a estas propuestas recibidas, podremos elegir la más segura de todas.

El resto de opciones de configuración las podemos dejar como vienen por defecto.

Una vez que hayamos configurado la fase 1, nos saldrá un pequeño resumen de lo que acabamos de configurar, tal y como podéis ver aquí:

Una vez que hayamos configurado la fase 1 de IPsec xAuth, 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» como podéis ver en la imagen. Además, también tendremos que poner la «Local Network» que nosotros queramos que tenga acceso los clientes VPN, se les enviará una ruta para poder acceder. Tendremos la posibilidad de darles una dirección IP en concreto, una subred que nosotros queramos, la subred de la WAN e incluso la subred de la LAN que nosotros tengamos en el pfSense. 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 128 bits y AES-128-GCM 128 bits

En la siguiente foto podéis ver la versión final:

  • Phase 2 Proposal (SA / Key Exchange)
    • Hash algorithms: seleccionamos SHA-1 y SHA-256
    • PFS Key group: off, no lo soporta el protocolo.

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.

Ahora que ya hemos configurado el servidor VPN IPsec xAuth, tenemos que crear los usuarios en pfSense y darles permisos de conexión a la VPN, de lo contrario, no podrán conectarse y dará error.

Crear usuarios en pfSense para autenticarse con xAuth

Para crear los diferentes usuarios, tenemos que irnos a «System / User manager» y crear un nuevo usuario con su correspondiente usuario y contraseña, pinchamos en guardar, y posteriormente volvemos a entrar para editarlo. Ahora podremos añadirle permisos de acceso a diferentes servicios y partes del sistema operativo pfSense. Tenemos que añadir permiso para:

  • Assigned privileges: User – VPN-IPsec xauth Dialin

Una vez seleccionado, pinchamos en «Save» para guardar los cambios. A partir de ahora, este usuario con su correspondiente contraseña podrá conectarse al servidor VPN.

Abrir puertos en el firewall de pfSense

En esta VPN también es necesario abrir puertos en la WAN de Internet, concretamente 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

A continuación, podéis ver la regla recién creada, que es la única que tenemos.

Ahora que ya tenemos el servidor VPN IPsec configurado, hemos creado el usuario con los correspondientes permisos, 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 Huawei P30 que incorpora un cliente IPsec xAuth 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 Xauth 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. A la hora de conectarnos nos pedirá un usuario y contraseña, estas credenciales son las que dimos de alta en el propio sistema operativo, y posteriormente le dimos permisos para conectarse correctamente. 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

Es posible que tengamos problemas de conexión con algunos clientes VPN si ponemos algoritmos de cifrado demasiado seguros, esto es algo completamente normal, además, dependiendo del software incorporado en cada dispositivo podremos configurar unos algoritmos más robustos o más débiles. Por seguridad, siempre es recomendable elegir los más seguros, pero esto impediría que muchos clientes VPN se puedan conectar.

Siempre que un cliente IPsec se vaya a conectar, es recomendable ver los registros y comprobar qué «proposal» envían los diferentes clientes a la hora de conectarse. Algunos smartphones, tablets o clientes IPsec, soportan cifrados más actuales, por tanto, deberíamos configurar la suite más segura posible de tal forma que todos los clientes puedan conectarse correctamente.

Con este mismo tutorial, podréis configurar el IPsec IKEv1 xAuth, modificando el «Mutual PSK + xAuth» por «Mutual RSA + xAuth» y configurando los correspondientes certificados de servidor y clientes, próximamente os enseñaremos cómo hacerlo. Esto también trae complicaciones, porque si creamos una CA con un certificado de cliente que hagan uso de los últimos algoritmos, es posible que nos devuelva un error al conectarnos porque no los reconocen.

¡Sé el primero en comentar!