Configuracion PF Openbsd Netbsd Freebsd

vamos a configurar pf en unos cuantos pasos )

preparen su pf.conf temporal para trabajar en ese y no regarla en el principal

para validar que las reglas de PF esten bien escritas, pero sin cargarlas al sistema, se ejecuta lo siguiente:

$ pfctl -n -f myarchivopf.conf

ahora, en las primeras lineas deben de escribirse variables que se usaran en las reglas

para nuestro proposito, tendriamos solo 2 variables; una llamada red_internet y la otra red_lan

en esas apuntariamos el nombre de dispositivo de nuestras tarjetas de red: rl0, em0, vr0 o como se llame

en red_internet pondriamos el dispotivo de red que esta conectado hacia la Internet

para nuestro ejemplo pondremos la vr0

en red_lan pondriamos el dispositivo de red que esta conectado a nuestra red local

para nuestro ejemplo podremos la rl0

entonces, en nuestro pf.conf quedaria asi:

red_internet=”vr0″
red_lan=”rl0″

como todos sabemos, en UNIX existe el dispositivo loopback o lo0 que siempre apunta la IP 127.0.0.1; este es indispensable para que los procesos de nuestra maquina se comuniquen entre ellos

entonces, nuestro dispositivo lo0 no debe de estar regido por las reglas del firewall; entonces le diremos a PF que ignore y no ande chingando a nuestro loopback

entonces, la siguiente regla seria:

set skip on lo0

la primera regla de seguridad de un firewall, es que se bloqueen todo paquete que vaya entrar que este corrupto

todo paquete entrante incompleto o corrupto, que lo bloquee nuestro firewall

los paquetes extraños podrian ser algun xploit o vulnerabilidad que pueda afectar al firewall

ahora nuestra politica de filtrado en firewall seria: “bloquea TODOS los paquetes entrantes, y luego, deja pasar unicamente los que te vamos a permitir que pases”

para bloquear toda conexion entrante, nuestra siguiente regla en pf.conf seria:

block in all

no vayan a activar su pf.conf porque se van a desconectar de la red eh

ahora, como queremos que nuestras maquinas en la LAN se puedan comunicar entre estas y tambien el firewall pueda comunicarse con estas; vamos a abrir las conexiones de nuestra LAN

para eso, nuestra siguiente instruccion en nuestro pf seria:

pass quick on $red_lan

recuerden que $red_lan es un llamado de nuestra variable que apunta a nuestro dispositivo de red que esta conectado a la red local

nuestras siguientes reglas; seria, el redirigir las conexiones de entrada a nuestro servidor web

nuestra regla seria: redirige las conexiones entrantes de nuestra tarjeta de red de Internet que provengan de cualquier direccion que pidan el puerto 80 (www) y que las mande a tal IP

entonces, en nuestro pf pondriamos:

rdr on $red_internet proto tcp from any to any port www -> 200.33.45.111 port www

esa es una opcion

la otra forma de ponerla seria:

rdr on $red_internet proto tcp from any to any port 80 -> 200.33.45.111

la ultima que acabo de poner, por logica, dice que las conexiones entrantes por el puerto 80 se las mande a 200.33.45.111; la maquina de esa IP sabe que es una peticion al puerto 80

la del servidor NetBSD que se supone tiene una IP publica asignada

si el firewall y el servidor es el mismo equipo; entonces no seria necesario redirigir

para el caso que, en vez de rdr seria

pass in quick on $red_internet proto tcp from any to port www

ahora, podriamos tener el caso de que nuestro Firewall tenga la IP publica, pero que nuestro servidor web esta en un equipo dentro de nuestra red local; la regla seria:

rdr on $red_internet proto tcp from any to 200.33.45.111 port www -> 192.168.1.4 port www
ahora viene la regla que usaremos para nuestro caso de 2 servidores Web detras de un firewall

suponemos que nuestro servidor NetBSD es 200.33.45.111 y nuestro servidor Debian es 200.33.45.20

serian 2 reglas de redireccion, en nuestro pf.conf estaria asi:

rdr on $red_internet proto tcp from any to 200.33.45.111 port www -> 200.33.45.111 port www

rdr on $red_internet proto tcp from any to 200.33.45.20 port www -> 200.33.45.20 port www

recordemos que en un paquete TCP, siempre vienen los datos del remitente y el destinatario; nuestro Firewall lee los datos del paquete, lee el destinatario y lo manda a donde le corresponde

ahora, hay que probar esas reglas en el firewall; para activar nuestras reglas, se usaria:

# pfctl -e -f mi_pf.conf

si hay broncas, la desactivamos con:

# pfctl -d
una vez que se vio que funciona; hay que activar en /etc/sysctl.conf:

net.inet.ip.forwarding=1

net.inet6.ip6.forwarding=1

y en nuestro /etc/rc.conf:

pf=YES

pf_rules=/etc/pf.conf

y listo ya tenemos funcionando nuestro PF )

=============================================================================

especial thanks to Hokum )

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: