pfSense: Configuración de VPN para Usuarios Únicos y Acceso Remoto Seguro

La proliferación del teletrabajo y la necesidad de mantener la conectividad segura han convertido a las Redes Privadas Virtuales (VPN) en una herramienta indispensable tanto para empresas como para usuarios individuales. pfSense, una robusta distribución de firewall de código abierto basada en FreeBSD, se presenta como una solución versátil y potente para implementar estas conexiones. Este artículo se centrará en la configuración de un servidor OpenVPN en pfSense, permitiendo el acceso remoto seguro para usuarios individuales, a menudo denominado VPN de tipo "Road Warrior".

Diagrama de una red con pfSense actuando como firewall y servidor VPN

¿Qué es pfSense y una VPN Site-to-Site?

Antes de adentrarnos en la configuración, es crucial comprender los conceptos fundamentales. pfSense es mucho más que un simple firewall; es una distribución que integra una amplia gama de funcionalidades de red. Permite implementar mecanismos avanzados como NAT (Network Address Translation), CARP (Common Address Redundancy Protocol) para alta disponibilidad, y diversas opciones de VPN, incluyendo PPTP, IPsec y, la que nos ocupa, OpenVPN. Además, pfSense puede actuar como portal cautivo, servidor DNS dinámico, servidor DHCP y proxy. Su funcionalidad como firewall clásico es, por supuesto, esencial.

Por otro lado, una VPN Site-to-Site conecta dos o más redes geográficamente dispersas, permitiendo que los dispositivos en cada ubicación se comuniquen como si estuvieran en la misma red local. Esto se logra configurando puertas de enlace seguras en las subredes remotas, sin necesidad de configurar individualmente cada nodo de red. En contraste, una VPN de tipo "Point-to-Site" o "Road Warrior", que es el foco de este artículo, está diseñada para conectar a empleados remotos o usuarios individuales a la red de la oficina o a un servidor centralizado.

Ventajas de Implementar OpenVPN con pfSense

La elección de OpenVPN sobre otras soluciones VPN se debe a su robustez, seguridad y flexibilidad. Al utilizar pfSense como plataforma, se obtienen beneficios adicionales:

  • Seguridad Reforzada: OpenVPN utiliza el protocolo SSL/TLS para establecer canales de comunicación cifrados, protegiendo la privacidad y la integridad del tráfico de datos contra interceptaciones y ataques.
  • Flexibilidad de Configuración: Permite tanto túneles "Full-Tunnel" (todo el tráfico pasa por la VPN) como "Split-Tunnel" (solo el tráfico destinado a la red interna pasa por la VPN, mientras que el resto usa la conexión a Internet normal).
  • Código Abierto: Al ser una solución de código abierto, pfSense y OpenVPN se benefician de una comunidad activa que contribuye a su desarrollo, seguridad y soporte.
  • Gestión Centralizada: pfSense proporciona una interfaz web intuitiva que simplifica la configuración, gestión y monitorización del servidor VPN y sus usuarios.
  • Escalabilidad: Adecuado para proteger redes de cualquier tamaño, desde un hogar hasta una gran empresa.

Preparando el Entorno: Requisitos y Laboratorio

Para llevar a cabo la configuración de un servidor OpenVPN en pfSense, se requieren los siguientes elementos:

  • pfSense: Ya sea instalado en hardware dedicado (físico) o virtualizado. Para la configuración de un servidor VPN de tipo "Road Warrior", una única tarjeta de red (WAN) es suficiente.
  • Dirección IP Pública: Se necesita una dirección IP pública estática o un servicio de DNS dinámico (DDNS) configurado para que los clientes remotos puedan localizar el servidor pfSense en Internet.
  • Acceso al Router ISP: Es indispensable tener acceso al router del Proveedor de Servicios de Internet (ISP) para poder configurar el reenvío de puertos (Port Forwarding) y permitir que las conexiones entrantes al puerto de OpenVPN lleguen a pfSense.

