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

Entradas populares de este blog

Manejo de discos en AIX

Hola a todos. En el siguiente tutorial, enseñaremos cómo particionar un disco (o physical volumen, PV) o en su defecto adicionarlo a un volumen. Cabe mencionar que en AIX el concepto de partición como tal no existe, sino que se manejan como volúmenes de grupos lógicos o VG. Partiremos de la premisa de que el PV ya está presentado al sistema operativo, por lo que el primero paso es actualizar o detectar el disco al sistema para que esté visible como un fichero en /dev. Esto se hace ejecutando: #cfgmgr  Podrémos ver el disco en el sistema si usamos el comando #lspv Un VG, se debe subdividir al ser creado en un subconjunto de particiones fisicas llamadas PP y todas deben ser de un tamaño identico. Así que crearemos el VG de nombre volgroup1 especificando que cada PP debe ser de 1024 megas y que se hará del disco con etiqueta hdisk1.  #mkvg -y volgroup1 -s 1024 hdisk1 Si, ya se ha creado el volumen previamente, y desean agregar el nuevo disco, lo hacemos con: #extendvg -f volgroup...

Solaris 11 Presentar disco ASM en LDOM

  A continuación se describe el proceso de presentar un disco como ASM para que se use en una BD Oracle en Solaris 11 a una LDOM. Ubicamos el disco a presentar: # find /dev/dsk/|grep c1d1s2 #find /dev/dsk/ | grep c1d1s2 /dev/dsk/c1d1s2  Lo agregamos al Virtual Disk Backend #ldm add-vdsdev /dev/dsk/c1d1s2  name-ldm_disc1@primary-vds0 Luego lo aderimos a la LDOM  #ldm add-vdisk id=100 name-ldm_disc1 name-ldm_disc1@primary-vds0 name-ldm El parametro id puede omitirse y el generará uno (tener en cuenta el ID para el siguiente paso). Ahora dentro de la LDOM buscamos el disco con el ID 100 slice 6 #find /dev/rdsk/ | grep c1d100s6 Dar label  #format c1d100s6 Ready to label disk, continue? yes #format> q Y damos los permisos correspondientes de oracle #ls -l find /dev/rdsk/c1d100s6 #chown oracle:oinstall /devices/virtual-devices@100/channel-devices@200/disk@11:g,raw #chmod g+rw o ../../devices/virtual-devices@100/channel-devices@200/disk@11:g,raw

INICIAR ENTORNO GRAFICO LightGDM/GDM y GNOME FREEBSD

Nota: Este manual lo He probado en Frebsd 8.1, 9.0, 14  ¿Nada tan rudo como no tener entorno grafico? lo minimo que queremos es eso para poder seguir aprendiendo de FREEBSD. Así que a continuación los pasos:  En Freebsd 8.1 y 9.0 se insatal  gdm y xorg ejecutando: #sysinstall o por los puertos. #cd /usr/local/x11/ o con pkg_add #pkg_add -r gdm xorg luego de estar seguros de que lo tenemos instalado,  editamos /etc/rc.conf y agregamos las lineas. gdm_enable="YES" gnome_enable="YES" guardamos y reiniciamos. y ahora deberiamos tener un lindo entorno grafico con manejador GDM. En FreeBSD 14 instalamos gdm xorg o lightdm sea ejecutando: pkg gdm xorg o pkg lightdm xorg  lightdm-gtk-greeter Agregar en /etc/rc.conf  lightgdm_enable="YES" gnome_enable="YES" y reiniciamos.