Configuración del servidor OpenVPN con máxima seguridad en pfSense

Configuración del servidor OpenVPN con máxima seguridad en pfSense

Sergio De Luz

El sistema operativo pfSense que está orientado a firewall y router, dispone de varios protocolos de VPN para interconectar sedes a través de VPN Site-to-Site, y también podremos configurar VPN de acceso remoto para interconectar diferentes clientes móviles entre sí, y para que todo el tráfico de Internet pase a través del propio sistema operativo. OpenVPN es uno de los softwares más utilizados para crear redes privadas virtuales, gracias a su seguridad, flexibilidad y buen funcionamiento. Hoy en RedesZone os vamos a explicar paso a paso cómo configurar el servidor OpenVPN que está dentro de pfSense.

¿Qué es y para qué sirve el OpenVPN integrado en pfSense?

OpenVPN es un software que nos permite levantar redes privadas virtuales, tendremos un canal de control donde se gestionará el levantamiento del túnel y la negociación de los protocolos de cifrado, y tendremos un canal de datos donde todo el tráfico del túnel irá cifrado punto a punto. Uno de los puntos fuertes de OpenVPN en pfSense, es que la gran mayoría de opciones disponibles las tenemos a través de una interfaz gráfica de usuario muy intuitiva, esto nos permitirá configurarlo sin necesidad de incorporar ninguna directiva de manera manual en el campo de «opciones avanzadas». El software OpenVPN que tenemos integrado en pfSense nos permitirá crear y configurar dos tipos de arquitecturas:

  • VPN de acceso remoto: los clientes remotos se conectarán al servidor VPN de pfSense, y saldrán a Internet a través de nosotros. También podrán acceder a las subredes que nosotros indiquemos. Este tipo de VPN están orientadas a teletrabajadores, técnicos de redes y sistemas etc.
  • VPN Site-to-Site: esta arquitectura nos permite intercomunicar una sede con otra, para intercomunicar diferentes sedes a través de Internet y que todo el tráfico esté protegido punto a punto. Por ejemplo, con este tipo de VPN podremos comunicar oficinas, sedes de empresas etc.

OpenVPN soporta decenas de configuraciones diferentes, tanto para mejorar el rendimiento como la seguridad. pfSense permite diferentes tipos de autenticaciones, pero la más recomendable es la basada en certificados SSL/TLS para asegurar la autenticidad, confidencialidad e integridad, no siendo recomendable hacer uso de claves precompartidas. Además de incorporar la autenticación basado en certificados SSL/TLS, también podríamos incorporar una autenticación adicional con usuario/contraseña, para tener un sistema más robusto. pfSense permite exportar la clave privada de los certificados con una contraseña, de esta forma, para poder usar estos certificados también tendríamos que incorporar una contraseña adicional, de lo contrario, no funcionaría.

El servidor OpenVPN integrado en pfSense nos permitirá conectarnos a nuestro hogar o trabajo de forma remota, rápida y segura, independientemente de que la red sea cableada o WiFi. Todo el tráfico irá cifrado punto a punto desde nuestro cliente OpenVPN (que está instalado en un ordenador, smartphone o tablet) hasta el servidor OpenVPN de pfSense. Un detalle muy importante, es que el servidor OpenVPN debe estar instalado en una conexión a Internet fuera de CG-NAT, y con las reglas en el firewall abiertas para permitir la conexión, de lo contrario, no podremos conectarnos a través de Internet.

Por supuesto, en el servidor podremos añadir diferentes subredes para enrutar el tráfico a través de las diferentes subredes que tengamos en el pfSense, e incluso podremos configurar en el firewall si queremos permitir o no esos accesos desde una dirección IP del servidor OpenVPN en concreto. Con OpenVPN tenemos dos formas de gestión de los paquetes y cómo trabajan a nivel de capa de transporte:

  • TUN: este modo de funcionamiento permite encapsular todos los paquetes que se transportan a través de él como segmentos TCP o datagramas UDP. Todos los clientes se les proporcionará una subred nueva específica, por defecto la subred de OpenVPN es la 10.8.0.0/24 pero podremos configurar la que nosotros queramos.
  • TAP: este modo de funcionamiento simula una interfaz de red Ethernet, también se conoce como puente o bridge, y este túnel virtual lo que hace es encapsular directamente paquetes Ethernet. El modo de funcionamiento puente es útil para intercomunicar usuarios remotos de manera fácil, pero si la red privada de origen coincide con la de destino, tendremos un problema de enrutamiento y la comunicación no funcionará.