Explicación del Laboratorio

El escenario que planteamos es el de una VPN de tipo "Road Warrior". Los usuarios remotos se conectarán a la dirección IP pública del pfSense en un puerto específico (por defecto, UDP 1194). Esta conexión llegará al router del ISP, que, tras la configuración del reenvío de puertos, la redirigirá al dispositivo pfSense. Aquí, pfSense verificará la autenticación y autorización del usuario y, si todo es correcto, establecerá la conexión VPN. Una vez conectado, el cliente VPN se encontrará dentro de la "Red Virtual" creada por OpenVPN, permitiéndole acceder a los recursos de la RED LAN del pfSense, como bases de datos, intranets o aplicaciones internas.

Es importante notar que, con una configuración de una sola interfaz de red en pfSense (WAN), este solo podrá filtrar paquetes para los usuarios de la red virtual VPN. Si se requiere que pfSense filtre todo el tráfico de la red local (LAN), se necesitaría una configuración con dos tarjetas de red, lo cual representa una topología diferente.

Instalación y Configuración del Servidor OpenVPN en pfSense

pfSense facilita enormemente la configuración de OpenVPN mediante un asistente guiado. A continuación, se detallan los pasos:

Paso 1: Acceso a la Interfaz Web de pfSense

Lo primero es acceder a la interfaz de administración web de pfSense. Esto se realiza abriendo un navegador y navegando a la dirección IP del servidor pfSense en la red local, o a su nombre de dominio si se ha configurado. Se le solicitará un nombre de usuario y contraseña (los valores por defecto suelen ser "admin" y "pfsense", respectivamente). Tras iniciar sesión, accederá al Panel de Control principal.

Paso 2: Configuración Inicial de Interfaces

Antes de configurar la VPN, es necesario asegurarse de que las interfaces de red estén correctamente configuradas. Navegue a Interfaces -> Asignaciones. En un escenario básico de "Road Warrior" con una sola interfaz de red, solo se asignará la interfaz WAN.

Posteriormente, configure la interfaz LAN. Vaya a Interfaces -> LAN. Asigne una dirección IP a esta interfaz que corresponda a la red local de su oficina o hogar. Por ejemplo, 192.168.1.1/24. Asegúrese de que el servidor DHCP esté habilitado en la interfaz LAN si desea que los dispositivos de su red local obtengan direcciones IP automáticamente.

Paso 3: Creación de una Entidad Certificadora (CA)

OpenVPN se basa en certificados para autenticar tanto al servidor como a los clientes. El primer paso es crear una Autoridad Certificadora (CA) en pfSense.

  1. Navegue a System -> Certificate Manager.
  2. Haga clic en la pestaña CAs.
  3. Haga clic en el botón + Add para crear una nueva CA.
  4. Rellene los campos requeridos:
    • Descriptive name: Un nombre descriptivo para su CA (ej: MiEmpresa_VPN_CA).
    • Method: Seleccione Create an internal Certificate Authority.
    • Key length: Se recomienda 2048 bits o superior.
    • Digest Algorithm: Elija un algoritmo seguro como SHA256.
    • Lifetime: Defina el período de validez de la CA.
    • Common Name: Un nombre para su CA.
    • Otros campos como País, Estado, Ciudad, Organización son opcionales pero recomendables.
  5. Haga clic en Save para crear la CA.

Captura de pantalla de la creación de una CA en pfSense

Paso 4: Creación de un Certificado de Servidor OpenVPN

