Hoy vamos a ver cómo solucionar un problema de acceso de los usuarios de como acceder a una VPN IPsec usando OpenVPN desde pfSense, a los recursos que estén en la otra parte de un túnel IPsec.
En esta ocasión usamos el modo de túnel de IPsec, para unir dos sedes que queramos conectar mediante este protocolo dentro de nuestro firewall pfSense.
Como funciona IPsec
Las conexiones Ipsec, incluyen los siguientes pasos:
Intercambio de claves
Encabezados y tráileres de los paquetes
Autenticación
Encriptación
Transmisión
Desencriptación
Protocolos utilizados por IPsec
Encabezado de autenticación (AH)
Protocolo de seguridad de encapsulación (ESP)
Asociación de seguridad (SA)
Protocolo de Internet (IP)
Configurar Firewall para acceder a una VPN IPsec usando OpenVPN
Si tienes dos sites conectados con IPsec VPN, y también tiene una configuración OpenVPN en el pfSense principal, también puede permitir que sus equipos conectados al OpenVPN, accedan a los equipos del otro extremo del IPsec.
Normalmente, solo se tiene acceso a la red local a la que se conecta OpenVPN, pero con unos simples pasos puede permitir el acceso a todas las redes conectadas.
Si ya tiene la VPN IPSec y configurado OpenVPN, solo se necesita agregar algunas cosas.
La configuración para este ejemplo es:
SiteA con un rango de red 192.168.1.0/24
SiteB con un rango de red 192.168.2.0/24)
OpenVPN usa el rango de red 172.20.50.0/24
SiteA tiene la configuración de OpenVPN.
Tanto SiteA como SiteB tienen configuración IPsecVPN.
Configuración de una segunda Fase 2
Debe agregar otra entrada de Fase 2 en ambos sitios, y debe agregar la red SiteB en la configuración de OpenVPN.
Tenemos que ir al pfSense del Site1 a VPN -> IPSec y expandimos las entradas de la Fase 2
Abra los túneles IPSEC en el SiteA > Copie la entrada de la Fase 2 > Cambiar el menú desplegable de RedLocal a Red > Agrega el rango de IP que usa OpenVPN, por ejemplo: 172.20.50.0/24
Cambie el nombre en Descripción > Guardar y aplicar
Abra los túneles IPSEC en el SiteB > Copie la entrada de la Fase 2 > Cambiar el menú desplegable de RedRemota a Red > Agrega la IP que usa OpenVPN, por ejemplo: 172.20.50.0/24
Cambiar nombre en Descripción > Guardar y aplicar
Edite su servidor OpenVPN > En RedlocalIPv4 > Agregue en la red del SiteB. Separe varias redes con un, por ejemplo 192.168.1.0/24,192.168.2.0/24
Una vez que tengas los dos site configurados deberás de comprobar que el SiteB es accesible desde la conexión de OpenVPN del SiteA.
Recuerda que si solo tienes abiertos X puertos en la interface del OpenVPN (que valga de consejo, así deberías de tenerlo configurado), deberás de agregar aquellos que sean necesarios para poder acceder al SiteB.
Acceder a la red IPSEC desde el firewall pfSense
También te puedes encontrar que desde el Firewall de SiteA no tengas acceso a la red del SiteB pese a que el túnel este levantado y sea completamente funcional, para ello, debes de realizar lo siguiente:
Vamos a System -> Routing y en el apartado Gateways, añadimos una nueva.
Selecciona LAN en Interface
Pon la LAN IP Adress en Gateway
Deshabilita Gateway Monitoring
Guardamos
Ahora vamos a Static Routes y añadimos una
En Destination Network, ponemos la red de la red IPSEC
Selecciona la LAN IP Gateway que hemos generado anteriormente
Guardamos y ya lo tenemos
Recomendaciones de Seguridad Extras:
Como siempre que instalamos un nuevo servicio en nuestro Firewall, es recomendable adaptarlo a la seguridad del mismo, por ello es importante realizar las siguientes acciones para que no tengamos un agujero de seguridad en el mismo:
Configura las reglas como tengas configuradas las de las demás interfaces
Recuerda agregar OpenVPN a pfBlocker, Squid, Snort, Suricata, etc…
Usa un solo usuario por persona
Elimina aquellos usuarios y certificados que ya no se estén usando
Habilitar GEOIP en la regla del puerto de OpenVPN para que solo sea accesible desde los países que deseemos
Utiliza contraseñas fuertes y robustas tanto para establecer el túnel IPsec como para los usuarios del OpenVPN
Utiliza una Pre-Shared Key en el túnel IPsec igualmente fuerte
Mantén una buena política de reglas en el Firewall, así como en las conexiones IPsec y OpenVPN
Nunca dejes reglas configuradas tipo any -> any, eso es como no tener nada de seguridad
Utiliza siempre las conexiones OpenVPN para conectarte a redes que no sepas quien las gestiona y quien puede estar detrás
¿Por qué confiar en DCSeguridad?
Recuerda que la utilización de un firewall en una empresa es indispensable, así como un correcto mantenimiento del mismo. Debes usar siempre una conexión VPN para conectarte tanto de sede a sede, como de fuera de la oficina a los recursos de la empresa y nunca debes de tener ningún puerto configurado al exterior.
Hoy os quiero dejar un tutorial de cómo instalar WireGuard en pfSense. Muchos usuarios se quejan de la lentitud de OpenVPN en las conexiones cuando enrutamos todo el tráfico a través del túnel, y con esta solución conseguimos una mayor velocidad con la misma seguridad.
Descargar e Instalar WireGuard en pfSense
Primeramente, debemos instalar el paquete de WireGuard en nuestro firewall, ya que, aunque en alguna versión anterior estaba integrado en pfSense, a día de hoy no está, y debemos instalarlo, para ello hacemos lo siguiente:
Vamos a System -> Package Manager
Available Packages
Buscamos el paquete de WireGuard y lo instalamos
Esperamos que termine y ya lo tendríamos instalado
Ahora vamos a Proceder con la configuración
Nos vamos a VPN y Wireguard ahí tenemos que hacer lo siguiente:
Entramos en Settings
Habilitamos WireGuard y Guardamos
Configurar un Tuunel
Yo aquí, os recomiendo que uséis esta página: https://www.wireguardconfig.com/, ya que os da las configuraciones tanto de los túneles como de los peers.
Listen Port: 51820
Número de Clientes a vustra elección, tantos como necesitéis
CIDR, la red que vais a usar para el túnel VPN por ejemplo 192.168.10.1/24
Client Allowed IP: Aqui temenos dos opciones
Si queremos hacer un túnel completo, en que nuestros clientes salga toda su navegación por nuestro firewall, debemos de usar la siguiente IP: 0.0.0.0/0, ::/0
Si por el contrario, queremos que accedan a los recursos de nuestra red, pero todo lo que sea fuera vaya por su propia conecion, debemos establecer las redes de nuestro firewall a las que queremos que tenga acceso, por ejemplo 192.168.0.0/24, 192.168.3.0/24, etc.
Endpoint: debéis de poner la IP pública del firewall seguido del puerto 0.0.0.0:51820
DNS: Poner el DNS que use el firewall y en definitiva se use en la red.
Post-Up rule se deja en blanco
Post-Down rule se deja en blanco
Marcar la opción de Use Pre-Shared Keys (Enhanced Security), para darle un punto más de seguridad
Dar a Generate Config y voila, ya tienes las configuraciones
Descárgate el archivo ZIP y guárdalo en un lugar seguro.
Ahora volvemos a nuestro pfSense y vamos a VPN -> WireGuard -> Tunnels
Add Tunnel
Le ponemos el nombre
Listen Port, dejamos el 51820 o usamos el que deseemos y hayamos usado en el paso de la creación de las claves
Private KEY, tenemos que copiar el private key de la opción Server y nos genera automáticamente la Public Key
Inteface Adress, le ponemos la IP de la red que hayamos elegido y su mascara por ejemplo 192.168.10.1/24
Le damos a Save Tunnel y ya tenemos el túnel creado, ahora a por el siguiente paso
Creación de los Peers
Ahora nos vamos a Peers
Add Peer, este paso deberás repetirlo tantas veces como clientes hayas creado
Tunnel: Seleccionamos el tunnel que hemos creado anteriormente
Descripción, yo recomiendo poner el nombre del usuario
Keep Alive dejarlo en blanco
Public Key, copiamos y pegamos el Public Key generado para este usuario Client 1
Pre-shared Key, copiamos y pegamos la que se ha generado para Client 1
Allowed IPs copiamos la IP que se ha generado para Client 1
Guardamos y salimos
Añadir la Interface de WireGuard
Ahora, debemos agregar la nueva interface de WireGuard, para ello:
Vamos a Interfaces -> Assigments
Available network ports, desplegamos y añadimos tun_wg0 y le damos +Add
Entramos en la nueva Interface creada la habilitamos y le ponemos un nombre
IPv4 Configuration Type -> Static IPv4
IPv4 Adrees, le ponemos la IP de la red que hayamos elegido en el paso 3 al configurar el tunnel con su mascara 192.168.10.1/24
Guardamos y ya tenemos generada la Interface
Configurar Outbound
Para que nuestra VPN Wireguard funcione correctamente tenemos que tener bien configurado el Outbound del NAT, para ello, hacemos lo siguiente:
Vamos a Firewall -> NAT -> Outbound
Outbound Mode, lo ponemos en Hybrido
Y añadimos una nueva regla
Interface WAN
IPv4
Protocolo any
Source elegimos Network y ponemos la red que hayamos asignado en la configuración del servidor de WireGuard por ejemplo 192.168.10.0/24
El destino lo dejamos en Any y guardamos
Generar reglas
Ahora toca generar las reglas del firewall, yo os recomiendo que primeramente hasta que consigáis conectar, dejéis todo any -> any y una vez que ya estéis seguros de que está funcionando correctamente el túnel, securizar bien la salida de esta nueva interface al igual que tenéis las demás interfaces configuradas, una buena opción es usar las reglar flotantes para aplicarlas a todas las interfaces.
Para agregar la regla:
Firewall -> Rules
Vamos a la interface de WireGuard
Le damos a Add
Protocol ANY
Guardar
Esto es la regla Any -> Any de la que antes os comentaba, cuando llegues al final, y veas que todo funciona correctamente, recuerda securizar bien esta nueva interface.
Abrir puerto de WireGuard
Ahora vamos a proceder a abrir el puerto que hayamos elegido en la configuración del Tunnel para que nuestros clientes puedan conectar a nuestro servidor VPN WireGuard.
Firewall NAT
ADD
Inteface WAN
Destination WAN Address
Redirect Target Port: El puerto elegido para el túnel
Guardamos y aplicamos cambios
Probar dispositivos
Para configurar los dispositivos, es muy sencillo, solo tienes que bajarte la aplicación de WireGuard, para tu dispositivo, abajo dejamos los enlaces y o bien capturar el QR del cliente que desees, o enviar el archivo de configuración creado en la página de WireGuard, le das a conectar y comprueba en: VPN -> WireGuard -> Status que los peers se conectan correctamente.
Como siempre que instalamos un nuevo servicio en nuestro Firewall, es recomendable adaptarlo a la seguridad del mismo, por ello es importante realizar las siguientes acciones:
Configura las reglas como tengas configuradas las de las de mas interfaces
Recuerda agregar WireGuard a pfBlocker, Squid, Snort, Suricata, etc…
Comparte cada clave con quien vaya a usarla
Elimina aquellos peers que ya no se utilicen
Habilitar GEOIP para que solo sea accesible desde los países que deseemos
Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional
Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.