Packet-Filter Seguridad

Configuración básica de PF

Introducción

Completar

¿Que es PF?

Completar

Configuración básica de PF

Es indispensable que nuestra red este protegida por un firewall, para esto OpenBSD tiene nada más y nada menos que Packet Filter http://www.openbsd.org/faq/pf/index.html o PF para los amigos. PF nos ayudará a mantener las conexiones indeseadas fuera de nuestra red interna, aquí proponemos una configuración básica para que cualquier usuario que se inicia en el mundo de OpenBSD y PF puede implementar el suyo.

Para esto detallaremos una serie de pasos a seguir, algunos fundamentales para el funcionamiento de PF y otros que podremos amoldar a nuestra conveniencia. Con esto podremos armar nuestro OpenBSD + PF y tener nuestro firewall funcionando en minutos. \\

  • Habilitamos PF

Editamos el archivo /etc/rc.conf.local y agregamos lo siguiente:

pf="YES"


  • Habilitamos la redirección de paquetes

Habilitamos la redirección de paquetes mediante sysctl, entonces ejecutamos:

# sysctl net.inet.ip.forwarding=1

y editamos el archivo /etc/sysctl.conf y ponemos en 1 el valor net.inet.ip.forwarding, quedando así:

net.inet.ip.forwarding=1


  • Configuramos las reglas de filtrado

Editamos el archivo /etc/pf.conf para configurar las reglas y las macros.

En este ejemplo mostraremos cómo configurar un firewall dedicado (es lo más utilizado), en el mismo utilizaremos rl0 como placa de red conectada a Internet y rl1 como placa de red conectada a la red interna.

Las líneas con el signo # en el comienzo de la misma son comentarios, estas líneas no son necesarias en la configuración, solo tienen un fin explicativo u orientativo. \\
Archivo /etc/pf.conf de ejemplo comentado:

## MACROS
ext_if="rl0"
int_if="rl1"
lan="192.168.0.0/24"
webserver="192.168.0.10"
host_ext="123.456.789.012"
# Estas variables se denominan Macros y tienen el fin de 
# simplificar el trabajo en la creación de reglas


## OPCIONES
set block-policy drop
# Establece como política por defecto drop para los paquetes bloqueados


## SCRUB
scrub in all
# Scrub: Reprocesamiento de paquetes para normalizarlos y desfragmentarlos


## NAT Y REDIRECCION DE PUERTOS
nat on $ext_if inet from $lan to any -> ($ext_if)
# Esto habilita el nat en la placa de la red externa
# Esto es necesario cuando tenemos una red interna con 
# 2 equipos o más y los mismos necesitan salir a Internet

rdr on $ext_if proto tcp from any to ($ext_if) port 80 -> $webserver
# Redirecciona el tráfico entrante por el puerto 80 al mismo puerto del Webserver


## REGLAS DE FILTRADO
pass quick on lo0 all
# Permite el paso del tráfico en la interfaz de loopback

pass out quick on $ext_if inet from $int_if to ($ext_if) keep state
# Permite la salida del tráfico de la red interna hacia Internet

pass in quick on { $ext_if $int_if lo0 } inet proto icmp all icmp-type echoreq keep state
# Permite solo echoreq, es decir, la solicitud de ping

pass in quick on $ext_if proto tcp from any to $webserver port 80 flags S/SA synproxy state
# Permite la entrada de tráfico al puerto 80 desde cualquier IP, para el redireccionamiento

block in quick on $ext_if all
# Bloqueamos todo el resto del tráfico entrante no permitido

Hay que tener en cuenta 2 cosas que pueden variar: - Desde OpenBSD 4.1 ya no es necesario agregar al final de las reglas de filtrado la sentencia keep state para que mantenga el estado de los paquetes, es decir, si tenemos OpenBSD 4.1, no es necesario que la pongamos. - En el caso que tengamos IP fija en la interfaz ext_if, no es necesario poner los paréntesis ( ) en los casos que aparece. \\

  • Habilitamos PF en el momento desde la consola

Ejecutamos el siguiente comando para habilitar el PF inmediatamente:

# pfctl -e


Y listo!, ya tenemos nuestro equipo con OpenBSD + PF funcionando, con breves y sencillos pasos, luego de esto debemos leer los FAQs http://www.openbsd.org/faq/pf/index.html y los man de PF http://www.openbsd.org/cgi-bin/man.cgi?query=pf&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html para lograr objetivos más precisos en nuestro filtrado de paquetes. En otros artículos trataremos configuraciones más avanzadas sobre PF.


Personal Tools