Con la CA creada, el siguiente paso es generar un certificado para el servidor OpenVPN.

  1. Vuelva a System -> Certificate Manager.
  2. Haga clic en la pestaña Certificates.
  3. Haga clic en el botón + Add/Sign.
  4. Configure los siguientes parámetros:
    • Method: Seleccione Create an internal Certificate.
    • Descriptive name: Un nombre para su certificado de servidor (ej: OpenVPN_Server_Cert).
    • Certificate Authority: Seleccione la CA que creó en el paso anterior.
    • Key length y Digest Algorithm: Deben coincidir con los de la CA.
    • Lifetime: Defina la validez del certificado del servidor.
    • Common Name: Puede ser el nombre de dominio de su servidor o un nombre descriptivo.
    • Certificate Type: Seleccione Server Certificate.
  5. Haga clic en Save.

Paso 5: Inicio del Asistente de Configuración de OpenVPN

Ahora iniciaremos el asistente para simplificar la configuración del servidor OpenVPN.

  1. Navegue a VPN -> OpenVPN.
  2. Haga clic en la pestaña Wizards.
  3. En el primer paso del asistente, seleccione el tipo de autenticación. Para este escenario de usuarios únicos, la opción más común es Local User Access. Esto significa que los usuarios se autenticarán utilizando las credenciales almacenadas localmente en pfSense. Haga clic en Next.

Paso 6: Configuración del Servidor OpenVPN (Asistente)

El asistente le guiará a través de varias configuraciones clave:

  • Tipo de Servidor: Ya seleccionado como "Local User Access".
  • Entidad Certificadora (CA): Seleccione la CA que creó anteriormente.
  • Certificado de Servidor: Seleccione el certificado de servidor que generó.
  • Protocolo y Puerto:
    • Protocol: Elija UDP (generalmente preferido por su menor latencia) o TCP.
    • Port Number: El puerto por defecto es 1194. Es recomendable, por seguridad, elegir un puerto alto y no estándar, por ejemplo, 4433 o 8443. Este es el puerto que deberá abrir en su router ISP.
    • Device Mode: Seleccione tun (para tráfico de capa 3).
  • Configuración de Criptografía: El asistente presenta opciones predeterminadas para algoritmos de cifrado y autenticación. Generalmente, los valores por defecto son seguros y suficientes. Evite modificar estos ajustes a menos que tenga un conocimiento profundo de criptografía.
  • Configuración del Túnel:
    • Tunnel Network: Defina la red virtual que utilizarán los clientes VPN. Esta red no debe solaparse con su red LAN ni con las redes de los clientes remotos. Un ejemplo común es 10.0.8.0/24.
    • Redirect Gateway:
      • Si marca esta opción (Yes), todo el tráfico de Internet de los clientes VPN se enrutará a través del servidor pfSense. Esto se conoce como Full-Tunnel VPN. Es útil para asegurar que todo el tráfico esté protegido y pueda ser inspeccionado.
      • Si no marca esta opción (No), solo el tráfico destinado a la red local (LAN) se enrutará a través de la VPN. El resto del tráfico de Internet saldrá directamente desde la conexión del cliente. Esto se conoce como Split-Tunnel VPN. Es más eficiente en cuanto a ancho de banda si los usuarios solo necesitan acceder a recursos internos.
    • Local Network: Especifique la dirección de su red LAN (ej: 192.168.1.0/24). Esto permite a los clientes VPN acceder a los dispositivos en su red local.
  • Configuraciones para Clientes VPN:
    • DNS Servers: Puede especificar servidores DNS que los clientes VPN utilizarán. A menudo, se utiliza la IP de pfSense en la LAN (ej: 192.168.1.1) para que actúe como servidor DNS.
    • Gateway Creation: Normalmente se deja en automático.
  • Reglas de Firewall: El asistente ofrece la opción de crear automáticamente las reglas de firewall necesarias. Se crearán dos reglas principales:
    1. Una regla en la interfaz OpenVPN para permitir todo el tráfico desde los clientes VPN.
    2. Una regla en la interfaz WAN para permitir el tráfico entrante al puerto de OpenVPN configurado.

Captura de pantalla del asistente de configuración de OpenVPN en pfSense

Haga clic en Next para completar el asistente.