En este tutorial para configurar OpenVPN en pfSense usaremos una subred virtual 10.8.0.0/24 donde tendremos a todos los clientes VPN cuando se conecten, será muy fácil identificar a los diferentes clientes VPN que tenemos conectados a la red, además, podremos «forzar» a que cada cliente con un certificado en concreto siempre tenga la misma dirección IP privada del túnel VPN.

En este manual os vamos a enseñar cómo realizar una configuración de OpenVPN muy segura en pfSense, personalizando los algoritmos de cifrado simétrico, asimétrico y de hash. De esta forma, podremos tener el mejor cifrado posible de las comunicaciones.

Resumen de la criptografía a utilizar

  • Certificados digitales: OpenVPN permite hacer uso de certificados digitales basados en RSA o también EC (Curvas Elípticas), nosotros haremos usa del algoritmo de EC secp521r1, aunque tenemos disponibles muchos otros a través de la gestión de certificados de pfSense. El algoritmo hash que utilizaremos será SHA512, uno de los más seguros que podemos usar actualmente. Todos los clientes VPN a partir de la versión 2.4 deberían ser compatibles con esta configuración, en nuestro caso, tanto el servidor como los clientes hacen uso de OpenVPN 2.5 o superior, por lo que no debería haber problemas.
  • Canal de control OpenVPN: utilizaremos TLS 1.3 para tener la máxima seguridad, y siempre utilizando PFS (Perfect Forward Secrecy). Utilizaremos las tres suites criptográficas de TLS 1.3 para establecer la comunicación: TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256 y TLS_AES_128_GCM_SHA256. Si quieres comprobar si tu servidor o cliente soporta este tipo de cifrado, deberás poner en consola «openvpn –show-tls».
  • Canal de datos OpenVPN: utilizaremos el algoritmo de cifrado simétrico AES-256-GCM, uno de los más seguros actualmente y que se ha incorporado la compatibilidad en OpenVPN 2.4 y posterior. No obstante, también haremos uso de CHACHA20-POLY1305 y AES-128-GCM para que el cliente VPN elija el que quiera, dando prioridad al primero de ellos. Si quieres comprobar si tu servidor o cliente soportan estos tipos de cifrado, deberás poner en consola «openvpn –show-ciphers».

Para definir en el canal de datos que queramos hacer uso de TLS 1.3, tendremos que usar la directiva «tls-ciphersuites» en lugar del típico «tls-cipher» como hemos usado siempre. Quedaría de la siguiente forma:

tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256

Adicionalmente a estas medidas de seguridad, incluiremos una firma HMAC para la primera negociación de TLS, esto nos permitirá proteger el servidor OpenVPN frente a posibles ataques DoS. Si el cliente no posee la firma HMAC correcta, automáticamente es bloqueado y no pasará a comprobar los certificados digitales. Haremos uso de tls-crypt que está disponible a partir de OpenVPN 2.4 y siguientes, para tener la mejor seguridad porque nos permite autenticar y cifrar el canal para que nadie sea capaz de capturar esta clave precompartida.

Por último, utilizaremos el protocolo UDP en lugar de TCP, porque es más fuerte frente a ataques de denegación de servicio, debemos recordar que UDP es no conectivo, no fiable y no orientado a conexión. No obstante, podremos usar TCP sin ningún problema para dotar a la VPN de todos los beneficios de este protocolo.

Instalar el plugin OpenVPN Client para generarla configuración

