[[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**.