En corto
| |
Qué es una tabla
Una tabla de PF es un conjunto de direcciones y redes al que las reglas hacen referencia como <nombre>. Se cambia en caliente, sin recargar el ruleset, y aguanta miles de entradas con búsqueda rápida; por eso PF la usa para listas de bloqueo, bogons y cualquier cosa que cambie más a menudo que las reglas.
En pf.conf:
| |
persist mantiene la tabla aunque ninguna regla la use en ese momento; file la carga desde un archivo (una IP o red por línea).
Comandos
Todos con la forma pfctl -t <tabla> -T <comando>:
| Comando | Qué hace |
|---|---|
show | Lista las entradas. Con -v, contadores por entrada (paquetes/bytes in/out) |
add <ip|red> … | Añade una o varias entradas |
delete <ip|red> … | Quita entradas |
test <ip> … | Dice si la dirección cae dentro de la tabla (sin tocarla) |
flush | Vacía la tabla; la tabla sigue existiendo |
kill | Borra la tabla entera (si no la usa ninguna regla) |
replace -f <archivo> | Sustituye el contenido completo por el del archivo, en una sola operación |
expire <segundos> | Borra las entradas cuyos contadores llevan más de N segundos sin actividad |
zero | Pone a cero los contadores de la tabla (o de una entrada, si la indicas) |
Y sin -t:
| |
Tablas en pfSense
- Los aliases son tablas. Un alias de tipo Host, Network o URL Table llamado
Adminsexiste en PF como<Admins>;pfctl -t Admins -T showte enseña lo que resolvió pfSense, incluidos los FQDN que ya convirtió a IPs. sshguard: donde caen las IPs bloqueadas por intentos de login fallidos a SSH o a la webGUI. Si te bloqueaste a ti mismo,pfctl -t sshguard -T flush(documentado por Netgate en Locked out of the WebGUI).virusprot: hosts bloqueados por superar los límites Max. src. conn. rate o Max. states de una regla.pfctl -t virusprot -T showy-T delete <ip>para soltar a uno.snort2c: bloqueos de Snort/Suricata en modo legacy.-T flushpara desbloquear todo.bogons/bogonsv6: las listas que se actualizan solas cuando activas Block bogon networks en una interfaz.- pfBlockerNG: cada lista es un alias
pfB_*. Para saber si una IP está bloqueada por alguna:pfctl -t pfB_Top_v4 -T test 203.0.113.7.
En OPNsense la mecánica es la misma (pfctl -sT para ver los nombres); la tabla de bloqueo por login se llama sshlockout.
Lo que se pierde al recargar
Cualquier -T add, -T delete o -T flush vive hasta la siguiente recarga del filtro: guardar casi cualquier cosa en la GUI, Filter Reload en Status → Filter Reload, o el cron de actualización de aliases. En ese momento pfSense regenera cada tabla desde su alias y tus cambios a mano desaparecen. Para que algo sea permanente, edita el alias; para pruebas rápidas y desbloqueos, pfctl es perfecto.
Más allá de las tablas
Lo que más se usa junto a lo anterior:
| |
Referencia completa: pfctl cheat sheet del OpenBSD Handbook y man pfctl en FreeBSD.