[[Categoría:OpenBSD|Packet-Filter]]
[[Categoría: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**.