Aunque OpenVPN se encuentra instalado por defecto en pfSense, ya sea en su modo de servidor o cliente, no tenemos un paquete preinstalado que nos permita generar automáticamente la configuración para los clientes. Si nos vamos al gestor de paquetes en «System / Package Manager» y nos vamos a la pestaña de «Available Packages» podremos instalar el paquete «OpenVPN-client-export» que nos permitirá realizar justamente esta acción, para facilitarnos enormemente la configuración de los clientes, importando la configuración del servidor con sus correspondientes certificados digitales.

Una vez instalado, estaremos listos para pasar al siguiente paso, crear los certificados digitales.

Crear los certificados digitales en el propio pfSense

Para configurar un servidor OpenVPN con autenticación «Remote access SSL/TLS» deberemos hacer uso de unos certificados digitales. Tendremos que crear una autoridad de certificación (CA) con la que firmar los diferentes certificados, tenemos que crear un certificado específico para el servidor OpenVPN y de tipo servidor, así como todos los certificados digitales de los clientes VPN que queramos dar de alta.

También podremos crear una lista de revocación de certificados, si un certificado se ve comprometido porque lo hemos perdido, podremos anularlo directamente para que no sea válido. En caso de que un usuario ilegítimo lo utilice, no podrá conectarse a nuestro servidor VPN de ninguna forma.

Crear la CA (Autoridad de Certificación)

En la sección de «CAs» es donde debemos pinchar en «Add» para crear una nueva autoridad de certificación, hacer esto es fundamental para hacer funcionar correctamente todos los certificados digitales, tanto el del servidor como los de los clientes VPN que se vayan a conectar. En este menú deberemos elegir las siguientes opciones:

  • Create /Edit CA
    • Descriptive Name: ponemos un nombre descriptivo a esta CA, el que nosotros queramos.
    • Method: Create an internal Certificate Authority.
  • Internal Certificate Authority
    • Key type: ECDSA con secp521r1 que es compatible con OpenVPN.
    • Digest Algorithm: sha512
    • Lifetime Days: 3650 (10 años)
    • Common-name: el CN debe ser un nombre descriptivo, que describa inequívocamente a esta CA. En nuestro caso solamente tenemos una CA para OpenVPN, así que hemos puesto simplemente «openvpn-ca»
    • Country Code: none. Esto ya no es necesario rellenarlo en los nuevos certificados de OpenVPN.

La configuración de la CA quedaría de la siguiente forma:

En los diferentes menús podremos elegir otras opciones de configuración, como importar una CA que ya tengamos creada, o crear una CA intermedia, nosotros vamos a crear una CA y después los certificados, sin usar ninguna CA intermedia.

También podremos elegir entre RSA o ECDSA, e incluso usar diferentes longitudes de clave de RSA y diferentes algoritmos EC para la creación de la CA. En «Digest algorithm» podremos elegir diferentes algoritmos de hash, los más recomendables son sha256, sha384 y sha512, nunca deberías utilizar sha1 por seguridad.

Una vez creada la CA, nos aparecerá en el listado de CA como podéis ver aquí:

En este menú podremos ver la cantidad de certificados que tiene asociados, el CN, la validez del certificado y si actualmente tenemos esta CA en uso. Cuando tenemos una CA o un certificado en uso, no podremos eliminarlo. En la sección de «Actions» podremos editar la descripción del certificado, exportar la clave pública de la CA, la clave privada, renovar la CA e incluso eliminar la CA que acabamos de crear.

Crear el certificado del servidor OpenVPN

Ahora tenemos que crear el certificado que usará al servidor OpenVPN integrado en pfSense. Nos vamos a la sección de «Certificates» y pinchamos en «Add/Sign», siempre tendremos un certificado preconfigurado en pfSense porque el protocolo HTTPS lo utiliza para poder conectarse, de lo contrario, no podría funcionar. Este certificado lo crea automáticamente al realizar la instalación del sistema operativo.

