Configuración de VPN Site-to-Site con pfSense: Conectando Redes de Forma Segura

pfSense, una potente distribución de firewall basada en el sistema operativo FreeBSD, se erige como una solución versátil para la gestión de redes, ofreciendo funcionalidades que van desde el NAT y CARPA hasta la implementación de VPNs robustas. Su capacidad para actuar como firewall clásico, servidor DNS dinámico, servidor DHCP y proxy lo convierte en una herramienta indispensable para administradores de sistemas que buscan optimizar y proteger sus infraestructuras de red. En este artículo, profundizaremos en la configuración de una VPN Site-to-Site utilizando pfSense, una metodología que permite conectar de forma segura dos o más ubicaciones físicas, unificándolas en una única red lógica.

Diagrama de red Site-to-Site

Comprendiendo pfSense y las VPNs Site-to-Site

Antes de adentrarnos en los aspectos técnicos de la configuración, es fundamental comprender qué son pfSense y las VPNs Site-to-Site, así como sus beneficios inherentes. pfSense no es meramente un firewall; es una plataforma integral de seguridad de red que permite implementar mecanismos avanzados, incluyendo una variedad de protocolos VPN como PPTP, IPsec y OpenVPN, así como portales cautivos. La distribución facilita la creación de túneles seguros entre diferentes redes, garantizando la confidencialidad e integridad de los datos transmitidos.

La VPN Site-to-Site, a diferencia de una VPN de punto a punto (Point-to-Site) que conecta a empleados remotos a una oficina central, se enfoca en enlazar redes enteras. Esto significa que solo las puertas de enlace en las subredes remotas necesitan ser configuradas, eliminando la necesidad de configurar cada nodo de red individualmente. Las ventajas de esta aproximación son significativas: mejora la colaboración entre oficinas, permite compartir recursos de manera segura y centraliza la gestión del tráfico. En esencia, conecta dos oficinas como si estuvieran en una sola red.

Preparando el Terreno: Requisitos y Consideraciones Iniciales

Para emprender la configuración de una VPN Site-to-Site con pfSense, es crucial tener en cuenta una serie de requisitos y realizar ciertas verificaciones previas. La premisa fundamental es que disponemos de dos ubicaciones físicas, cada una con una conexión a Internet operativa. En uno de los extremos, una máquina con pfSense actuará como servidor VPN, mientras que en el otro, un router con Tomato (que debe disponer de almacenamiento persistente) funcionará como cliente.

Un punto crítico a considerar es la elección de un rango de red privado que no esté actualmente en uso o configurado en ninguna de las ubicaciones. Esto es esencial para evitar conflictos de enrutamiento y garantizar la correcta identificación de cada red. Por ejemplo, si la Sede 1 utiliza el rango 10.0.0.X, la Sede 2 debería emplear un rango distinto, como 20.0.0.X. Esta diferenciación de rangos de IPs es vital para identificar una red con otra al momento de querer establecer comunicación entre sus equipos.

Además, es indispensable contar con acceso total a los routers de ambas ubicaciones para poder abrir los puertos necesarios. Si una de las conexiones no dispone de una dirección IP pública fija o no se tiene la capacidad de configurar el reenvío de puertos, la implementación de la VPN Site-to-Site se vuelve inviable.

Configuración del Servidor OpenVPN en pfSense

El primer paso en la configuración de nuestra VPN Site-to-Site es establecer el servidor OpenVPN en pfSense. Accedemos a la interfaz web de pfSense, generalmente introduciendo la dirección IP del servidor en el navegador (por ejemplo, admin/pfsense como credenciales por defecto).

Una vez dentro del panel de control, nos dirigimos a la sección Interfaces -> Assignments. Aquí, se crearán nuevas interfaces, y se asignará un nombre del tipo OPTX (donde X es un número). Pulsamos sobre dicho nombre para proceder a su configuración. Es importante asignar una dirección IP a la interfaz que "mira" hacia la red local. Para ello, en el menú del programa, vamos a Interfaces -> LAN. En este apartado, definimos la red LAN interna y la dirección IP del router. Por ejemplo, podemos asignar la red 10.0.0.0/24 y definir la IP del router como 10.0.0.3/24. Guardamos los cambios y aplicamos.

Posteriormente, debemos habilitar el servidor DHCP en la interfaz LAN, configurando un rango de direcciones para los clientes, por ejemplo, de 10.0.0.100 a 10.0.0.200.

Ahora, procedemos con la configuración de OpenVPN. En el menú principal, seleccionamos VPN -> OpenVPN. Si deseamos facilitar la distribución de la configuración a los clientes, es recomendable verificar la instalación del paquete openvpn-client-export desde System > Package Manager > Available Packages.