Paso 7: Creación de Usuarios VPN

Ahora necesitamos crear los usuarios que se conectarán a través de la VPN.

  1. Navegue a System -> User Manager.
  2. Haga clic en el botón + Add.
  3. Rellene los siguientes campos:
    • Username: El nombre de usuario para la conexión VPN.
    • Password: Una contraseña segura.
    • Confirm password: Repita la contraseña.
    • User Certificate: Marque la casilla "Click to create a user certificate". Esto es crucial, ya que los usuarios también necesitan un certificado individual para autenticarse.
      • Descriptive name: Un nombre para el certificado del usuario (ej: Usuario_Juan_Cert).
      • Certificate Authority: Seleccione la CA creada previamente.
      • Key length y Digest Algorithm: Deben coincidir con los de la CA.
      • Lifetime: Defina la validez del certificado del usuario.
  4. Haga clic en Save para crear el usuario y su certificado. Repita este proceso para cada usuario que necesite acceso VPN.

Paso 8: Exportación de Configuraciones para Clientes

Una vez creados los usuarios, es necesario exportar sus configuraciones para que puedan ser importadas en los clientes OpenVPN en sus dispositivos (Windows, macOS, Linux, iOS, Android).

  1. Primero, instale el paquete openvpn-client-export:
    • Navegue a System -> Package Manager.
    • Haga clic en la pestaña Available Packages.
    • Busque openvpn-client-export e instálelo.
  2. Una vez instalado, navegue a VPN -> OpenVPN.
  3. Haga clic en la pestaña Client Export.
  4. En la sección Host Name Resolution, es importante configurar cómo se resolverá el nombre del servidor VPN. Si su pfSense tiene una IP pública directamente asignada a la interfaz WAN, puede seleccionar Interface IP Address. Sin embargo, si su pfSense está detrás de otro router (NAT) o utiliza DDNS, es recomendable seleccionar Other y especificar el nombre de dominio (DDNS) o la dirección IP pública en el campo Host Name. Esto evita tener que modificar manualmente el archivo de configuración de cada cliente si la IP pública cambia.
  5. Haga clic en Save as default para guardar esta configuración.
  6. En la lista de servidores OpenVPN configurados, encontrará una sección para cada usuario creado. Para cada usuario, verá diferentes opciones de exportación (ej: "Most Client-Specific Overrides", "Inline Configurations"). Seleccione el formato de archivo .ovpn que sea compatible con su cliente OpenVPN. Normalmente, la opción "Inline Configurations" es la más universal.
  7. Descargue el archivo .ovpn generado para cada usuario. Este archivo contiene toda la configuración necesaria, incluyendo el certificado y la clave privada del usuario, así como la configuración del servidor.

Captura de pantalla de la exportación de clientes OpenVPN en pfSense

Paso 9: Configuración del Router ISP (Port Forwarding)

Este es un paso crítico que se realiza en el router de su proveedor de Internet, no en pfSense.

  1. Acceda a la interfaz de administración de su router ISP.
  2. Busque la sección de "Port Forwarding", "NAT" o "Reenvío de Puertos".
  3. Cree una nueva regla de reenvío de puertos:
    • Puerto Externo (WAN): El puerto que configuró en pfSense para OpenVPN (ej: 1194 o 4433).
    • Puerto Interno (LAN): El mismo puerto que el externo.
    • Protocolo: El protocolo que seleccionó en pfSense (UDP o TCP).
    • Dirección IP Interna (LAN): La dirección IP de la interfaz LAN de su servidor pfSense (ej: 192.168.1.1).
  4. Guarde la configuración en el router ISP.

Paso 10: Instalación y Configuración del Cliente OpenVPN

