pfSense
- Introducción y requisitos mínimos
- Instalación y configuración en Proxmox
- Instalación y configuración
- Dynamic DNS
- Firewall
- pfSense VPN
Introducción y requisitos mínimos
Es una distribución Open Source basada en FreeBSD para el uso de Firewall y Router. Ademas de ser una potente distribución, incluye una gran lista de paquetes que permiten expandir fácilmente las funcionalidades sin comprometer la seguridad del sistema.
Este software emplea un cortafuegos SPI (Stateful Packet Inspection) basado en reglas. Este es un mecanismo de seguridad avanzado que comprueba los paquetes y realiza un seguimiento del estado de las conexiones de red.
No solamente dispone de un potente firewall para mitigar y/o bloquear los ataques DoS y DDoS, sino que también dispone de un avanzado IDS/IPS como Snort y Suricata.
Características principales
Firewall: Filtrado por fuente y destino IP, protocolo IP, puerto de origen y destino para el tráfico TCP y UDP.
- NAT: 1: 1 NAT para las direcciones IP individuales o subredes enteras.
- Alta disponibilidad:La combinación de CARP, pfsync, y su sincronización en la configuración proporciona una funcionalidad de alta disponibilidad.
- Multi-Wan: la funcionalidad multi-WAN permite el uso de múltiples conexiones a Internet, con balanceo de carga y / o recuperación de fallos, para mejorar la disponibilidad de Internet y la distribución del ancho de banda.
- Server Load Balancing: utilizado para distribuir la carga entre varios servidores.
- Virtual Private Network (VPN). IPsec, OpenVPN, WireGuard, TailScale, etc.
- PPPoE Server: Una base de datos de usuario local puede ser utilizada para la autenticación y también se admite la autenticación.Informes y Monitorización. Gráficos RRD, Información en tiempo real
- DNS Dinámico: se incluye un cliente de DNS dinámico para permitir que registre tu dirección IP pública con una serie de proveedores de servicios de DNS dinámicos.
- Captive Portal: permite forzar la autenticación, o redirección a un clic a través de la página de acceso a la red.
- DHCP Server y Realy
Requisitos mínimos
Los requisitos mínimos oficiales para pfSense son:
- Una CPU compatible con amd64 (x86-64) de 64 bits.
- 512 MB de RAM.
- 8 GB de espacio libre en disco duro.
- Al menos una interfaz de red compatible (1 interfaz no es muy práctica).
- Una unidad USB de arranque con al menos 1 GB de espacio para la instalación
A partir de estos requisitos mínimos se deberian de tener en cuenta estos factores:
- Cuanto más tráfico tenga (red corporativa, muchos usuarios), más potente debería ser su CPU.
- Debe tener al menos dos interfaces de red disponibles. Se recomiendan más de 2. Puede arreglárselas con dos interfaces si está familiarizado con las VLAN.
- Se recomienda que la CPU admita AES-NI. Esto puede ayudar enormemente al rendimiento de pfSense, principalmente si usa VPN.
- 1 GB de RAM puede agotarse con bastante rapidez si desea utilizar algunas funciones avanzadas que ofrece pfSense, como IDS (Sistemas de detección de intrusos) como Snort o Suricata, así como algunas funciones avanzadas como Squid Proxy y ClamAV. En general, recomendamos al menos 4 GB de RAM para tener una experiencia estable para ejecutar estos servicios.
- Más de 4 GB de espacio en el disco duro también pueden ser útiles si desea trabajar con archivos de caché de gran tamaño para su servidor DNS.
Instalación y configuración en Proxmox
Pasos previos a la instalación, creación de la máquina virtual e instalación del pfSense
Ajustes previos a la Instalación
Para poder empezar con la instalación deberemos tener en cuenta si tenemos los dos puertos de red necesarios en nuestro equipo o servidor para poder hacer un PCI-Passthrough, teniendo en cuenta de que su servidor lo admita, usaremos esos dos puertos para pasarlos directamente a la máquina virtual de pfSense.
En el caso de no tener disponible el PCI-Passthrough lo que podremos hacer será crear puertos Bridge y asociarlos a la máquina virtual.
Pasar tarjeta de red PCI
Para poder pasar la tarjeta/puerto deberemos ir a la configuración de la máquina ya creada (más tarde en la guia se explica como crearla) y ir a Hardware --> Add --> PCI Device.
Una vez estemos aquí deberemos seleccionar Device y buscar nuestra tarjeta de red y añadir puerto tras puerto.
De manera en que cuando tengamos estos puertos añadidos se verá tal que así:
Crear Bridges
Para poder crear los Bridges, deberemos ir a nuestro nodo, hacer click en este e ir al apartado de Network. Una vez allí deberemos darle al botón de Create --> Linux Bridge.
Lo siguiente que debemos hacer es darle un nombre a nuestro bridge (obligatorio: vmbrX donde X es el número que quieras), asociarlo a un Bridge port que este sera nuestra tarjeta de red y marcar que sea VLAN aware por si queremos más tarde tocar VLANs.
Una vez tengamos esto configurado, veremos los dos bridges con sus puertos. vmbr1 --> LAN y vmbr2 --> WAN.
Creación de la máquina virtual
En la pestaña General:
- Elige un número de ID de máquina virtual e ingresa un nombre para la máquina virtual.
Continuando con la pestaña de Sistema Operativo:
- Seleccionaremos el almacenamiento local y la ISO de pfSense que hayamos cargado en la carpeta de ISOs de proxmox.
En la pestaña de System:
- Para tarjeta gráfica: selecciona Predeterminado
- Para máquina: selecciona i440fx
- Si pretendes utilizar PCI Passthrough, selecciona q35
- Para controlador SCSI: seleccione VirtIO SCSI
En la pestaña de Disks:
- Para Bus/Dispositivo: seleccione Bloque VirtIO
- Para el tamaño del disco (GiB): elija al menos 8 GB. En este ejemplo seleccionamos 32 GB.
En la pestaña de CPU:
Esta pestaña ya es más de las necesidades de cada uno con su hardware y su uso que le dará a pfSense, la recomendación personal sería la siguiente;
- Sockets: 1
- Cores: 4
En la pestaña de Memory
Seguimos con las mismas indicaciones que CPU, esto es lo recomendable para no tener ningun cuello de botella en una red pequeña;
- Memory (MiB): 4096
En la pestaña de Network:
- Para Bridge: selecciona vmbr1 (la WAN → Linux Bridge)
- Para Modelo: selecciona VirtIO (paravirtualizado)
Este Wizard de como crear la máquina virtual ya estaría completado, pero aún falta añadir nuestra interfaz de LAN que hemos creado con el bridge anteriormente.
Para ello iremos a la máquina de pfSense → Hardware → Add → Network Device
Instalación y configuración
Ahora que nuestra configuración de Proxmox está configurada, vamos a cambiar a la configuración de pfSense. Esto se hará a través de la consola dentro de Proxmox. Para ello iniciamos la máquina virtual de pfSense y empezamos con la instalación.
1. Acepte los avisos de derechos de autor y marcas registradas si está de acuerdo.
2. Seleccione instalar pfSense.
3. Seleccione un mapa de teclas o continúe con el predeterminado.
4. Seleccione Rooteo guiado en ZFS y luego seleccione Aceptar.
5. Seleccione instalar para continuar con la instalación.
6. En este paso, puede seleccionar tira, sin redundancia. Si desea utilizar la redundancia, puede modificarla aquí (aunque su configuración inicial será diferente a la de este tutorial).
7. Seleccione el disco duro y luego Aceptar.
8. Si desea continuar, seleccione sí.
9. ¡El sistema operativo pfSense ahora estará instalado!
10. Seleccione no en la página de configuración manual.
11. Finalmente, reinicie el sistema.
Configuración de WAN/LAN
En este punto, nuestra máquina virtual está instalada y configurada y el sistema operativo pfSense está completamente instalado. El último paso es asegurarse de que nuestras interfaces estén configuradas correctamente dentro de pfSense para que podamos acceder a la consola de administración web.
1. A su WAN y LAN se le asignarán automáticamente direcciones IP (suponiendo que los cables de Ethernet estén conectados a cada puerto).
Si esta información es correcta, puede acceder a pfSense navegando a la dirección IP de LAN. Tenga en cuenta que su dispositivo actual debe estar en la misma subred para acceder a él (en este ejemplo, la dirección IP del dispositivo debe ser 192.168.1.X).
2. Si no es correcto, seleccione 2 para acceder a la sección de asignación de interfaces, luego ingrese el número de interfaz que desea configurar.
3. Los pasos serán diferentes en función de si seleccionó la interfaz WAN o LAN, pero tendrá que realizarla y configurarla como le gustaría que se configurara.
NOTA : Si no tiene una dirección IP WAN, reinicie su módem y luego reinicie pfSense.
4. En la pregunta final, seleccione "n" para continuar usando HTTPS para la configuración web.
5. Asegúrese de que el dispositivo en el que se encuentra actualmente esté en la misma subred que la subred LAN que eligió (o que tenga una ruta hacia ella).
NOTA : Una vez más, si la configuración de WAN no parece estar obteniendo una dirección IP, reinicie su módem y luego reinicie pfSense.
https://DIRECCIÓN_IP_LAN
1. Ahora que podemos acceder a pfSense, inicie sesión con las siguientes credenciales:
- Nombre de usuario predeterminado de pfSense: administrador
- Contraseña predeterminada de pfSense: pfsense
2. Los siguientes pasos nos guiarán a través de nuestra configuración de pfSense
3. Selecciona siguiente hasta que llegues a la sección de nombre de host, dominio, DNS primario y secundario. Rellena estos ajustes como quieras y, a continuación, pulsa siguiente.
4. Selecciona un servidor de tiempo .
5. Deja la configuración WAN como DHCP, luego selecciona siguiente. (De esta manera puedes ir a tu router principal y dejar la ip que se le ha concedido por DCHP como ip estática y nunca cambiará.)
6. Modifiqua la configuración de LAN si es necesario.
7. Cambia la contraseña del usuario administrador.
8. Selecciona recargar para recargar la GUI web.
Una vez se recargue nos aparecerá la GUI tal que así:
Dynamic DNS
DDNS No-IP
Configuración de DNS dinámico en pfSense
Configura una cuenta gratuita en No-IP, ya que proporcionan hasta 3 hosts en una cuenta gratuita y funciona perfectamente sin ningún problema. Una vez que la cuenta esté configurada, navegua hasta el Dashboard y seleccione Agregar nombre de host y completa los detalles siguientes:
- Como se ve arriba, navegua hasta el Dashboard y selecciona Dynamic DNS y luego seleccione Add Hostname en la columna de la derecha que luego muestra una ventana emergente para continuar.
- Llama a un nombre de host significativo eligiendo cualquier dominio con el menú desplegable (los nombres de dominio son solo para fines de resolución). (en este caso usado, hemos escogido ddns.net).
- El tipo de registro debe ser un registro A, ya que solo necesitamos que nuestro ISP proporcione direcciones IP dinámicas para que se resuelvan en ese nombre de host dado (nota: si tu ISP proporciona ipv6, el tipo de registro debe ser AAA).
- La dirección IPv4 debe ser la dirección IP actual de tu enrutador (o la IP que está visible en la interfaz WAN de su pfsense).
- Agrega el nombre de host y eso es todo.
Configuración en pfSense
Ahora que ya está hecha la configuración en No-IP, inicia sesión en pfSense y dirigete a Services y selecciona Dynamic DNS.
En el apartado de Dynamic DNS Clients, selecciona +Add.
Al presionar +Add, aparecerá esta ventana donde en Service Type debes elegir No-IP (free) si has utilizado la configuración gratuita de No-IP.
Una vez seleccionado No-IP (free) debes elegir como Interface to monitor --> WAN y en Hostname pon el dominio de ddns que se ha declarado en No-IP dejando todo lo siguiente en blanco y sin marcar.
En el apartado de Username y Password, añade tu usuario y contraseña usado para No-IP ya que de esta forma pfSense pueda acceder a la plataforma de No-IP sin tener que usar ningún token extra. Una vez hayas introducido los campos de Username y Password, haz click en el botón de Save y ya estará todo configurado para poder usar las VPNs.
DDNS CloudFlare
Firewall
Cuando instalas pfSense y configuras todas sus interfaces, debes crear reglas de firewall. Una regla de firewall permitirá o denegará el tráfico según la fuente de donde proviene ese tráfico. Hay muchas maneras en que puede implementar reglas de firewall en pfSense, y comprender cómo funcionan es un paso importante para garantizar que su red esté configurada correctamente.
Es recomendable leerse la guia de Netgate donde explica cómo se procesan estas reglas de Firewall. (link)
Cómo crear reglas de firewall en pfSense
Cuando quieras crear reglas de firewall en pfSense, las reglas deben configurarse en cada interfaz. Esto significa que si tiene redes LAN, IoT y de invitados, se deberán crear reglas de firewall en cada interfaz para permitir o denegar el tráfico. También debe crear reglas de firewall si está utilizando una VPN como OpenVPN o WireGuard (en la interfaz VPN).
Las reglas se crean para cada interfaz solo en la dirección de entrada. Eso no significa que el tráfico de salida no se pueda bloquear, pero el tráfico debe originarse en la dirección de entrada de la interfaz. Un ejemplo se explica más adelante en este documento.
También es importante comprender que, de forma predeterminada, el tráfico se deniega automáticamente. Para permitir el tráfico en una interfaz, primero se debe crear una regla de permiso.
1. Cómo acceder a las reglas del cortafuegos en pfSense
Si deseas configurar reglas de firewall, puedes acceder a la sección de reglas dirigiendote a Firewall --> Reglas.
Al hacer click en Rules, te lleva a la pestaña de Rules donde podrás ver los diferentes apartados que utilizas en este momento (WAN, LAN, WireGuard, OpenVPN, Floating, etc.).
Si creas reglas para la interfaz WAN , crearás reglas para permitir el tráfico a su red local desde redes externas.
Cualquier otra interfaz enumerada (aparte de la sección flotante) administrará el tráfico para las interfaces internas o para otra categoría (VPN, por ejemplo).
2. Cómo crear reglas de firewall en pfSense
Para crear una regla de firewall en pfSense, ve a la interfaz donde deseas crear la regla y selecciona Add. La flecha hacia arriba creará una regla en la parte superior de la lista y la flecha hacia abajo creará una en la parte inferior.
Selecciona en la pestaña Action si deseas permitir (aprobar), bloquear o rechazar el tráfico.
Actualiza la interfaz si es necesario, luego cambia la Address Family a IPv4, IPv6 o IPv4 + IPv6.
En la sección de Protocol, selecciona el protocolo correcto para la regla que deseas crear. Si deseas permitir o denegar todo el tráfico, selecciona cualquiera.
Según el protocolo que selecciones, aparecerán diferentes opciones debajo de él. Por ejemplo, si seleccionas TCP, deberás especificar el rango de puertos TCP.
En la sección de Source, selecciona la categoría correcta.
Si deseas elegir una red completa (LAN, IoT, invitado, etc.), selecciona "nombre de interfaz + red". Esto utilizará toda la red.
En la sección de Destination, selecciona la opción correcta (igual que la sección de origen).
Proporciona una Description a la regla (no es necesario, pero ayuda a ordenar y comprender la regla por si en un futuro no te acuerdas que hace.) y haz click en Save.
3. Ejemplo de regla de cortafuegos
Para este ejemplo, se enumera una regla de cortafuegos de ejemplo que bloquea el tráfico de la red de invitados a la red LAN. Esto significa que cualquier persona conectada a la red de invitados no podrá acceder a nada en la red LAN.
- Acción: Bloquear
- Interfaz: INVITADO
- Familia de direcciones: IPv4 + IPv6
- Protocolo: Cualquiera
- Fuente: Cualquiera
- Destino: red LAN
- Descripción: Bloquear LAN de Invitado
Esta regla bloquea cualquier tráfico de la red invitada a la red LAN para el tráfico IPv4 e IPv6. En la interfaz de red LAN, también se puede crear una regla para bloquear el tráfico de la red LAN a la red invitada si no deseas que pase ningún tráfico hacia/desde las redes LAN y de invitados.
Tiene que quedar claro que la regla inicial se crea en la interfaz de red para invitados porque las reglas se crean en el nivel de la interfaz solo para el tráfico entrante. El tráfico está bloqueado en la red LAN porque un dispositivo invitado intenta conectarse a un dispositivo LAN y pfSense lo bloquea.
Dispositivo de red invitado > Solicitudes de red LAN > pfSense Firewall > Regla de bloqueo
pfSense VPN
OpenVPN, WireGuard, TailScale, etc.