El menú de creación de los certificados es muy similar al anterior, tendremos que elegir entre tres opciones:

  • Method:
    • Create an internal certificate.
    • Import an existing certificate.
    • Create a certificate signing request.
    • Sign a certificate signing request.

Nosotros vamos a seleccionar la primera opción, crear un certificado interno.

A continuación, tendremos que ponerle un nombre descriptivo, el que nosotros queramos, y la configuración debe ser la siguiente:

  • Add / Sign a New Certificate
    • Method: Create an internal Certificate Authority.
    • Descriptive Name: ponemos un nombre descriptivo a este certificado, el que nosotros queramos.
  • Internal Certificate
    • Certificate Authority: debemos elegir la CA anterior que acabamos de crear en el paso anterior.
    • Key type: ECDSA con secp521r1 que es compatible con OpenVPN. El mismo que la CA.
    • Digest Algorithm: sha512
    • Lifetime Days: 3650 (10 años)
    • Common-name: el CN debe ser un nombre descriptivo, que describa inequívocamente a este certificado del servidor. En nuestro caso solamente tenemos un certificado para servidor, así que hemos indicado openvpn-servidor simplemente.
    • Country Code: none. Esto ya no es necesario rellenarlo en los nuevos certificados de OpenVPN.

Si tenemos un certificado con una duración superior a 398 días es posible que nos de fallos en algunas plataformas, esto es de forma general, pero no para OpenVPN. Por tanto, podremos poner la duración que nosotros queramos sin problemas, no nos dará fallo.

En la parte inferior, deberemos elegir las siguientes opciones:

  • Certificate Attributes:
    • Certificate Type: server certificate
    • Alternative Name: lo podemos dejar sin nada, completamente vacío.

Debemos tener en cuenta que ahora mismo estamos configurando el certificado digital para el servidor OpenVPN, por tanto, debemos elegir «Server Certificate».

La sección de «Alternative Name» se suele utilizar para los certificados de IPsec, pero no lo usaremos en OpenVPN.

Una vez creado, lo veremos en el listado de certificados, además, también podremos ver la CA con la que hemos firmado el certificado y si es de tipo servidor.

Este certificado digital para el servidor es el que tendremos que poner a la hora de configurar el servidor OpenVPN en el pfSense, debemos acordarnos muy bien del nombre que le hemos dado, porque después nos sacará un listado con todos los certificados.

Crear los certificados de todos los clientes

Para crear uno o varios certificados digitales para los clientes, debemos hacer exactamente el mismo proceso que para el certificado del servidor.

  • Add / Sign a New Certificate
    • Method: Create an internal Certificate Authority.
    • Descriptive Name: ponemos un nombre descriptivo a este certificado del cliente.
  • Internal Certificate
    • Certificate Authority: debemos elegir la CA anterior que hemos creado en el primer paso.
    • Key type: ECDSA con secp521r1 que es compatible con OpenVPN. El mismo que la CA.
    • Digest Algorithm: sha512
    • Lifetime Days: 3650 (10 años)
    • Common-name: el CN debe ser un nombre descriptivo, que describa inequívocamente a este certificado del cliente. En nuestro caso solamente tenemos un certificado para cliente, así que hemos indicado openvpn-cliente1 simplemente.
    • Country Code: none. Esto ya no es necesario rellenarlo en los nuevos certificados de OpenVPN.

En la sección de «Certificate Attributes» tendremos que configurarlo de la siguiente forma:

  • Certificate Attributes:
    • Certificate Type: user certificate
    • Alternative Name: lo podemos dejar sin nada, completamente vacío.

Una vez creado, podremos ver el listado nuevo de certificados creados en pfSense.

Si pinchamos en editar, lo único que podremos hacer es modificar el nombre descriptivo, pero también podremos exportar la clave privada con una contraseña de paso, si ponemos clave, la propia clave privada se cifrará con AES-256-CBC para proteger su contenido, y, por tanto, evitar que si cae en malas manos puedan leerlo y utilizarlo. Esto es lo que hemos usado nosotros para exportar el certificado de los clientes, como posteriormente os enseñaremos.

