OpenVPN en pfSense

¿Qué es un servidor VPN?

Se trata de una herramienta importante dentro del ámbito de la seguridad y la privacidad en línea. Un servidor VPN nos facilita una conexión segura y cifrada entre un dispositivo cliente (PC, smartphone) y una red privada a través de Internet. Por tanto, su función principal es establecer un túnel seguro que cifra el tráfico de datos entre el cliente y el servidor, proporcionando privacidad y seguridad en la comunicación.

Al conectar un dispositivo a un servidor VPN, todo el tráfico se enruta a través de este túnel, haciendo que la información que se transmite sea más segura.

La función principal de un servidor VPN es la de crear una capa de privacidad y seguridad al enrutar el tráfico a través de una conexión cifrada. Cuestión especialmente importante al utilizar redes públicas, como las de bares, aeropuertos o cualquier otro sitio con acceso WiFi, donde los datos pueden ser vulnerables a ataques cibernéticos.

Por otra parte, un servidor VPN permite a los usuarios acceder a una red privada de manera remota, permitiendo el acceso a recursos como archivos compartidos o aplicaciones internas.

Protocolos

Existen diferentes tipos de protocolos que pueden ser utilizados por los servidores VPN para establecer la conexión segura. Algunos son:

  • OpenVPN

  • IPSec

  • L2TP/IPSec

También conocemos de la existencia de servicios VPN gestionados por terceros que ofrecen acceso a servidores VPN en ubicaciones geográficas diversas, permitiendo a los usuarios eludir restricciones geográficas y proteger su privacidad en línea.

OpenVPN

Es una implementación de código abierto del protocolo VPN que nos permite establecer conexiones seguras a través de Internet.

Cuando se menciona la "OpenVPN integrada en pfSense", se refiere a la capacidad de pfSense para actuar como un servidor OpenVPN. Con esta integración, pfSense permite a los usuarios configurar y administrar conexiones VPN utilizando el protocolo OpenVPN directamente desde la interfaz de administración web de pfSense.

Al utilizar OpenVPN en pfSense, los usuarios pueden aprovechar características como la autenticación de usuarios, la encriptación del tráfico y la creación de túneles seguros para el acceso remoto a la red o la interconexión segura de redes a través de Internet. La integración de OpenVPN en pfSense facilita la implementación de soluciones VPN para garantizar la privacidad y seguridad de las comunicaciones en la red.

¿Qué necesitamos para configurar un servicio de VPN en pfSense?

A la hora de configurar una VPN necesitamos recorrer los siguientes pasos:

  1. Instalar el plugin OpenVPN Client para generar la configuración

  2. Crear los certificados digitales en el propio pfSense

    1. Crear la CA (Autoridad de Certificación)

    2. Crear el certificado del servidor OpenVPN

  3. Configurar el servidor OpenVPN

  4. Configurar las reglas en el firewall para permitir acceso

  5. Exportar el archivo de configuración OpenVPN para los clientes

  6. Comprobar estado del servicio y de los clientes conectados

Instalar el plugin OpenVPN client

Lo primero es descargar el paquete openvpn-client-export y para ello vamos a System - Package Manager - Available Packages y buscamos el paquete openvpn-client-export y pulsamos en Install.

Instalación finalizada del paquete pfsense-client-export

Crear los certificados digitales en el propio pfSense

Crear la CA (Autoridad de Certificación)

Una CA es, una entidad confiable responsable de emitir y revocar certificados digitales utilizados para transacciones y firmas electrónicas. Abrimos la interfaz del pfSense y navegamos hasta System - Certificate Manager y hacemos clic en Agregar.

Creamos el certificado manteniendo casi todas las opciones por defecto y asignando un nombre.

Opción
Descripción

Descriptive name

OpenVPN_CA

Common name

OpenVPN_CA

Una vez realizado los cambios y guardando nos aparece nuestro certificado:

Certificado de openvpn

Crear el certificado del servidor OpenVPN

En el apartado siguiente, System – Certificates clicamos en agregar un certificado:

Opción
Descripción

Method

Create an Internal Certificates

Descriptive name

OpenVPN_Certificates

Common Name

OpenVPN_Certificates

Certificate type

Server certificate

Aquí nos tiene que aparecer nuestra CA previamente creada

Open VPN server certificate

Configurar el servidor OpenVPN

Ahora vamos a configurar el servidor OpenVPN a donde se van a conectar los clientes para lo cual, nos vamos a VPN - OpenVPN - Servers y clicamos en Add y rellenamos las opciones:

Opción
Descripción

Description

