PfSense es una plataforma de firewall de código abierto basada en FreeBSD que se puede configurar a través de su interfaz gráfica de usuario (GUI) o mediante la línea de comandos (CLI). A pesar de que la GUI es la forma más común y accesible para configurar reglas en pfSense, hay situaciones donde es necesario usar la consola, especialmente para la automatización o para solucionar problemas.
En la línea de comandos de pfSense, utilizamos el shell de FreeBSD, donde podemos editar archivos de configuración directamente o usar herramientas específicas de pfSense. A continuación, se muestran algunos ejemplos de cómo configurar reglas en pfSense desde la consola:
1. Acceso a la Consola de pfSense
Primero, necesitas acceder a la consola de pfSense. Esto se puede hacer físicamente desde el equipo, a través de SSH, o utilizando una consola serial si está configurada.
Una vez dentro, puedes entrar en el modo shell ejecutando el comando:
8) Shell
2. Configurar Reglas de Firewall mediante Archivos de Configuración
En pfSense, las reglas de firewall se configuran y almacenan en el archivo /cf/conf/config.xml
.
Nota: Editar este archivo directamente puede ser de mucho riesgo y puede corromper tu configuración si no se hace correctamente. Siempre se recomienda realizar una copia de seguridad antes de realizar cambios.
Ejemplo 1: Añadir una regla de firewall básica
Supongamos que queremos permitir el tráfico HTTP desde cualquier dirección IP de origen hacia un servidor interno con IP 192.168.1.100.
Podemos editar el archivo config.xml
de la siguiente manera:
- Acceder al archivo con un editor de texto como
vi
onano
:vi /cf/conf/config.xml
- Buscar la sección
<filter>
y agregar una entrada en<rule>
:<rule> <interface>lan</interface> <ipprotocol>inet</ipprotocol> <protocol>tcp</protocol> <source> <any/> </source> <destination> <network>192.168.1.100</network> <port>80</port> </destination> <descr>Permitir HTTP hacia 192.168.1.100</descr> <action>pass</action> </rule>
- Guardar los cambios y reiniciar el servicio de firewall para que la nueva configuración entre en vigor:
pfctl -f /cf/conf/config.xml
3. Usar pfctl
para Configurar Reglas
pfctl
es una herramienta de línea de comandos en FreeBSD para gestionar pf
(Packet Filter), el sistema de firewall de FreeBSD utilizado por pfSense.
Ejemplo 2: Añadir una regla de bloqueo temporal
Si necesitas añadir una regla temporal para bloquear una IP específica, puedes hacerlo directamente con pfctl
:
- Bloquear el tráfico desde una IP específica (por ejemplo, 203.0.113.5):
pfctl -t bloqueados -T add 203.0.113.5
- Ver la tabla de IPs bloqueadas:
pfctl -t bloqueados -T show
- Remover una IP de la tabla de bloqueo:
pfctl -t bloqueados -T delete 203.0.113.5
4. Uso de Comandos easyrule
en la Consola
easyrule
es una herramienta de línea de comandos en pfSense que simplifica la adición de reglas de firewall.
Ejemplo 3: Permitir tráfico desde una IP específica
Para permitir el tráfico desde una IP específica (por ejemplo, 198.51.100.10) a cualquier destino en la LAN:
easyrule pass wan tcp 198.51.100.10
Este comando agrega una regla para permitir el tráfico TCP desde la IP 198.51.100.10
a través de la interfaz WAN.
Ejemplo 4: Bloquear tráfico hacia un puerto específico
Para bloquear todo el tráfico hacia el puerto 22 (SSH) en la interfaz WAN:
easyrule block wan tcp any 22
5. Programación de Reglas con Cron y Scripts
En algunos casos, puedes necesitar que una regla se aplique solo en ciertos momentos del día. Puedes utilizar cron
junto con scripts de shell para esto.
Ejemplo 5: Bloquear tráfico en horas específicas
- Crear un script de shell que implemente la regla deseada, por ejemplo,
block_port_22.sh
:#!/bin/sh pfctl -t bloqueados -T add 192.168.1.10
- Hacer el script ejecutable:
chmod +x /path/to/block_port_22.sh
- Añadir una entrada en
cron
para ejecutar el script en el horario deseado:crontab -e
Añadir la línea para bloquear a las 10 PM todos los días:0 22 * * * /path/to/block_port_22.sh
La configuración de pfSense a través de la consola puede ser poderosa, pero requiere precaución. Asegúrate de entender cada comando y tener copias de seguridad antes de realizar cambios. La GUI es generalmente más segura y fácil de usar para la mayoría de los usuarios, pero saber cómo trabajar con la consola puede ser invaluable en situaciones críticas o para la automatización avanzada.