pfSense es el sistema operativo orientado a firewall (cortafuegos) más utilizado a nivel profesional, tanto en el ámbito doméstico con usuarios avanzados, como en pequeñas y medianas empresas para segmentar su red correctamente y disponer de cientos de servicios disponibles. pfSense está basado en el popular sistema operativo FreeBSD, por tanto, tendremos la garantía de que es un sistema operativo estable, robusto, y, sobre todo, muy seguro. A diferencia de otros firewalls, pfSense dispone de una interfaz gráfica realmente completa y muy intuitiva, ya que tendremos una pequeña explicación de cada parámetro a configurar. Hoy en RedesZone os vamos a explicar todo sobre pfSense, y cómo instalarlo en cualquier ordenador con dos tarjetas de red (una para WAN y otra para LAN).
pfSense es un sistema operativo que consume muy pocos recursos, sin embargo, dependiendo del uso, de los usuarios que vayan a transferir datos, y de los servicios que instalemos, necesitaremos disponer de más o menos potencia de CPU y también tamaño de memoria RAM. Este sistema operativo se puede instalar en prácticamente cualquier ordenador actual, pero lógicamente, el rendimiento que obtendremos dependerá del hardware, y lo mismo ocurre sobre la configuración que hayamos realizado al propio firewall. Lo más crítico para pfSense es reconocer las tarjetas de red Ethernet, las más recomendables para no tener problemas son las Intel, pero hay otros muchos fabricantes que también son compatibles, pero antes sería recomendable leer en los foros oficiales de pfSense.
Principales características
El objetivo principal del sistema operativo pfSense es la de proporcionar seguridad a entornos domésticos y empresariales, este equipo actúa de firewall, pero también podemos usarlo como router principal, ya que disponemos de cientos de opciones de configuración avanzadas. Gracias a la posibilidad de instalar software adicional, podremos disponer de un potente IDS/IPS (Sistema de Detección y Prevención de Intrusiones) como Snort o Suricata. Para usar pfSense es obligatorio disponer de dos tarjetas de red, una para la WAN de Internet y otra para la LAN, aunque si disponemos de más tarjetas (o una tarjeta con varios puertos) mucho mejor, porque podremos disponer de interfaces físicas adicionales para configurar una DMZ, una red adicional y mucho más.
Otro punto a favor de pfSense son las continuas actualizaciones que disponemos, tanto del sistema operativo base, como también de todos los paquetes que podemos instalar de manera adicional. En un firewall/router que está expuesto a Internet, disponer de actualizaciones es algo importantísimo para evitar vulnerabilidades de seguridad que se pudieran encontrar.
Firewall y IDS/IPS
pfSense emplea un cortafuegos SPI (Stateful Packet Inspection) basado en reglas, como suele ser habitual. Podremos filtrar paquetes rápidamente de manera muy avanzada, dependiendo del hardware, podremos conseguir anchos de banda superiores a los 10Gbps. Gracias a la interfaz gráfica de usuario, podremos crear «alias» para crear grupos de IPs y puertos, para posteriormente aplicarlo a las reglas, y de esta forma, no tener cientos de reglas en el firewall, es muy importante saber qué estamos filtrando y mantener las reglas correctamente actualizadas. Por supuesto, pfSense dispone de avanzados registros de si una regla se ha ejecutado, y de todo lo que está ocurriendo en el sistema operativo.
pfSense 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, los cuales podremos instalar de manera fácil y rápida a través de los paquetes disponibles para su instalación, y en ambos tendremos interfaz gráfica de usuario para configurar las diferentes interfaces donde deben actuar, así como todas las reglas que tenemos para detectar posibles ataques. También podremos detectar fugas de información e incluso actividad sospechosa en la red que podremos bloquear. Por supuesto, también tenemos la posibilidad de ver en tiempo real el estado del sistema operativo, e incluso instalar software adicional para ver informes gráficos avanzados y conocer todo lo que ocurre en el sistema.
VPN
Las redes privadas virtuales (VPN) siempre suelen colocarse en el propio firewall, para no tener problemas con la NAT y el filtrado de otros firewalls. Disponer de un servidor VPN o cliente VPN, nos permitirá interconectar ubicaciones remotas a través de Internet de forma segura, y también conectar diferentes dispositivos a la red local en modo VPN de acceso remoto. pfSense incorpora diferentes tipos de VPN para adaptarse perfectamente a las necesidades de los usuarios:
- L2TP/IPsec
- IPsec IKEv1 y IKEv2, con diferentes tipos de autenticación como Mutual-PSK, Mutual-RSA e incluso Xauth.
- OpenVPN con autenticación por certificados digitales, credenciales de usuario y más.
- WireGuard
Lo más destacable de pfSense 2.5.0 es la incorporación de la popular VPN WireGuard, tanto para conectar usuarios de forma remota, como para hacer túneles Site-to-Site de forma rápida y fácil, gracias a este nuevo protocolo que se ha integrado en el kernel y nos proporcionará un gran rendimiento.
Otras características
pfSense incorpora una grandísima cantidad de servicios, los mismos o más que los routers y otros firewalls profesionales. Por ejemplo, algunas de las principales características adicionales son la posibilidad de configurar un servidor DNS con DNS Resolver, ideal para que sea el propio firewall quien resuelva todas las peticiones, también disponemos de un completo servidor DHCP con decenas de opciones avanzadas, un servidor NTP para servir la hora a diferentes dispositivos, WoL, QoS para priorizar diferentes equipos, Traffic Shaper, compatibilidad con VLANs, posibilidad de configurar diferentes VLANs en una o varias interfaces, posibilidad de configurar QinQ, Bridge y LAGG con diferentes opciones avanzadas, también podemos usar el servidor Dynamic DNS y mucho más. No debemos olvidar que, al ser un sistema operativo muy avanzado, podremos ver un completo registro de todo lo que está ocurriendo, e incluso tendremos avisos por email o Telegram para estar al tanto de todo lo que ocurra.
Una de las características más importantes, es la posibilidad de instalar paquetes adicionales para disponer de aún más funcionalidades, gracias a este software adicional, podremos ampliar las funcionalidades de este firewall profesional. Algunos de las extensiones más populares son las siguientes:
- arpwatch para que nos notifique por email o Telegram qué equipos nuevos se han conectado
- bandwidthd para ver gráficos de utilización del ancho de banda
- freeradius3 para montar un servidor de autenticación RADIUS, ideal para configurar APs WiFi y disponer de WPA2/WPA3-Enterprise
- iperf para medir el ancho de banda al pfSense y desde él
- nmap para realizar escaneo de puertos
- pfBlocker-ng para bloquear toda la publicidad, y también dominios y direcciones IP maliciosas
- Snort y Suricata: los dos IDS/IPS por excelencia, no vienen por defecto pero se puede instalar
- Haproxy para balanceador
- Squid para montar un servidor proxy.
- nut para monitorizar sistemas SAI
- Agente zabbix para integrarlo fácilmente en un sistema de monitorización
- Zeek (antiguo Bro IDS)
pfSense funciona en arquitectura x86, siendo compatible con CPU recientes de 64 bits, además, se puede instalar en casi cualquier plataforma en la nube como Amazon Cloud, Azure y más, además, debemos tener en cuenta que hoy en día podemos comprar equipos del fabricante Netgate que ya vienen con pfSense preinstalado, con equipos orientados a ámbito profesional.
Descarga e instalación de pfSense
La descarga y uso de pfSense CE es completamente gratuita, basta con entrar en la web oficial e irnos directamente a la pestaña de «Download».
Una vez que hayamos pinchado en «Download», veremos una sección donde elegiremos la arquitectura a elegir, seleccionamos AMD64.
También tenemos que seleccionar el tipo de imagen, si queremos una imagen ISO para copiar en un DVD o pendrive, o directamente una imagen USB, nosotros hemos seleccionado la imagen ISO DVD. A continuación, deberemos elegir el servidor desde donde realizar la descarga, es recomendable que siempre sea el más cercano físicamente de tu ubicación actual.
Una vez que hayamos descargado la imagen, deberemos descomprimirla ya que viene en formato iso.gz, y deberemos extraer la imagen ISO directamente.
Una vez que lo hayamos descargado, podremos grabarlo a un CD, copiarlo a un USB booteable con Rufus etc. En nuestro caso, vamos a instalar pfSense en una máquina virtual con VMware, para que veáis cómo instalarlo de manera virtual y probarlo en un entorno controlado de pruebas, para posteriormente pasarlo a producción. En el tutorial vais a ver cómo crear dos tarjetas de red, una en modo bridge para que se conecte a la red local real, y otra en modo host-only para poder acceder vía web desde nuestro ordenador, sin depender de la red local.
Configuración de la máquina virtual en VMware
En nuestro caso vamos a utilizar VMware Workstation 15.5 PRO, pero cualquier versión serviría para realizar la instalación de este sistema operativo orientado a cortafuegos. Lo primero que tenemos que hacer al abrir VMware es pinchar en «Create a New Virtual Machine», tal y como podéis ver en la siguiente pantalla:
En el asistente de configuración de la VM tendremos que elegir creación «Typical», cargar la imagen ISO de pfSense, automáticamente reconocerá que el sistema operativo reconocido internamente es FreeBSD 10 (aunque realmente es la última versión), seguimos con el asistente hasta elegir la ruta de la VM, el disco reservado para la máquina virtual lo dejamos en 20GB, y por último, veremos un resumen de todo el hardware que tendrá esta máquina virtual que vamos a crear.
Antes de finalizar, debemos pinchar en «Customize Hardware» para aumentar la memoria RAM a 4GB, aumentar el número de Cores de CPU, y añadir una tarjeta de red adicional, y configurar las tarjetas de red correctamente.
Independientemente del número de CPU y núcleos (os recomendamos 1 CPU y 4 Cores), y de memoria RAM (os recomendamos mínimo 4GB), tenemos que añadir una segunda tarjeta de red, porque tendremos la WAN de Internet y la LAN. Pinchamos en «Add» y pinchamos en «Network Adapter» para añadirla. También podríamos añadir tarjetas adicionales para tener más opciones de configuración a nivel de firewall, pero empezar por una WAN y LAN está bien.
Una vez que tengamos las dos añadidas, tendremos que configurarlas de la siguiente forma:
- Adaptador 1: bridge (automatic)
- Adaptador 2: custom VMnet1 (Host-only)
A continuación, podéis ver cómo quedaría esta configuración.
Para poder acceder vía web a la administración del sistema operativo, es necesario configurar el adaptador VMnet1, para hacer esto, nos vamos a «Panel de control / Centro de redes y recursos compartidos / Cambiar configuración del adaptador» y cambiamos la dirección IP al adaptador VMware Network Adapter VMnet1, poniendo la IP 192.168.1.2/24 tal y como podéis ver a continuación. Una vez hecho, pinchamos en aceptar y aceptar para salir del menú de configuración.
Una vez que ya lo tenemos todo configurado a nivel de máquina virtual, podemos ejecutar la máquina virtual para empezar con la instalación.
Instalación de pfSense en VMware
Cuando arrancamos la máquina virtual, podremos ver un menú con varias opciones de arranque, no debemos tocar nada y esperar a que pasen los segundos. Posteriormente cargará, y ya podremos ver las diferentes opciones que nos brinda la imagen ISO para la instalación de pfSense.
Una vez que arranque la instalación de este sistema operativo, que aceptar el copyright que nos muestra. En el siguiente menú podremos instalar, recuperar el sistema operativo en caso de fallo catastrófico, y también recuperar el archivo de configuración config.xml de una instalación anterior. Nosotros pincharemos en «Install» para instalar el sistema operativo desde cero. En el siguiente menú tendremos que configurar el teclado, eligiendo nuestro idioma y distribución de teclado.
Después nos preguntará cómo queremos instalar el sistema operativo, si con UFS para BIOS o UEFI, de forma manual para expertos, abrir la consola para hacer todo manualmente, o utilizar ZFS como sistema de archivos. En nuestro caso, hemos elegido la primera de todas, Auto (UFS) BIOS y procedemos con la instalación. La instalación tardará un minuto aproximadamente, aunque dependerá del hardware que tengas, cuando finalice nos preguntará si queremos lanzar una consola para hacer configuraciones específicas, pinchamos en «No» y posteriormente nos preguntará si queremos reiniciar el sistema operativo, y aceptamos.
En cuanto se inicie nuevamente pfSense, podemos ver que se le ha asignado correctamente una IP a la WAN de Internet y otra a la LAN.
En el menú de administración por consola podremos realizar las siguientes acciones:
- Cerrar sesión a SSH
- Asignar interfaces físicas a la WAN o LAN, permite configurar también VLANs para la conexión a Internet e incluso de cara a la LAN.
- Configurar la dirección IP de las diferentes interfaces configuradas anteriormente
- Resetear la contraseña de administrador para entrar vía web
- Restaurar pfSense a valores de fábrica
- Reiniciar el sistema operativo
- Apagar el sistema operativo
- Hacer ping a un host
- Lanzar una consola para tareas de administración avanzadas por comandos
- Lanzar pfTop para ver todas las conexiones actuales
- Ver los logs del sistema operativo de filtrado
- Reiniciar el servidor web
- Lanzar consola con utilidades pfSense para configuraciones rápidas
- Actualizar desde consola
- Habilitar SSH en el sistema operativo
- Restaurar una configuración reciente
- Reiniciar PHP-FPM por si tenemos problemas de acceso vía web al sistema operativo.
Si quieres configurar las interfaces físicas a través de la consola, antes de iniciar sesión vía web, podremos hacerlo fácilmente e incluso asignar las correspondientes VLANs:
Por supuesto, debemos realizar la configuración desde cero, asignando la interfaz correspondiente a la WAN y a la LAN:
Por último, podremos configurar a nivel de IP las interfaces, tanto de la WAN como también de la LAN. No obstante, esta configuración es muy básica, todas las opciones disponibles las podéis ver vía web.
En esos instantes, ya podremos acceder vía web a la configuración del pfSense, a través de https://192.168.1.1 con nombre de usuario «admin» y contraseña «pfsense».
Asistente de configuración de pfSense
Para poder acceder al sistema operativo pfSense vía web, tenemos que introducir la URL https://192.168.1.1 con nombre de usuario «admin» y clave «pfsense», el puerto es el 443 por defecto de HTTPS, no es necesario usar un puerto específico.
Una vez que hayamos aceptado el certificado SSL/TLS autofirmado de pfSense, veremos el menú de inicio de sesión, tal y como podéis ver aquí:
pfSense nos va a proporcionar un asistente de instalación paso a paso para realizar las principales configuraciones de la red. Tenemos la opción de no hacerlo, pero es recomendable seguirlo si es la primera vez que lo utilizamos.
Lo primero que veremos en este asistente es la bienvenida, a continuación, nos indicará que podemos comprar una suscripción de soporte de Netgate para que nos ayuden a realizar diferentes configuraciones, debemos recordar que hace años Netgate se hizo con pfSense para seguir desarrollándolo, tanto para sus propios equipos como para la comunidad. Con la versión 2.5.0 tendremos una división entre ambos proyectos, cada vez se bifurcarán más (pfSense CE vs pfSense Plus).
A continuación, podemos ver y configurar el nombre del host, dominio, y los servidores DNS si queremos poner otros que no sean los de nuestro operador. También podremos configurar el servidor NTP para sincronizar la hora, e incluso la zona horaria. Este asistente de pfSense nos ayudará a configurar la interfaz WAN de Internet, disponemos de cuatro posibles configuraciones: Static, DHCP, PPPoE y PPTP, además, soporta VLAN ID para los operadores que lo necesiten. En este menú podremos clonar la MAC, configurar el MTU y MSS, realizar configuraciones específicas dependiendo del tipo de conexión, e incluso podremos incorporar reglas automáticas al firewall para evitar ataques a las redes.
También podremos configurar la interfaz de la LAN, por defecto usamos 192.168.1.1 pero podemos elegir la que nosotros queramos, además, también podremos configurar la máscara de subred. Otra opción muy importante es cambiar la contraseña por defecto, pfSense nos invitará a cambiarla para estar protegidos. Una vez cambiada, pinchamos en «Reload» para seguir con el asistente de configuración y terminarlo, nos dará la enhorabuena y ya podremos empezar a configurar de forma avanzada este completo firewall.
Una vez que hemos visto en detalle el asistente de configuración vía web, vamos a entrar de lleno en todas sus opciones de configuración.
Opciones de administración de pfSense
En el menú principal de pfSense podremos ver la información del sistema, el nombre del pfSense, el usuario que ha iniciado sesión, sistema, hardware utilizado e incluso la versión exacta de pfSense y qué versión tenemos del sistema operativo base (FreeBSD), también podremos ver el tiempo de uptime, la hora actual, los servidores DNS y el estado del almacenamiento, CPU y RAM. Por supuesto, en la parte de la derecha veremos el estado de las interfaces de red que tenemos configuradas.
Este menú principal es muy configurable, para tener todo el estado de pfSense de un vistazo, podremos añadir widgets como el de estado real de las interfaces de red, el de OpenVPN y IPsec, logs del firewall y muchos otros más. Este menú es muy personalizable para adaptarse a las necesidades de la red y ver todo a la vez.
Una vez que hemos visto el menú principal, vamos a ver parte por parte el sistema operativo pfSense, sin entrar mucho en detalle en todas las configuraciones porque tenemos cientos de posibilidades.
System
En la sección de «System» es donde podremos configurar el servidor web del propio pfSense, activar el protocolo HTTPS y SSH, configurar en detalle la seguridad de acceso y la protección del inicio de sesión. También podremos configurar parámetros globales del firewall y NAT, también podremos configurar parámetros globales a nivel de red, tanto de IPv6 como de las interfaces de red, un detalle importante es que podremos activar o desactivar el «offloading» para acelerar el rendimiento si el hardware lo soporta. Otras opciones de configuración son las de configurar el proxy, balanceo de carga y características de ahorro de energía. Por último, podremos configurar a bajo nivel parámetros del sistema operativo base, y configurar las notificaciones por email y Telegram (una novedad de la última versión pfSense 2.5).
En esta sección de «System» también tendremos un gestor de certificados digitales, podremos crear una CA y certificados de servidor y cliente de manera fácil y rápida, con el objetivo de posteriormente usarlo en servidores VPN como IPsec o OpenVPN, así como en el servidor RADIUS Freeradius que podemos instalar de forma opcional. Este gestor de certificados nos permitirá crear certificados basados en RSA y también en EC con diferentes algoritmos.
En la sección «General Setup» podremos cambiar el nombre al equipo, el dominio, los servidores DNS a configurar para que luego los clientes los utilicen, la localización (zona horaria y servidor NTP), y también podremos configurar el aspecto de pfSense al disponer de diferentes temas. Esta última parte es interesante para modificar la interfaz gráfica de usuario con un pfSense oscuro o directamente otros temas que nos gusten más. También podremos configurar al HA para tener alta disponibilidad e incluso instalar una gran cantidad de software adicional, ya que tendremos en la sección de «Package Manager» una gran cantidad de plugins para ampliar las funcionalidades de pfSense.
En la sección de «Routing» podremos ver las diferentes puertas de enlace dadas de alta, posibilidad de configurar rutas estáticas para llegar a otras redes, e incluso crear un grupo de gateways.
pfSense permite actualización a través del propio sistema operativo, en cuanto detecte que hay una nueva versión, podremos actualizarlo a través de la interfaz gráfica de usuario, sin necesidad de descargar la imagen ISO y realizar la actualización de forma manual.
Al ser un sistema operativo muy completo, podremos crear diferentes usuarios y grupos con diferentes permisos. Por ejemplo, podremos crear un listado de usuarios locales para autenticarse vía SSH en el sistema, o para hacer uso de una VPN en concreto. También podremos configurar un servidor de autenticación con RADIUS o LDAP, para hacer uso de dichos usuarios que tengamos.
Una vez que hemos visto la sección de «System», vamos a irnos a «Interfaces» para ver todo lo que podremos hacer.
Interfaces
En la sección de «Interfaces» podremos ver la asignación de la WAN y LAN con las diferentes interfaces físicas, desde aquí podremos configurar fácilmente las diferentes interfaces físicas y también lógicas, ya que podremos configurar VLANs y posteriormente asignarla a una interfaz virtual. Otras opciones de configuración que podremos hacer son crear grupos de interfaces, configurar WiFi, QinQ, PPPs, GIFs, Bridges o puentes, e incluso podremos crear un LAGG con diferentes algoritmos (LACP, Failover, LoadBalance y Roundrobin).
Imaginemos que nuestro operador hace uso del VLAN ID 6 para proporcionarnos Internet, tal y como está la configuración actual de la WAN no funcionará. Deberemos crear una VLAN ID 6, y posteriormente aplicarla en la WAN de Internet. Si en la red local profesional tenemos diferentes VLANs y queremos intercomunicarlas entre ellas, también podremos hacerlo con pfSense, dando de alta las diferentes VLAN ID y posteriormente creando interfaces virtuales que «cuelgan» de la LAN.
Si nos metemos en la configuración de la WAN o LAN, podremos ver la configuración que se ha realizado en el asistente de instalación que vimos anteriormente. En el menú de WAN tendremos diferentes tipos de configuración de cara a la conexión, lo mismo ocurre con IPv6, e incluso podremos poner la dirección MAC que nosotros queramos. También podremos configurar el MTU y MSS, además de configurar parámetros avanzados del cliente DHCP.
En cuanto a la LAN, lo normal es tener la configuración en «Static IPv4» y posteriormente activar nosotros el servidor DHCP, por supuesto, aquí deberemos configurar también el gateway para los clientes que se conecten que es la dirección IP en sí misma.
Una vez que hemos visto todas las opciones de configuración de «Interfaces», vamos a ver brevemente las opciones del firewall.
Firewall
En la sección de «Firewall» es donde tenemos que configurar todas las reglas del cortafuegos. En la sección de «Aliases» podremos crear un alias para aplicar una regla a un conjunto de direcciones IP, puertos y también URL. Esto es ideal para tener muy bien organizadas las reglas en el cortafuegos, es muy importante tener un cierto orden para tener el mejor rendimiento posible (las reglas más utilizadas en la parte superior, y las menos usadas en la parte inferior), además, las reglas más específicas deben situarse en la parte superior y las más generales debajo, para que el funcionamiento sea correcto.
Tendremos la posibilidad de configurar las reglas del NAT en Port Forward, también podremos configurar el NAT 1:1, las reglas de Outbound de la NAT e incluso el NPt para IPv6. En la sección de «Rules» es donde crearemos las diferentes reglas de permitir o denegar en las diferentes interfaces de red que tengamos en el pfSense. Estas reglas las crearemos a través de la interfaz gráfica de usuario, y podremos definir decenas de parámetros avanzados y usando diferentes protocolos, podremos arrastrar para mover las reglas de una posición a otra, e incluso añadir separadores para ayudarnos a identificar un conjunto de reglas.
Por defecto, en pfSense tenemos un «denegar todo» en la parte inferior de forma implícita, por tanto, para tener tráfico se necesitará al menos una regla de permitir.
Otras características interesantes son la posibilidad de crear «Floating rules» en diferentes interfaces de forma fácil, para tener bien ordenadas las reglas repetitivas, e incluso reglas temporales que están activas en un determinado horario, y la posibilidad de configurar «Virtual IPs» para usar el pfBlocker-ng, por ejemplo. Por último, también tendremos aquí el «Traffic Shaper» por interfaz, por cola, podremos configurar limitadores de ancho de banda e incluso ejecutar un asistente de configuración.
Services
En la sección de «Services» es donde tendremos disponibles todos los servicios que vienen por defecto en pfSense, e incluso los servicios que hayamos instalado de forma adicional a través del gestor de paquetes. En esta sección podremos encontrar una herramienta para hacer backups de forma automática, configurar el portal cautivo del pfSense, configurar el servidor DHCP y DHCPv6 para la LAN.
Uno de los servicios más destacables es el DNS resolver, que es el servidor DNS del propio pfSense, y el cual podremos configurar con DNS over TLS y tener reglas muy específicas para los clientes, podremos realizar configuraciones avanzadas, como definir diferentes servidores DNS para las diferentes reglas.