En el dispositivo del usuario (ordenador, teléfono móvil, etc.), deberá instalar un cliente OpenVPN y luego importar el archivo .ovpn exportado desde pfSense.

  1. Descargue e instale el cliente OpenVPN: Visite el sitio web oficial de OpenVPN (openvpn.net) o la tienda de aplicaciones de su sistema operativo para descargar e instalar el cliente OpenVPN adecuado.
  2. Importe el archivo .ovpn: Abra el cliente OpenVPN e importe el archivo .ovpn que descargó. La mayoría de los clientes tienen una opción para importar perfiles.
  3. Conéctese: Seleccione el perfil importado y haga clic en "Conectar". El cliente le pedirá el nombre de usuario y la contraseña que configuró en pfSense.

Si todo se ha configurado correctamente, el cliente OpenVPN establecerá una conexión segura con su servidor pfSense.

Cliente OpenVPN para Windows: Guía de instalación y configuración sencilla

Consideraciones Adicionales y Solución de Problemas

Reglas de Firewall en pfSense

Aunque el asistente crea reglas básicas, es posible que necesite refinar las reglas de firewall para un control de acceso más granular.

  • Interfaz OpenVPN: Aquí se definen las reglas que controlan qué tráfico pueden generar los clientes VPN hacia su red interna. Por ejemplo, si un usuario solo debe acceder a un servidor específico en la LAN, creará una regla en la interfaz OpenVPN que permita el tráfico solo a la IP y puerto de ese servidor.
  • Interfaz LAN: Asegúrese de que haya reglas en la interfaz LAN que permitan el tráfico entrante desde la red VPN hacia la LAN. El asistente generalmente crea una regla para esto.

NAT Saliente (Outbound NAT)

En algunos escenarios, especialmente si utiliza direcciones IP privadas en su red LAN y la VPN, podría ser necesario configurar el NAT saliente en pfSense.

  1. Vaya a Firewall -> NAT -> Outbound.
  2. Cambie el modo a "Manual Outbound NAT Rule Generation".
  3. Agregue una regla que mapee el tráfico de su red VPN (Tunnel Network) hacia la dirección IP de la interfaz WAN de pfSense. Esto asegura que el tráfico de la VPN salga a Internet con una IP de origen válida desde la perspectiva de pfSense.

Problemas Comunes y Soluciones

  • No se establece la conexión:
    • Verifique que el puerto de OpenVPN esté correctamente reenviado en el router ISP.
    • Asegúrese de que el servicio OpenVPN esté iniciado en pfSense (Status -> Services).
    • Compruebe los logs de OpenVPN en pfSense (Status -> System Logs -> OpenVPN) para identificar errores.
    • Verifique que la dirección IP pública o el nombre de dominio en el archivo .ovpn del cliente sean correctos.
  • Conexión establecida pero sin acceso a la LAN:
    • Revise las reglas de firewall en la interfaz OpenVPN y LAN en pfSense.
    • Asegúrese de que la "Local Network" esté correctamente configurada en el servidor OpenVPN de pfSense.
    • Si utiliza "Full-Tunnel", verifique la configuración de NAT saliente.
  • Problemas de DNS:
    • Asegúrese de que los servidores DNS estén correctamente especificados en la configuración del servidor OpenVPN en pfSense, o que pfSense mismo esté funcionando como servidor DNS para la red VPN.

Gestión de Usuarios y Revocación de Certificados

pfSense permite una gestión sencilla de los usuarios VPN. Puede añadir, modificar o eliminar usuarios y sus certificados en System -> User Manager. Si un empleado deja la empresa o un dispositivo se pierde, es crucial revocar su certificado para inhabilitar el acceso VPN. Esto se hace en System -> Certificate Manager -> Certificate Revocation Lists (CRLs).

La implementación de una VPN segura con pfSense y OpenVPN es una inversión valiosa para garantizar la conectividad remota protegida. Siguiendo estos pasos, podrá establecer un entorno VPN robusto y fiable para sus necesidades de acceso individual.

tags: #un #solo #usuario #se #puede #conectar