Utilizaremos el Wizard para configurar nuestro servidor OpenVPN. Durante el proceso, podremos elegir el método de autenticación; para simplificar, optaremos por usuarios locales. Al finalizar el Wizard, se presentarán las configuraciones del servidor, con la posibilidad de modificarlas posteriormente. Para que los clientes puedan autenticarse, es necesario generar usuarios VPN desde System -> User Manager -> Users -> +ADD.

Una vez configurado el servidor, es crucial verificar que la interfaz WAN esté aceptando peticiones entrantes en el puerto especificado en el valor «Local port» de la configuración del servidor OpenVPN.

Interfaz de configuración de OpenVPN en pfSense

Configurando las Reglas de Firewall

La correcta configuración de las reglas de firewall es fundamental para el funcionamiento y la seguridad de nuestra VPN. Dentro de pfSense, nos dirigimos a Firewall -> Rules.

Primero, en la pestaña OpenVPN, crearemos una regla para permitir el tráfico desde la red del túnel OpenVPN hacia la red LAN. La regla típicamente tendrá las siguientes características:

  • Action: Pass
  • Interface: OpenVPN
  • Protocol: TCP (o UDP, dependiendo de la configuración del túnel)
  • Source: Network, especificando la red del túnel VPN (por ejemplo, 192.168.1.0/24 si ese es el rango configurado para el túnel).
  • Destination: Address or Alias, especificando una IP o alias de un servidor en la LAN al que se desea dar acceso (por ejemplo, 10.0.0.14).
  • Destination Port Range: Un puerto específico o un rango personalizado si aplica (por ejemplo, 5601 para un servidor web).
  • Description: Un nombre descriptivo, como "Permitir acceso OpenVPN a servidor web en LAN".

A continuación, en la pestaña LAN, debemos asegurarnos de que exista una regla que permita el tráfico desde la red OpenVPN hacia la LAN. Similar a la regla anterior, pero con:

  • Interface: LAN
  • Source: Network, especificando la red del túnel VPN (192.168.1.0/24).
  • Destination: LAN net.
  • Description: "Permitir acceso desde OpenVPN a LAN".

Es posible que se requiera una regla adicional para denegar la transmisión de tráfico DHCP a través del túnel si se desea este comportamiento específico, asegurando que cada sitio gestione su propio servidor DHCP.

Si el tráfico no fluye correctamente, puede ser necesario revisar la configuración de Firewall > NAT > Outbound. Si está en modo automático, pfSense suele manejar esto. Sin embargo, si se requiere un control más granular, se puede activar el modo "Manual Outbound NAT Rule Generation" y crear reglas específicas. Una regla típica para permitir que el tráfico de la red VPN acceda a la LAN podría ser:

  • Interface: LAN
  • Source: La red del túnel VPN (192.168.1.0/24).
  • Destination: La red LAN (10.0.0.0/24).
  • Translation: Interface Address.
  • Description: "NAT para acceso OpenVPN a LAN".

Una vez aplicados todos los cambios, es importante guardar la configuración.

Reglas de firewall en pfSense

Configuración del Cliente VPN en Tomato

En el extremo del cliente, utilizando un router con Tomato y almacenamiento persistente, la configuración se centrará en establecer la conexión con el servidor OpenVPN configurado en pfSense.

Primero, debemos obtener la clave generada en pfSense para transferirla al router remoto. Esto se puede hacer exportando la configuración del cliente desde pfSense, usualmente a través de la sección VPN -> OpenVPN -> Client Export. El paquete openvpn-client-export facilita esta tarea, proporcionando archivos de configuración (.ovpn) adaptados para diversos sistemas operativos y clientes.

El archivo de configuración .ovpn contendrá todos los parámetros necesarios para que el cliente Tomato se conecte al servidor. Deberemos importar este archivo en la interfaz de administración del router Tomato. Los pasos exactos pueden variar ligeramente dependiendo de la versión de Tomato, pero generalmente implican navegar a la sección de configuración de VPN, seleccionar OpenVPN y cargar el archivo de configuración.

Es fundamental que el router Tomato disponga de una dirección IP pública accesible desde Internet y que los puertos necesarios para OpenVPN (generalmente UDP 1194) estén abiertos en el firewall del router y, si es necesario, en el firewall del proveedor de servicios de Internet (ISP).

Una vez que el cliente OpenVPN esté configurado en Tomato y la conexión se establezca, podremos utilizar herramientas como ping o traceroute desde un dispositivo conectado a la red Tomato para verificar la conectividad con un dispositivo en la red pfSense (por ejemplo, ping 10.0.0.14).

pfSense IPsec Configuration: Setting up a Site-to-Site VPN Tutorial

Consideraciones sobre L2TP/IPsec en pfSense

Aunque OpenVPN es una opción robusta y popular, pfSense también soporta otros protocolos VPN, como L2TP/IPsec, que es otra alternativa viable para establecer túneles seguros, especialmente para el acceso remoto de clientes. L2TP (Layer 2 Tunneling Protocol) se encarga de establecer el túnel, mientras que IPsec proporciona la confidencialidad, autenticación e integridad de los datos.