Si queremos crear más certificados de clientes lo podremos hacer de la misma forma, lo único que tenemos que hacer es poner una descripción diferente y también un CN diferente.

Una vez que hayamos terminado de crear todos los certificados de los clientes que se van a conectar al servidor OpenVPN, procedemos a configurar paso a paso el servidor.

Configurar el servidor OpenVPN con todas las opciones explicadas

Para configurar el servidor OpenVPN, lo único que tenemos que hacer es irnos al menú principal de pfSense, pinchar en la sección de «VPN» y seleccionar «OpenVPN«.

En la sección de «OpenVPN» debemos pinchar en «Servers» y pinchamos en «Add» para agregar un nuevo servidor OpenVPN.

Dentro de la configuración del servidor OpenVPN, deberemos elegir las siguientes opciones:

  • General Information:
    • Server Mode: Remote Access (SSL/TLS)
    • Protocol: UDP
    • Device Mode: tun
    • Interface WAN
    • Local Port: 1194, por defecto es este puerto, es recomendable cambiarlo.
    • Description: ponemos una descripción de este servidor OpenVPN, porque podremos crear varios.

En la sección de «Protocol» tenemos diferentes opciones de configuración, por defecto es «UDP on IPv4 only», ya que también podremos usar TCP, e incluso TCP y UDP, y también para las redes IPv6, si es que usamos este protocolo de red. En la sección de «Device Mode» podremos elegir tun o tap, como os hemos explicado anteriormente, tun es a nivel de capa 3, y tap es a nivel de capa 2, con sus puntos fuertes y sus puntos débiles. En la sección de «Interface» lo más normal es utilizar la WAN, pero podremos estar escuchando con este servidor OpenVPN en todas las interfaces. Por último, en «Local port» podemos modificar el puerto TCP y/o UDP que nosotros queramos, es recomendable no utilizar el puerto por defecto que es el 1194.

En la sección de «Cryptographic Settings» podremos configurar todo respecto a los certificados digitales SSL/TLS, a continuación, os explicamos todas las opciones:

  • Cryptographic Settings
    • TLS Configuration: habilitamos usar una clave TLS, para hacer uso del tls-crypt, pinchamos en generar automáticamente la clave TLS. Al guardar los cambios, nos aparecerá si queremos usar «Autenticación» o también «Encriptación», es recomendable este último para hacer uso del nuevo tls-crypt en lugar de tls-auth que teníamos anteriormente.
    • Peer Certificate Authority: seleccionamos la CA que hemos creado en el propio pfSense para este servidor OpenVPN.
    • Peer certificate Revocation list: si creamos una lista de revocación de certificados, lo creamos en la sección de «System > Cert.Manager» y seleccionamos aquí el listado que lo hemos creado anteriormente.
    • Server Certificate: elegimos el servidor OpenVPN, en nuestro caso, es «OpenVPN_ServidorOVPN (Server: Yes)»
    • DH Parameter Length: ECDH Only
    • ECDH Curve: elegimos secp521r1

En la sección de «Data Encryption Negotiation» lo habilitamos, y elegimos los cifrados simétricos que queremos usar para el canal de datos. En nuestro caso, hemos elegido un total de 3: AES-256-GCM, AES-128-GCM y también el nuevo CHACHA20-POLY1305 que han incorporado recientemente. También deberemos elegir un algoritmo de «Fallback» por si el cliente OpenVPN no es compatible, en este caso elegimos AES-256-CBC, pero si quieres la máxima seguridad, os recomendamos elegir AES-256-GCM para forzar a que no se conecte si no usamos cifrados robustos, nada de usar AES-256-CBC, si hay clientes antiguos debemos actualizarlos.

En «Auth Digest Algorithm» elegiremos SHA256 o SHA512, siempre funciones hash seguras.

En la sección de «Hardware Crypto»: si tenemos aceleración de cifrado por hardware, lo elegiremos aquí para que funcione más rápida la conexión a la VPN, si no tenemos o no queremos habilitarla, dejamos el valor por defecto.

