Ir al contenido principal

Firewall PF


PF o Packet Filter es un software de filtrado de paquetes que fue desarrollado para openBSD y actualmente ha sido exportado a otros S.O.

Este manual fue hecho sobre OpenBSD 5.3, donde por defecto viene activado en el archivo  "/etc/rc.conf"  la linea

pf=YES

Si deseas desactivarlo  agrega "pf=NO" al archivo "/etc/rc.conf.local". Las reglas se leen desde el archivo "/etc/pf.conf". Tambien puedes activar y desactivar pf con el comando"pfctl -e" y "pfctl -d" respectivamente. Cuando este activo debes iniciar las reglas :

#pfctl -f /etc/pf.conf

Si acabas de instalar OpenBSD, el archivo viene con unas cuantas reglas por defecto para ver las reglas activadas ejecuta:

#pfctl -sr 
block drop all
pass all flags S/SA
block drop in on ! lo0 proto tcp from any to any port 6000:6010

Por defecto deja entrar todo y bloquea cualquier intento de conexion a puertos X11.

A continuacion unas reglas muy sencillas.

#permitir trafico loopback y enc0 
set skip on {lo,enc0}

#permitir paso de mi subred  por mi interfaz lan


pass quick on em1 from 192.168.100.0/24 to any

#nateo 

pass out quick on em0 inet from 192.168.100.0/24 to any  nat-to em0

#Denegamos todo 

block all

#Permite ssh   

pass in on em0 proto tcp from any to any port 22
pass on em0 proto {tcp,udp} from any to any port {500,4500}

Estas reglas las agregamos a "/etc/pf.conf". Puedes guardar el pf.conf por defetco en otro lado y agregar las anteriores.

Explicare un poco algunos parametros .

- "pass" y "block" permiten o bloquean el paso de un paquete. Por ejempo "block in on em0" bloquea todo paquete entrante por la interfaz "em0" que es la Wan.

- "pass out on em0 from 192.168.100.0/24 nat-to em0" deja pasar hace coincidencia  con los paquetes salientes "out" en la interfaz "em0" que vengan desde la subred "from 192.168.100.0/24" y hace NAT "nat-to" a la interfaz "em0".

- "pass quick on em1 from 192.168.100.0/24 to any" permite paso de paquetes en ambas direcciones en la interfaz "em1" desde mi subred  hacia cualquier destino "from 192.168.100.0/24 to any".

- "pass in on em0 proto tcp from any to any port 22" permito el paso de paquetes entrantes por la interfaz "em0" con protocolo tcp desde cualquiera hasta cualquiera "any to any" por el puerto 22.

-"block all" la regla por defecto es que todo sea bloqueado es decir nuestro firewall es inclusivo y si desean permitir algo deben especificarlo.

Para ahorrarnos reglas espacio y ser recursivos y pragmaticos, podemos usar macros que nos simplifican la vida. Por ejemplo en la linea

pass on em0 proto {tcp,udp} from any to any port {500,4500}

encerramos dentro de llaves los protocolos separados por una coma o puertos. Tambien puedes para no repetir cada regla que vayas a usar  la red local "192.168.100.0/24" simplemente defines una macro de la siguiente manera:

my_lan="192.168.100.0/24"

y en cualquier regla usas $lan de la siguiente manera:

pass out quick on em0 inet from ${lan} to any  nat-to em0

-"set skip on {lo,enc0}" marca con "skip" la interfaz loopback "lo y enc0". Todas las reglas siguientes seran ignoradas en paquetes q vengan de esta interfaz.

para aplicar los cambios en el acto simplemente ejecutas:

#pfctl -f /etc/pf.conf

Estare actualizando el post a medida que vaya trabajando. Saludos