Thursday, August 20, 2009, 10:55 PM - /nerd, /openbsd
PF para paranoicos como yo.

Hace algunos dias lei nuevamente el
libro de PF y me detuve en la parte de PF.OS que si bien la explicación es muy concisa lo que hace es detectar los Sistemas Operativos de los hosts que intentan conectarse al firewall (explicación muy por arriba).
Entonces yendo a lo practico, supongamos que tenemos un servidor que tiene el servicio de SSH publico y el administrador (nosotros ^^) es muy paranoico. Podrías usar PF + PF.OS para dejar pasar hacia ese puerto (supongamos el que viene por defecto '22') solo SOs OpenBSD, vamos al ejemplo:
/etc/pf.conf:
block in quick on $ext_if proto tcp from any \
os { "Windows", "FreeBSD", "Linux" } \
to $miip port 22
pass in quick on $ext_if proto tcp from any to $miip port 22
Las reglas harían algo como esto:
Bloqueo todo lo que entre (block in quick on) en la interfaz externa ($ext_if) por el protocolo tcp (proto tcp) de cualquier IP (from any) y de los SO Windows, FreeBSD y Linux (os { "Windows", "FreeBSD", "Linux" })
** hacia la IP de mi servidor (to $miip) por el puerto 22 (port 22).
La regla anterior tiene la variable 'quick' lo que hace que matchee en ese mismo momento sin seguir a la regla siguiente, por eso en la próxima regla solo podrá llegar un SO OpenBSD, la cual dice:
Pasa hacia el servidor inmediatamente (pass in quick) sobre la interfaz externa (on $ext_if) por el protocolo tcp (proto tcp) de cualquier Host / IP (from any) hacia la IP de mi servidor (to $miip) por el puerto 22 (port 22).
Verificamos la sintaxis:
# pfctl -nf /etc/pf.conf
Y luego confirmamos:
# pfctl -f /etc/pf.conf
Con esta breve explicación ya tienen una base para empezar agregarle otras cosas, recuerden que PF es muy flexible, por lo cual podrán agregar otras tantas reglas u opciones interesantes hasta el limite de su paranoia.
Cualquier duda, consulta o duda ya saben.
Saludos!
** Pueden poner muchos mas OS, deberían revisar la lista completa del archivo
/etc/pf.os