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 -f /etc/pf.conf
#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
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.
#pfctl -f /etc/pf.conf
Estare actualizando el post a medida que vaya trabajando. Saludos