La configuración de un servidor VPN L2TP/IPsec en pfSense ofrece beneficios en términos de seguridad y privacidad, permitiendo el acceso remoto a subredes configuradas y la redirección del tráfico de Internet a través del servidor VPN. L2TP utiliza el protocolo PPP para la conexión y soporta mecanismos de autenticación como PAP y CHAP, además de servidores RADIUS.

Sin embargo, L2TP por sí solo no presenta una criptografía robusta, lo que lo hace inseguro si no se combina con IPsec. La combinación L2TP/IPsec busca mitigar esta debilidad. Las ventajas de este protocolo radican en su seguridad, especialmente cuando se utiliza cifrado AES de 256 bits, y su compatibilidad con la mayoría de los sistemas operativos. La configuración de L2TP/IPsec puede ser sencilla, lo que ahorra tiempo y costes.

Diagrama de capas L2TP/IPsec

Configuración de L2TP/IPsec en pfSense

Para configurar L2TP/IPsec en pfSense, generalmente se requieren tres acciones principales:

  1. Habilitar los "Mobile Clients": En la configuración de OpenVPN, se debe habilitar el soporte para "Enable IPsec Mobile Client Support". Se puede elegir "Local Database" para la autenticación. En este menú, se configura el protocolo IPsec correctamente para usarlo con L2TP. La elección del modo de negociación (Negotiation Mode) es importante; Aggressive es menos seguro pero más flexible que Main. pfSense soporta cifrados fuertes, pero la compatibilidad con los clientes VPN es un factor limitante. Es recomendable probar configuraciones basadas en las "propuestas recibidas" de IPsec de los clientes para seleccionar la más segura.

  2. Configurar las Reglas de Firewall: En Firewall / Rules, se crean reglas específicas para permitir o denegar el tráfico a ciertas subredes. Para una primera conexión y para evitar fallos de configuración iniciales, se puede crear una regla de "pass any any any" y aplicar cambios.

  3. Configurar Usuarios y Contraseña: Una vez configurado el servidor, se debe ir a la sección de Users para crear un usuario y contraseña para el acceso VPN. Se puede definir una contraseña secreta (Secret o Pre-Shared Key - PSK) que debe ser la misma tanto en el servidor como en el cliente. Por ejemplo: Secret: 1234clavel2tp.

La configuración del cliente VPN (en un smartphone Android, por ejemplo) requerirá la introducción de la dirección IP del servidor pfSense, el tipo de VPN (L2TP/IPsec PSK), el nombre de usuario, la contraseña y la clave precompartida.

Solución de Problemas Comunes en L2TP/IPsec

  • Error de conexión (Timeout): Revisar las reglas del Firewall en la WAN para el puerto 1701 con UDP.
  • Fallo de autenticación: Verificar la contraseña precompartida (PSK) o la contraseña de usuario, tanto en el servidor como en el cliente.
  • El cliente conecta pero no navega o no accede a la LAN: Suele ser un problema de enrutamiento o de reglas en el firewall.

Consideraciones de Seguridad y Mantenimiento

Independientemente del protocolo VPN elegido, la seguridad y el mantenimiento son aspectos cruciales. La seguridad de L2TP/IPsec, por ejemplo, depende directamente de los algoritmos de cifrado configurados. Es vital utilizar algoritmos modernos como AES-256.

La educación de los usuarios es otro punto importante. Un buen uso del sistema por parte de los usuarios es la primera barrera de seguridad. Organizar sesiones formativas antes de cualquier instalación puede prevenir errores y vulnerabilidades.

La monitorización constante del sistema es esencial para detectar cualquier anomalía o fallo. Si algo no está funcionando correctamente, el sistema debe estar preparado para generar un aviso, independientemente de si el problema proviene de un usuario o del propio sistema.

El mantenimiento y las actualizaciones del sistema son igualmente importantes. Los desarrolladores lanzan constantemente actualizaciones que mejoran el rendimiento y la seguridad. Mantener el equilibrio entre la configuración inicial, el mantenimiento y las actualizaciones garantiza el funcionamiento óptimo del sistema.

En resumen, pfSense ofrece una plataforma robusta y flexible para la configuración de VPNs Site-to-Site y de acceso remoto. Al comprender los requisitos, seguir los pasos de configuración adecuados para el protocolo elegido (OpenVPN o L2TP/IPsec) y prestar atención a las reglas de firewall y a las consideraciones de seguridad, se puede establecer una red segura y eficiente que conecte ubicaciones de forma fiable. La potencia de pfSense va más allá de ser un simple firewall; es un guardián de red que, una vez dominado, abre un abanico de posibilidades para la gestión avanzada de redes.

tags: #acceder #a #red #con #vpn #pfsense