En «Certificate Depth» seleccionamos «One (Client + Server)».

En la sección de «Tunnel Settings» tendremos que configurar las siguientes opciones:

  • IPv4 Tunnel Network: pondremos la subred específica para los clientes OpenVPN, debe ser una subred libre que no hayamos utilizado anteriormente. En nuestro caso hemos elegido la 10.8.0.0/24 que es la de por defecto en este software, pero podremos usar cualquier subred.
  • IPv6 Tunnel Network: lo mismo que en IPv4, pero si utilizas redes IPv6.
  • Redirect IPv4 Gateway y IPv6: si habilitamos esta opción, todo el tráfico de los clientes OpenVPN pasarán por el servidor OpenVPN y tendrán acceso a todas las subredes del sistema operativo, podremos bloquear el acceso a ciertas subredes a través de las opciones de configuración del firewall, pero los clientes recibirán la ruta para llegar a todas las subredes. Si vamos a hacer Full-Tunnel VPN activamos esta opción, si vamos a usar Split-Tunnel entonces lo deshabilitaremos, y tendremos que introducir abajo las subredes a las que queremos que tengan acceso.
  • Concurrent Connections: 10, es el número máximo de clientes conectados simultáneamente, esto dependerá de tus necesidades.
  • Allow Compression: Refuse, no queremos compresión para evitar ataques.
  • Push Compression: podremos proporcionar esta opción de compresión (sin compresión) a los clientes.
  • Inter-client communication: podremos permitir o denegar que los clientes OpenVPN se puedan comunicar entre ellos, por seguridad es recomendable desactivarlo, pero en ciertos casos es necesario e incluso recomendable que haya comunicación, esto dependerá de tus necesidades.
  • Duplicate Connection: esta opción normalmente debería estar desactivada, cada cliente OpenVPN debería tener sus propias credenciales, y no usar el mismo cliente con el mismo certificado para conectarnos. Esta opción es útil si queremos usar los mismos certificados en nuestro smartphone, ordenador y tablet (3 dispositivos), y vamos a conectarnos simultáneamente. Nuestra recomendación es emitir un certificado por cada dispositivo.

En «Client Settings» podremos proporcionar a los clientes una IP dinámica, luego podremos especificar que cada cliente tenga una IP del rango 10.8.0.0/24 específico. En «Topology» elegimos «subnet» que es mucho más eficiente que net30 que es la forma antigua.

En «Ping Settings» podremos configurar los pings para ver si un cliente sigue conectado o ha perdido la conectividad.

En «Advanced Client Settings» podremos configurar los servidores DNS, ya sean servidores DNS externos como el popular 8.8.8.8 o un servidor DNS local del propio pfSense. También podremos seleccionar la opción de «Bloquear el acceso a servidores DNS» excepto los del túnel VPN para mejorar la seguridad.

En la sección de «Advanced Configuration» podremos añadir reglas adicionales avanzadas que no tenemos en la interfaz gráfica de usuario, por ejemplo, nos interesa que siempre negocie con TLS 1.3 como mínimo, si un cliente no es compatible no se conectará, porque no estaremos permitiendo TLS 1.2.

Tal y como os hemos explicado antes, al guardar por primera vez la configuración del servidor OpenVPN, en la sección de «TLS Key» nos saldrá la clave TLS generada automáticamente por pfSense, y deberemos elegir «TLS Encryption and Authentication».

Una vez configurado, podremos ver el resumen de la configuración a continuación:

Otra configuración que podremos realizar respecto a las rutas, es que, en lugar de forzar a todos los clientes a enviar todo el tráfico por el túnel VPN, podremos definir que solamente podamos acceder a ciertas redes, las que nosotros queramos, y automáticamente los clientes recibirán las rutas a estas redes.

Una vez que hemos configurado el servidor OpenVPN, vamos a configurar el firewall para permitir conexiones entrantes.