OPENVPN_Server

Server mode

Remote Access (SSL/TLS + User Auth)

Protocol

UDP on IPv4 only

Interface

WAN

Puerto

5194 (cambiamos el puerto por defecto)

Peer Certificate Authority

OpenVPN_CA (seleccionamos el nuestro)

Server certificate

OPENVPN_Certificate (Server: Yes, CA: OPENVPN_CA)

NUestro certificado de openVPN
  • Por último, debemos seleccionar la red que vamos a utilizar para comunicar el cliente con el pfSense. En mi caso voy a seleccionar la red: 10.4.44.0/24, así como las redes o IP internas a las que tendrá acceso el cliente cuando se conecte por la VPN.

  • Hacemos clic en Redirect IPv4 Gateway: Force all client-generated IPv4 traffic through the tunnel. para seleccionar esta opción

  • Podemos seleccionar la opción Inter-client communication para permitir comunicación entre clientes de la VPN.

  • Podemos seleccionar la opción Duplicate connection para permitir varias conexiones de un mismo cliente.

Algunas de las opciones a seleccionar
  • Podemos proporcionar el dominio a los clientes y los DNS a los que poder acceder.

    • DNS Server 1: 1.1.1.1

    • DNS Server 2: 8.8.8.8

  • Seleccionamos la opción de Verbosity level: 3 (recommended).

  • Guardamos y listo!

OpenVPN certificate

Comprobar el servicio

Nos dirigimos a Status - Service y podemos comprobar los servicios activos y recién habilitados.

Status - Service

Configurar las reglas en el firewall para permitir acceso

Ahora nos toca crear una regla en la WAN que nos permita el acceso a través del puerto de VPN.

Regla en "Firewall - Rules - WAN"

Para ello, clicamos en Firewall - Rules - WAN y vamos a crear la regla, clicando donde dice Add rule to the top of the list.

Crear la regla en firewall - rules - WAN

Seleccionamos las opciones siguientes, para una configuración básica:

Opción
Descripción

Action

Pass

Interface

WAN

Protocol

UDP

Source

Any

Destination

Any

Destination port range

5194

Logs

Seleccionamos la opción de guardar

Description

OPENVPN:RULE

Una vez realizados los cambios, guardamos y se nos muestra como sigue:

Regla en WAN para permitir el tráfico VPN

Regla para permitir todo el tráfico VPN

Ahora nos vamos a la pestaña de OpenVPN para crear otra regla que permita todo el tráfico. Seleccionamos todos los protocolos (ANY) y desde cualquier origen (ANY) a cualquier destino (ANY).

Seleccionamos también la opción de almacenar los logs del tráfico. Guardamos y se nos crea la regla.

Regla para permitir todo el tráfico en la OpenVPN

Exportar el archivo de configuración OpenVPN para los clientes

Crear un cliente para la VPN

Primero tenemos que crear un usuario nuevo, por tanto nos vamos a System - User Manager

Cerar un usuario

Creamos un nuevo usuario y clicamos en Click to create a user certificate para crear el certificado para ese usuario.

Usuario Punky creado

Una vez creado nuestro usuario de prueba (con su certificado para la VPN) ver cómo exportar los clientes VPN. Para ello seleccionamos en el menú a VPN - OpenVPN - Client Export.

Y si nos vamos al final del todo, veremos a nuestro usuario Punky.

Certificados a exportar del usuario

Comprobar estado del servicio y de los clientes conectados

Si queremos hacer una prueba podemos descargar el certificado para Android o el de OpenVPN Connect (IOS/Android).

En el caso de utilizar un dispositivo móvil, tendríamos que instalar la OpenVPN for Android

OpenVPN for Android

Una vez tengamos lista la app, podemos exportar a nuestro dispositivo móvil el certificado del cliente VPN que hayamos creado. En mi caso, sería el usuario punky

Certificado de usuario Importado en la aplicación OpenVPN

Nos conectamos a la VPN y se nos muestra el log:

Usuario conectado a la VPN de pfSense

Y si nos vamos, por ejemplo al navegador y escribimos la IP

Accediendo a pfSense en el navegador

Ya podemos comprobar la conexión al firewall. Claramente que nos falta mucho. Se trata de una conexión básica. Lo siguiente a probar es configurar el acceso de un usuario a un equipo de la red detrás del firewall.

https://www.cloudflare.com/es-es/learning/network-layer/what-is-ipsec/

https://www.pfsense.org

https://docs.netgate.com/pfsense/en/latest/recipes/rfc1918-egress.html

Last updated

Was this helpful?