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.
Cada vez son más las empresas que buscan disponer de servidores que los ayuden en cuanto a la seguridad de sus comunicaciones. Es por ello que se tienen en cuenta sistemas como VPN IPsec IKE xAuth. Lo cual proporciona cierta flexibilidad a las compañías.
¿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.
Consideraciones previas
Como ocurre con cualquier software o sistema que queremos implementar en una empresa, se deben tener algunas consideraciones previas. Empezando por la seguridad, lo cual es seguramente uno de los puntos críticos de cualquier compañía. Y en este caso tendremos que hablar de IKEv1, donde nos encontramos con algunas vulnerabilidades que son conocidas. Este es susceptible a muchos tipos de ataque, donde se incluye el man-in-the-middle. Por lo cual debemos asegurarnos de utilizar protocolos de seguridad como IKEv2, como veremos a continuación. Esto debe ir complementado con algunas políticas, especialmente de cara a las contraseñas. Debemos asegurarnos de que se utilizan claves fuertes y únicas, de este modo se reduce mucho el riesgo de ataques de fuerza bruta.
La compatibilidad también es un punto muy importante. A pesar de que están ampliamente soportados por muchos dispositivos y sistemas operativos, debemos verificar por completo que no vamos a tener problemas. Tanto con los clientes como en donde lo vamos a instalar. Pero hablando del lugar de la instalación, debemos revisar también el rendimiento aparte de la compatibilidad. Estamos ante una funcionalidad que puede ser un poco intensiva con el uso de la CPU, sobre todo si lo comparamos con otros protocolos. Por lo cual debemos realizar una evaluación del hardware, que determine si el sistema es adecuado o no.
También debemos tener en cuenta la configuración y la gestión. Estos son puntos clave para que el sistema se mantenga funcionando de la forma adecuada. Lo mejor que podemos hacer es establecer planes claros sobre cómo se va a realizar la configuración y la gestión del servidor. Podemos complementarlo con información como la asignación de las direcciones IP, políticas de seguridad, gestión de usuarios, monitorización, entre otras muchas funciones.
IKEv2
Tanto la versión 1 como la 2 de estos protocolos, son iteraciones de cambio de claves por red. Ambos se utilizan para establecer canales seguros para la comunicación entre dos redes. Pero en el caso de IKEv2, estamos ante una versión mejorada, que incluso siendo muy similares, la versión 2 fue diseñada para poder establecer una seguridad mucho mayor, siendo también más confiable y rápida que la versión 1.
La velocidad, como decimos, es una de las principales ventajas. El principal motivo es que tiene la capacidad de administrar una NAT transversal, por lo cual puede evitar los firewall y establecer la conexión mucho más rápido. A todo esto, también se añaden funciones que permiten realizar una conexión muy rápida, gracias a que admite algunos protocolos de movilidad y hospedaje múltiple. Por el lado del ancho de banda, la versión 2 tiene un consumo menor, ya que necesita menos asociaciones de seguridad para crear el túnel VPN.
Por el lado de la seguridad también tiene mejoras, ya que utiliza los principales algoritmos de encriptación muy avanzados. Como puede ser AES, Camelia o Chacha 2.0. A su vez, utiliza claves para los dos extremos de la comunicación. Pero no se acaba ahí, pues IKEv2 permite el protocolo EAP, el cual es un método de autenticación que se utiliza en redes corporativas, y resulta muy seguro.
Por último, la confiabilidad también tiene una mejora con este IKEv2. Todas las comunicaciones cuentan con pares de mensajes de solicitud y respuesta. A esto se le suma que admite el protocolo MOBIKE, por lo cual la conexión es mucho más resistente a cambios de redes como puede ser Wi-Fi, o cable.
El gran problema que se puede presentar, es que estas dos versiones no son compatibles entre sí. Por lo cual un dispositivo que utiliza IKEv1, no podrá establecer un túnel VPN con uno que utilice IKEv2. Por lo cual la transición de la versión 1 a la 2, puede ser más lenta de lo esperado.
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.