Configurar las reglas en el firewall para permitir acceso

En la sección de «Firewall / Rules» pinchamos en WAN, y creamos una regla con los siguientes valores:

  • Action: PASS
  • Interface: WAN
  • Address Family: IPv4
  • Protocol: UDP
  • Source: Any, cualquier origen ya que no sabemos siempre qué IP pública vamos a tener
  • Destination: WAN Address en el puerto OpenVPN 1194, o en el puerto que hayamos configurado el servidor.

Guardamos y ya tendremos la regla creada en la WAN de Internet.

Ahora nos tenemos que ir a la sección de «Firewall / Rules / OpenVPN», en esta sección es donde vamos a definir los accesos de los clientes OpenVPN. Si queremos permitir que los clientes OpenVPN accedan a cualquier subred de pfSense y también a Internet, tendremos que crear una regla de «Pass todo», definiendo lo siguiente:

  • Action: PASS
  • Interface: OpenVPN
  • Address Family: IPv4
  • Protocol: Any
  • Source: Any
  • Destination: Any

Si queremos crear reglas específicas para denegar el tráfico a ciertas subredes, pues tendremos que crear reglas que cumplan esta condición.

Una vez que ya tenemos acceso desde la WAN de Internet, y también a cualquier subred del sistema operativo y redirección a Internet, vamos a exportar el archivo de configuración OpenVPN para los clientes.

Exportar el archivo de configuración OpenVPN para los clientes

Nos vamos a la sección de «VPN / OpenVPN / Client Export», aquí configuraremos la extensión para generar la configuración automática para los clientes:

  • Remote Access Server: elegiremos el servidor VPN que hayamos configurado, podemos tener varios, por tanto, elegiremos el que nos interese.
  • Host Name resolution: el dominio DDNS que tengamos configurado en pfSense, o la dirección IP de la WAN, tendremos varias posibilidades.
  • Verify Server CN: Automatic – use verify-x509-name
  • Block outside DNS: habilitamos esta opción.
  • Use random local port: habilitamos esta opción.

Una vez configurado todo lo anterior, deberemos pinchar en los clientes a exportar, lo más normal es seleccionar «Inline Configurations: Most Clients» y nos exportará en un mismo archivo de configuración la CA, clave pública y privada del certificado del cliente, y toda la configuración.

Nuestra recomendación es elegir esta opción de «Inline Configurations: Most Clients», pero añadiendo la clave privada del cliente cifrada, para que si este archivo de configuración cae en malas manos, no pueda acceder a nuestro servidor VPN. Para exportar la clave privada cifrada, debemos irnos a la sección de «System / Cert Manager» e irnos a «Edit» el certificado del cliente, ponemos una contraseña de paso y pinchamos en «Export private Key»:

Ahora con un editor de texto, abrimos esta clave cifrada y el archivo de configuración recién descargado:

  • En el archivo de configuración completo de OpenVPN borramos todo lo que hay dentro de «<key></key>»
  • Copiamos el contenido completo de la clave privada exportada dentro de «<key></key>» y guardamos cambios.

Ahora, al usar la clave privada para conectarnos al servidor, tendremos que introducir esta contraseña que protege el certificado. Ahora vamos a comprobar que el servicio está levantado, y nos conectaremos con el primer cliente.

Comprobar estado del servicio y de los clientes conectados

En la sección de «Status / OpenVPN» podremos ver si está activado o no, lo activamos y conectaremos el primer cliente sin ningún tipo de problema.

Una recomendación adicional que podéis hacer con pfSense, es proporcionar a un mismo cliente VPN que usa un certificado en concreto, la misma dirección IP siempre. Para hacer esto, simplemente tenemos que meternos en «Client Specific Overrides», añadimos uno nuevo, elegimos el servidor y el CN del cliente específico y en la sección de «Advanced» ponemos:

ifconfig-push 10.8.0.2 255.255.255.0;

Y este cliente VPN con ese determinado CN siempre tendrá esta dirección IP privada dentro del túnel VPN.