Creando Un Firewall Con Packet Filter

23
Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org Como crear un firewall con Packet Filter (PF) Autor: Fernando Quintero (a.k.a nonr00t) Correo electrónico: [email protected] Fecha de creación : 25/03/09 Ultima modificación: 31/03/09 Índice de contenido 1.Licencia (BSD)..................................................................................................................................2 2.Introducción.......................................................................................................................................2 3.Que es un Firewall?...........................................................................................................................2 4.Que es packet filter?..........................................................................................................................3 5.Configuración previa.........................................................................................................................3 5.1.Definir las políticas....................................................................................................................3 5.2.Configuración de las interfaces de red.......................................................................................3 5.3.Habilitar el reenvío de paquetes.................................................................................................4 5.4.Configurar el gateway por defecto.............................................................................................4 5.5.Verificar el DNS.........................................................................................................................5 5.6.Habilitar el PF............................................................................................................................5 5.7.Chequeos de conectividad.........................................................................................................5 6.Ejemplos de firewalls........................................................................................................................6 6.1.Gateway sin restricciones..........................................................................................................6 a.Planteamiento del problema.................................................................................................6 b.Análisis.................................................................................................................................7 c.Solución PASS by default....................................................................................................7 d.Solución BLOCK by default................................................................................................9 6.2.LAN-WAN con restricciones básicas......................................................................................11 a.Planteamiento del problema...............................................................................................11 b.Analisis...............................................................................................................................12 c.Solución PASS by default..................................................................................................12 d.Solución BLOCK by default .............................................................................................14 6.3.LAN-WAN con DMZ..............................................................................................................16 a.Planteamiento del problema...............................................................................................17 b.Análisis...............................................................................................................................17 c.Solución PASS by default..................................................................................................18 d.Solución BLOCK by default..............................................................................................20 7.CONCLUSIONES...........................................................................................................................23 8.Enlaces relacionados.......................................................................................................................23 ________________________________________________________________________________ 1/23

description

crear un firewall con packet filter guia en español

Transcript of Creando Un Firewall Con Packet Filter

Page 1: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

Como crear un firewall con Packet Filter (PF)

Autor: Fernando Quintero (a.k.a nonr00t)Correo electrónico: [email protected]

Fecha de creación : 25/03/09 Ultima modificación: 31/03/09

Índice de contenido1.Licencia (BSD)..................................................................................................................................22.Introducción.......................................................................................................................................23.Que es un Firewall?...........................................................................................................................24.Que es packet filter?..........................................................................................................................35.Configuración previa.........................................................................................................................3

5.1.Definir las políticas....................................................................................................................35.2.Configuración de las interfaces de red.......................................................................................35.3.Habilitar el reenvío de paquetes.................................................................................................45.4.Configurar el gateway por defecto.............................................................................................45.5.Verificar el DNS.........................................................................................................................55.6.Habilitar el PF............................................................................................................................55.7.Chequeos de conectividad.........................................................................................................5

6.Ejemplos de firewalls........................................................................................................................66.1.Gateway sin restricciones..........................................................................................................6

a.Planteamiento del problema.................................................................................................6 b.Análisis.................................................................................................................................7 c.Solución PASS by default....................................................................................................7 d.Solución BLOCK by default................................................................................................9

6.2.LAN-WAN con restricciones básicas......................................................................................11 a.Planteamiento del problema...............................................................................................11 b.Analisis...............................................................................................................................12 c.Solución PASS by default..................................................................................................12 d.Solución BLOCK by default .............................................................................................14

6.3.LAN-WAN con DMZ..............................................................................................................16 a.Planteamiento del problema...............................................................................................17 b.Análisis...............................................................................................................................17 c.Solución PASS by default..................................................................................................18 d.Solución BLOCK by default..............................................................................................20

7.CONCLUSIONES...........................................................................................................................238.Enlaces relacionados.......................................................................................................................23

________________________________________________________________________________ 1/23

Page 2: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

1. Licencia (BSD)Copyright (c) 2009, Fernando Quintero,

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

• Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following

disclaimer in the documentation and/or other materials provided with the distribution. • Neither the name of the OpenBSD Colombia nor the names of its contributors may be used to endorse or promote products

derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ORCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, ORPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2. IntroducciónEn este documento se explicará la forma de crear un firewall basado en Packet Filter (en adelante PF), para esto se presentarán escenarios básicos que ejemplifiquen como proceder desde el principio. También se tendrán en cuenta las políticas por defecto que se usarán para la creación de los mismos:

● PASS BY DEFAULT – ACEPTAR POR OMISIÓN

● BLOCK BY DEFAULT – DENEGAR POR OMISIÓN

Se recomienda leer el documento llamado “¿Como funciona PF?” que se puede encontrar en el sitio de OpenBSD Colombia1.

Espero que este documento les sea de utilidad y como siempre, cualquier duda o comentario lo trataremos por la lista de correo.

3. Que es un Firewall?Un “cortafuegos” (o firewall en inglés) es un elemento de hardware o software que se utiliza en una red de computadoras para controlar las comunicaciones, permitiéndolas o prohibiéndolas según las políticas de red que haya definido la organización responsable de la red. Su modo de funcionar es indicado por la recomendación RFC 2979, que define las características de comportamiento y requerimientos de interoperabilidad. La ubicación habitual de un cortafuegos es el punto de conexión de la red interna de la organización con la red exterior, que normalmente es Internet; de este modo se protege la red interna de intentos de acceso no autorizados desde Internet, que puedan aprovechar vulnerabilidades de los sistemas de la red interna.”2

1 http://groups.google.com/group/OpenBSD-Colombia?hl=es 2 http://es.wikipedia.org/wiki/Cortafuegos_(inform%C3%A1tica )

________________________________________________________________________________ 3.Que es un Firewall? 2/23

Page 3: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

4. Que es packet filter?Tomado de la F.A.Q oficial de PF3

Packet Filter es un sistema de filtrado para OpenBSD, que soporta TCP/IP y permite hacer NAT (Network Address Translation). PF ademas es capaz de normalizar, acondicionar tráfico y proveer un control de ancho de banda para las comunicaciones.

PF viene integrado en el Core del sistema operativo OpenBSD desde la versión 3.0 (la versión actual es la 4.5) y no es necesario descargarlo como una aplicación externa, no hace falta decir que Packet Filter es software libre, por lo tanto el concepto de LICENCIAS por usuario, por conexión, por color, raza o condición social o por lo que sea, NO EXISTE.

PF fue desarrollado inicialmente por Daniel Hartmeier4 y actualmente es mantenido y soportado por él y el resto del equipo OpenBSD.

Para mas información por favor lea las páginas del manual de PF: pf(4)5.

5. Configuración previaComo fase previa a la implantación del firewall se seguirán unos pasos importantes para garantizar que todo funcione como se espera. Por favor, se deben siguir estos pasos en orden y uno a uno, así se evitarán contratiempos en el futuro.

5.1. Definir las políticasUna parte vital del funcionamiento del firewall es tener unas políticas de acceso claras para los usuarios, no sirve de nada tener una excelente herramienta de filtrado si no se sabe que es lo que se quiere hacer. En este punto es importante reflexionar acerca del tráfico que se quiere o no permitir en la red, de los usuarios que se quiere o no permitir, y de los servicios que se publicarán hacia Internet.

En este punto también se debe pensar en el esquema de red en el que va a trabajar el firewall, aunque los esquemas son bien conocidos para el personal de redes, es bueno que defina si la infraestructura de red usará DMZ o no, si tendrá uno o varios firewalls, etc. Esto depende de sus necesidades y de la cantidad de recursos que tenga disponibles. En los ejemplos posteriores se podrán analizar esquemas sencillos usando un solo firewall, lo importante es que se puede replicar esta teoría para diseñar lo que se quiera.

5.2. Configuración de las interfaces de redAntes de proceder a la configuración de un servicio (DNS, DHCP, FTP, WEB, etc) se debe garantizar que las interfaces de red fueron reconocidas y están bien configuradas, esto se debe evidenciar mucho mas cuando se piensa usar una estación como firewall para la red. Algunos problemas que se pueden presentar en este punto son:

● OpenBSD no reconoce las interfaces porque no tiene soporte

● Las tarjetas de red están malas o no funcionan a 1000/1000/10000Mbps

3 http://www.openbsd.org/faq/pf/index.html 4 http://www.benzedrine.cx/dhartmei.html 5 http://www.openbsd.org/cgi-bin/man.cgi?query=pf&sektion=4&manpath=OpenBSD+4.4

________________________________________________________________________________ 5.Configuración previa 3/23

Page 4: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

Verifique que esto no le este ocurriendo y continúe con la configuración:

En este caso se mostrará como configurar tres tarjetas de red para usarlas en el firewall OpenBSD, esta sección de configuración se puede encontrar en la F.A.Q oficial6.

TARJETA WAN:bash-3.2#cathostname.rl0

inet192.168.0.5255.255.255.0

TARJETA LAN:bash-3.2#cathostname.sis0

inet10.0.0.1255.255.255.0

TARJETA DMZ:bash-3.2#cathostname.rl1

inet172.16.0.1255.255.255.0

No hay nada de misterio en esto, se editan los archivos y se definen las IPs con las que se va a trabajar. En este ejemplo se asume que la WAN esta conectada por un enlace ETHERNET, pero recuerde que su conexión puede estar por PPPoE7 o puede ser un enlace WAN de otro tipo. Verifique el tipo de conexión que tiene en la WAN antes de proceder con los pasos siguientes.

5.3. Habilitar el reenvío de paquetesEste paso es necesario para que las tarjetas de red físicas se puedan comunicar entre sí, o sea para que el kernel BSD le permita a los paquetes pasar de un lado a otro. Esto se hace modificando un archivo en el sistema: /etc/sysctl.conf desde donde se controlan algunas variables del kernel. Allí se edita la variable net.inet.ip.forwarding, pasandola de 0 a 1.

Debe queda algo así:

bash-3.2#cat/etc/sysctl.conf|grep“net.inet.ip.forwarding”

net.inet.ip.forwarding=1#1=Permitforwarding(routing)ofIPv4packets

Si se quiere hacer el cambio de forma temporal y no definitiva entonces se hace desde la línea de comandos:

bash-3.2#sysctl-wnet.inet.ip.forwarding=1

5.4. Configurar el gateway por defectoLa puerta de enlace por defecto se configura en el archivo /etc/mygate, en este ejemplo queda de la siguiente forma:

bash-3.2#cat/etc/mygate

192.168.0.100

6 http://www.openbsd.org/faq/faq6.html#Setup 7 http://www.openbsderos.org/wiki/index.php?title=PPPoE_in-kernel

________________________________________________________________________________ 5.Configuración previa 4/23

Page 5: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

La IP 192.68.0.100 representa el router que provee la salida a Internet (recuerde que esto es un escenario diseñado para la creación del manual, posiblemente su ruta por defecto sea una IP pública o privada pero en el rango del ISP).

5.5. Verificar el DNSEl servidor DNS debe estar apuntando al servidor DNS interno o al del proveedor de la conexión. La información como en todo sistema tipo UNIX se encuentra en:

bash-3.2#cat/etc/resolv.conf

searchepm.net.co

nameserver192.168.0.100

5.6. Habilitar el PFEn este paso se va a habilitar el servicio de filtrado en OpenBSD, esto se hace modificando el archivo /etc/rc.conf.local.

bash-3.2#cat/etc/rc.conf.local

#!/bin/sh-

#

#$OpenBSD:rc.conf,v1.1282008/01/3114:18:03reykExp$

#use-utodisablechroot,seehttpd(8)

#httpd_flags=""#fornormaluse:""(or"-DSSL"afterreading

pf=YES

bash-3.2#

Como se puede ver en el ejemplo solo se agrega o modifica la variable pf para que sea igual a YES. Puede leer estos dos manuales para comprender este paso:

http://www.openbsd.org/faq/pf/config.htmlhttp://www.openbsderos.org/wiki/index.php?title=OpenBSD_%2B_PF

Una vez configurada esta variable se debe reiniciar el firewall para que los cambios tengan efecto y el PF habilite un dispositivo de logueo (pflog0) durante el arranque, este permitirá hacer debugging de errores durante la configuración del firewall.

bash-3.2#reboot

5.7. Chequeos de conectividadDespués de reiniciar el sistema vamos a verificar conectividad con los equipos de nuestra red interna y con los equipos de las redes externas, por ejemplo, INTERNET:

________________________________________________________________________________ 5.Configuración previa 5/23

Page 6: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

bash-3.2#pingwww.google.com

PINGwww.l.google.com(209.85.165.147):56databytes

64bytesfrom209.85.165.147:icmp_seq=0ttl=237time=95.024ms

---www.l.google.compingstatistics---

1packetstransmitted,1packetsreceived,0.0%packetloss

round-tripmin/avg/max/std-dev=95.024/95.024/95.024/0.000ms

bash-3.2#

Si en este punto todo esta bien, puede procederse a crear el conjunto de reglas.

6. Ejemplos de firewallsSe construirán tres firewalls típicos, usando políticas PASS y BLOCK por defecto:

● Gateway (2 tarjetas de red)

● LAN y WAN (2 tarjetas de red)

● LAN, DMZ y WAN (3 tarjetas de red)

Por favor haga muchas pruebas antes de concluir que PF no es lo suyo, realmente la sintaxis de PF es la mas simple que he conocido, sin embargo el proceso de aprendizaje en la construcción de reglas toma un tiempo, no se desespere y haga pruebas y mas pruebas. Recuerde que tiene comunidades de Software Libre que le pueden ayudar.

6.1. Gateway sin restriccionesEl esquema mas simple donde se usa un firewall es cuando nos piden que debemos dejar salir a internet un conjunto de maquinas a través de un solo dispositivo conocido como gateway. Esta configuración es la apropiada en este caso.

a. Planteamiento del problema

Fig 1. Esquema básico de funcionamiento como gateway

Según el diagrama Fig 1. se debe cumplir con lo siguiente:

● Los equipos de la LAN deben salir a la WAN para salir a INTERNET

● Se desea permitir conexión desde la LAN al puerto SSH (22) para hacer gestión

● Desde la WAN no se puede conectar a la LAN (no publicar servicios)

________________________________________________________________________________ 6.Ejemplos de firewalls 6/23

Page 7: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

b. AnálisisPara solucionar este ejercicio se debe habilitar el paso de paquetes por la interfaz sis0 y al mismo tiempo hacer NAT en la interfaz de salida, con el fin de que los paquetes que quieran salir se enmascaren y puedan regresar, para los que sepan un poco de Linux se trata del enmascaramiento que se hace en la cadena POSTROUTING cuando salen los paquetes.

c. Solución PASS by defaultUna vez realizados los pasos previos, solo se tendrá que editar el archivo del firewall /etc/pf.conf y agregar las reglas en el orden correcto. Entonces se edita el archivo, que debe quedar parecido a esto:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"

interna="sis0"

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

#Elscruborganizapaquetesdeentradaydesalida,esrecomendabletenerloparaevitarataques#defragmentaciónysimilares.

scrubinall

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexterna#yvayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Lapoliticadeaccesopordefecto,aceptetodo,sinembargonoesnecesarioponerestasdos#reglasporquePFporomisiónlotomaráasí.Lodejocomoalgoilustrativo.

passinkeepstate

________________________________________________________________________________ 6.Ejemplos de firewalls 7/23

Page 8: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

passoutkeepstate

#BloqueetodoloqueintenteentrarporlaWAN

blockinquickon$externa

Una vez creado el archivo se debe grabar, observe que las reglas de NAT deben ir antes de las reglas de filtrado, esto es requisito para que PF considere correcto el archivo de configuración.

Se usarán varias opciones del comando pfctl para verificar el funcionamiento del firewall.

Verificando que las reglas estén bien escritas:

bash-3.2#pfctl-nf/etc/pf.conf

Si este comando NO produce errores, entonces se procede a recargar la configuración del firewall:

bash-3.2#pfctl-f/etc/pf.conf

(¿alcanzó a observar que ya no está la opción -n ?)

Luego se comprueban las reglas definidas.

Reglas de filtrado:

bash-3.2#pfctl-sr

scrubinallfragmentreassemble

scruboutallfragmentreassemble

passinallflagsS/SAkeepstate

passoutallflagsS/SAkeepstate

blockdropinquickonrl0all

Reglas de NAT:

bash-3.2#pfctl-sn

natonrl0from!(rl0)toany->(rl0)round-robin

bash-3.2#

Las reglas pueden aparecer con mas o menos información, pero en general deben ser las mismas reglas que definimos en el archivo.

Una vez recargado el firewall se procede a realizar pruebas desde la LAN hacia la WAN y desde la WAN al firewall, por ejemplo haciendo un nmap desde la WAN:

________________________________________________________________________________ 6.Ejemplos de firewalls 8/23

Page 9: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

nonroot$nmap192.168.0.5

StartingNmap4.76(http://nmap.org)at2009-03-1919:59COT

Note:Hostseemsdown.Ifitisreallyup,butblockingourpingprobes,try-PN

Nmapdone:1IPaddress(0hostsup)scannedin2.10seconds

No hay respuesta desde nuestro firewall, ¡justo lo deseado!.

¡Un momento!, y donde esta la regla que permite el acceso al servidor SSH desde la LAN?

ahhhh, como la política es aceptar por defecto, entonces todo el tráfico desde la LAN estará permitido, por lo que crear una regla adicional no es necesario ;).

No sobra decir que se debe tener habilitado el servidor SSH escuchando en la interfaz sis0.

d. Solución BLOCK by defaultPara solucionar el mismo ejercicio con BLOCK by default hay que entender como piensa PF respecto a los paquetes que cruzan las interfaces, para esto se recomienda nuevamente leer el documento “COMO FUNCIONA PF” que puede encontrar en el repositorio de archivos de la comunidad OpenBSD Colombia. Teniendo en cuenta que OpenBSD desde la versión 4.1 maneja estados por defecto, solo habrá que preocuparse por las reglas en un sentido. También hay que recordar que el NAT se aplica antes de evaluar las reglas de filtrado, y que cuando se aplica la regla NAT se traduce la dirección, esto hay que tenerlo en cuenta para cuando se tienen varias IP en la misma interfaz física, aunque no es el común de los escenarios que estamos tratando.

El firewall quedaría así:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"

interna="sis0"

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

#Elscruborganizapaquetesdeentradaydesalida,esrecomendabletenerloparaevitarataques#defragmentaciónysimilares.

________________________________________________________________________________ 6.Ejemplos de firewalls 9/23

Page 10: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

scrubinall

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexternay#vayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Lapoliticadeaccesopordefecto,bloqueetodoencualquierdirección

blockinall

blockoutall

#SehabilitalaentradadepaquetesdesdelaLANhaciacualquierdestino

passinlogquickon$internafrom10.0.0.0/24toany

#SehabilitalasalidadepaquetesparalainterfazWAN,esnecesarioporquedelocontrariolos#paquetessololleganhastalainterfazinternaynoselespermiteel#pasoaunquesehagaNAT.

passoutlogquickon$externafromanytoany

Observe que en el ejemplo se agrega una palabra mágica “log”, esta palabra lo que hace es loguear cada paquete que coincida (match), de esta forma se puede verificar si los paquetes están pasando o no por las interfaces. Para verificar esto se usa la interfaz que el PF crea durante el arranque en conjunto con la utilidad tcpdump que viene por defecto en el sistema.

bash-3.2#tcpdump-e-n-ttt-ipflog0

tcpdump:listeningonpflog0,link-typePFLOG

Mar1917:13:16.583078rule3/(match)passinonsis0:10.0.0.2>192.168.0.100:icmp:echorequest(DF)

Mar1917:13:16.583199rule4/(match)passoutonrl0:192.168.0.5>192.168.0.100:icmp:echorequest(DF)

Mar1917:13:31.891655rule3/(match)passinonsis0:10.0.0.2>192.168.0.100:icmp:echorequest(DF)

Mar1917:13:31.891781rule4/(match)passoutonrl0:192.168.0.5>192.168.0.100:icmp:echorequest(DF)

Mar1917:13:38.482841rule3/(match)passinonsis0:10.0.0.2.56030>192.168.0.100.53:[|domain](DF)

Mar1917:13:38.482965rule4/(match)passoutonrl0:192.168.0.5.61275>192.168.0.100.53:[|domain](DF)

Mar1917:13:38.485611rule3/(match)passinonsis0:10.0.0.2>209.85.165.104:icmp:echorequest(DF)

Mar1917:13:38.485645rule4/(match)passoutonrl0:192.168.0.5>209.85.165.104:icmp:echorequest(DF)

Mar1917:13:38.596109rule3/(match)passinonsis0:10.0.0.2.38059>192.168.0.100.53:[|domain](DF)

Mar1917:13:38.596137rule4/(match)passoutonrl0:192.168.0.5.52771>192.168.0.100.53:[|domain](DF)

Se ve que las reglas hacen match en orden, primero la de entrada en la interfaz interna y luego en la de salida

Esta captura es el resultado de un ping que se hace desde una maquina interna 10.0.0.2 al gateway

________________________________________________________________________________ 6.Ejemplos de firewalls 10/23

Page 11: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

de la WAN 192.168.0.100 y luego a una dirección pública de Internet.

Ahora las reglas que no son necesarias son las de acceso desde la WAN, ya que por defecto todo estará bloqueado. Observe ademas el uso de la palabra quick en las reglas de paso, puesto que las acciones de estas reglas se deben ejecutar en el momento en que se encuentran, de otro modo al finalizar el listado de reglas PF aplicará la política por defecto.

6.2. LAN-WAN con restricciones básicasEste escenario es el típico cuando hay equipos que ofrecen servicios dentro de la red y se requiere que sean alcanzables desde Internet, tales como servidores web, de correo e incluso plantas telefonicas. Tambien hay restricciones básicas de salida a internet como bloquear el MSN para los usuarios de la LAN.

a. Planteamiento del problema

Fig 2. Firewall de filtrado básico

Según la Fig 2. se creará un firewall que cumpla con lo siguiente:

● Permita la salida de la LAN a la WAN, excepto al servicio de MSN

● Redireccione peticiones desde la WAN para el servidor de correo

● Redireccione peticiones desde la WAN para el servidor web

● Redireccione peticiones desde la WAN para la planta telefonica

● Habilite un puerto de acceso SSH desde la WAN y la LAN

● El resto de tráfico proveniente desde la WAN estará bloqueado

________________________________________________________________________________ 6.Ejemplos de firewalls 11/23

Page 12: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

b. AnálisisPara resolver este problema se deben conocer los puertos que usan los servicios que nos piden, entonces tenemos:

Servidor web: 443 (https), 80 (http)

Servidor de correo: 25 (smtp), 993 (imap seguro), 995 (pop3 seguro), 110 (pop3), 143 (imap)

Planta telefónica VoIP: 5060 udp (señalización sip) + 10000 al 20000 para RTP (la voz)

Los puertos para correo y web son TCP, los de la planta VoIP son UDP.

Para filtrar el acceso al MSN: podemos usar el puerto por omisión: tcp 1863.

Muchos pensarán que esto NO es suficiente para bloquear el MSN, pero entonces vamos a pretender que SI es suficiente, de lo contrario que lo demuestre con un documento en español y lo envíe a la lista :P, recuerden que es un ejemplo, cuyo único propósito es aprender PF.

c. Solución PASS by defaultUna vez realizados los pasos previos, solo se tendrá que editar el archivo del firewall /etc/pf.conf y agregar las reglas en el orden correcto. Entonces se edita el archivo, que debe quedar parecido a esto:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"

interna="sis0"

servidor_web=”10.0.0.2”

servidor_correo=”10.0.0.3”

servidor_voip=”10.0.0.4”

puerto_msn=“1863”

red_lan=”10.0.0.0/24”

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

________________________________________________________________________________ 6.Ejemplos de firewalls 12/23

Page 13: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

#Elscruborganizapaquetesdeentradaydesalida,esrecomendabletenerloparaevitarataques#defragmentaciónysimilares.

scrubinall

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexternay#vayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Redireccionandolospuertosalservidordecorreo

rdrlogon$externaprototcpfromanyto($externa)port25->$servidor_correo

rdrlogon$externaprototcpfromanyto($externa)port110->$servidor_correo

rdrlogon$externaprototcpfromanyto($externa)port143->$servidor_correo

rdrlogon$externaprototcpfromanyto($externa)port993->$servidor_correordrlogon$externaprototcpfromanyto($externa)port995->$servidor_correo

#Redireccionandolospuertosalservidorweb

rdrlogon$externaprototcpfromanyto($externa)port80->$servidor_web

rdrlogon$externaprototcpfromanyto($externa)port443->$servidor_web

#RedireccionandolospuertosalaplantaIP,observequeestossonUDP

rdrlogon$externaprotoudpfromanyto($externa)port5060->$servidor_voip

rdrlogon$externaprotoudpfromanyto($externa)port10000:20000->$servidor_voip

#Lapoliticadeaccesopordefecto,aceptetodo,sinembargonoesnecesarioponerestasdos#reglasporquePFporomisiónlotomaráasí.Lodejocomoalgoilustrativo.

passinkeepstate

passoutkeepstate

#AcepteconexionesdesdelaWANalospuertosaredireccionaryalpuerto22local

passinlogquickon$externaprototcpfromanyto($externa)port22passinlogquickon$externaprototcpfromanyto$servidor_webport80passinlogquickon$externaprototcpfromanyto$servidor_webport443passinlogquickon$externaprototcpfromanyto$servidor_correoport25passinlogquickon$externaprototcpfromanyto$servidor_correoport110passinlogquickon$externaprototcpfromanyto$servidor_correoport143passinlogquickon$externaprototcpfromanyto$servidor_correoport993passinlogquickon$externaprototcpfromanyto$servidor_correoport995passinlogquickon$externaprotoudpfromanyto$servidor_voipport5060passinlogquickon$externaprotoudpfromanyto$servidor_voipport10000:20000

________________________________________________________________________________ 6.Ejemplos de firewalls 13/23

Page 14: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

#NopermitaelpasodelasconexionesdelMSNprovenientesdesdelaLAN

blockinlogquickon$internaprototcpfrom$red_lantoanyport1863

#BloqueetodoelrestodepeticionesqueintentenentrarporlaWAN

blockinquickon$externa

La conexiones desde la LAN al puerto 22 se permitirán puesto que no he dicho lo contrario en el firewall. Observe que las reglas de redireccionamiento se parecen mucho, por lo tanto podríamos usar macros para hacerlo mas sencillo:

Las siguientes reglas se pueden agrupar.

#Redireccionandolospuertosalservidordecorreo

rdrlogon$externaprototcpfromanyto($externa)port110->$servidor_correo

rdrlogon$externaprototcpfromanyto($externa)port143->$servidor_correo

rdrlogon$externaprototcpfromanyto($externa)port993->$servidor_correordrlogon$externaprototcpfromanyto($externa)port995->$servidor_correo

Para tener algo como:rdrlogon$externaprototcpfromanyto($externa)port$puertos_correo->$servidor_correo

no sin antes definir la macro “puertos_correo”, de la siguiente forma:

puertos_correo=”{25110143993995}”

Se puede hacer lo mismo para los conjuntos de reglas que se parezcan.

Despues de crear el archivo, se recarga el firewall:

bash-3.2#pfctl-f/etc/pf.conf

d. Solución BLOCK by default Se edita el archivo, que debe quedar parecido a esto:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"

interna="sis0"

servidor_web=”10.0.0.2”

________________________________________________________________________________ 6.Ejemplos de firewalls 14/23

Page 15: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

servidor_correo=”10.0.0.3”

servidor_voip=”10.0.0.4”

puerto_msn=“1863”puertos_correo=”{25110143993995}”puertos_web=”{80443}”puertos_voip=”{506010000:20000}”

red_lan=”10.0.0.0/24”

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

#El scrub organiza paquetes de entrada y de salida, es recomendable tenerlo para evitar#ataquesdefragmentaciónysimilares.

scrubinall

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexternay#vayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Redireccionandolospuertosalservidordecorreo

rdrlogon$externaprototcpfromanyto($externa)port$puertos_correo->$servidor_correo

#Redireccionandolospuertosalservidorweb

rdrlogon$externaprototcpfromanyto($externa)port$puertos_web->$servidor_web

#RedireccionandolospuertosalaplantaIP,observequeestossonUDP

rdrlogon$externaprotoudpfromanyto($externa)port$puertos_voip->$servidor_voip

#Lapoliticadeaccesopordefecto,bloqueetodo

blockinall

blockoutall

#AcepteconexionesdesdelaWANalpuertoSSH

passinlogquickon$externaprototcpfromanyto($externa)port22passoutlogquickon$externaprototcpfromanytoanyport22

#AcepteelpasodelasconexionesentrantesporlaWAN

________________________________________________________________________________ 6.Ejemplos de firewalls 15/23

Page 16: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

#Parapuertosdecorreopassinlogquickon$externaprototcpfromanyto$servidor_correoport$puertos_correo

#Parapuertosweb

passinlogquickon$externaprototcpfromanyto$servidor_webport$puertos_web

#parapuertosVoIP

passinlogquickon$externaprotoudpfromanyto$servidor_voipport$puertos_voip

#Permitaelaccesodesalidaenlainterfazinterna,puestoquehabilitamoslaentradaenlaWAN,#debemosgarantizarlasalidaenlaLAN,recuerdenlasreglas(1)y(2)en#elmanualdecomo#funcionaPF.passoutlogquickon$internafromanyto$servidor_webpassoutlogquickon$internafromanyto$servidor_correopassoutlogquickon$internafromanyto$servidor_voip

#NopermitaelpasodelasconexionesdelMSNprovenientesdesdelaLAN

blockinlogquickon$internaprototcpfrom$red_lantoanyport1863

#PermitaelrestodeconexionesdesdelaLAN,observequesiempreseaplicanlasreglaspor#parejas,enunainterfazdejoentrarlospaquetesyenlaotralosdejo#salir.

passinlogquickon$internafrom$red_lantoanypassoutlogquickon$externafromanytoany

En este ejercicio definieron algunas macros para disminuir la cantidad de reglas.Una vez creado el archivo, no olvide recargar el firewall:

bash-3.2#pfctl-f/etc/pf.conf

6.3. LAN-WAN con DMZEn este ejercicio se busca proteger un poco mas la infraestructura privada (LAN), creando una zona desmilitarizada8, lo que se hace es separar los servidores que están mas expuestos y meterelos en esta zona. Para crear una DMZ es necesario tener otra interface de red, así que recuerde verificar que el sistema la reconozca y que este bien configurada.

8 http://es.wikipedia.org/wiki/DMZ

________________________________________________________________________________ 6.Ejemplos de firewalls 16/23

Page 17: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

a. Planteamiento del problema

Fig 3. Firewall con DMZ

Según la Fig 3. vamos se creará un firewall que cumpla con lo siguiente:

● Los usuarios de la LAN solo pueden navegar en Internet, se prohibe el uso de P2P y cualquier otro protocolo diferente a HTTP y HTTPS.

● El servidor SIP es alcanzable desde la WAN, solo a los puertos necesarios.

● Los servidores web y de correo están en la DMZ, se debe poder acceder desde la LAN y desde la WAN a estos servicios.

● El servidor de BD MySQL es alcanzable desde los dos servidores de la DMZ.

● El tráfico DNS es permitido entre todas las interfaces

● Se habilita el acceso SSH desde la WAN y desde la LAN al firewall

● No debe haber mas tráfico que el especificado desde la DMZ hacia la LAN

● Los pings estan habilitados internamente, entre DMZ y LAN, pero no desde la WAN

b. AnálisisPara trabajar en este firewall se debe usar la experiencia obtenida en la implementación de los ejercicios anteriores. Se diseñará bloqueando los accesos en las interfaces correspondientes, en las reglas de entrada (in) y se le dará paso por la interfaz donde vaya a salir, en las reglas de salida (out).

Los puertos de este ejercicio son los mismos con los que se trabajó en el ejercicio anterior, excepto por el puerto del servidor MySQL que es el 3306 tcp y el puerto del servicio DNS que puede ser udp o tcp y es el 53.

________________________________________________________________________________ 6.Ejemplos de firewalls 17/23

Page 18: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

También se piden reglas relacionadas los pings, que son paquetes icmp.

c. Solución PASS by defaultUna vez realizados los pasos previos, solo se tendrá que editar el archivo del firewall /etc/pf.conf y agregar las reglas en el orden correcto. Entonces se edita el archivo, que debe quedar parecido a esto:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"interna="sis0"dmz=”rl1”servidor_web=”172.16.0.2”servidor_correo=”172.16.0.3”servidor_voip=”10.0.0.4”servidor_mysql=”10.0.0.3”red_lan=”10.0.0.0/24”red_dmz=”172.16.0.0/24”puerto_dns=“53”puerto_mysql=”3306”puertos_correo=”{25110143993995}”puertos_web=”{80443}”puertos_voip=”{506010000:20000}”

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

#Elscruborganizapaquetesdeentradaydesalida,esrecomendabletenerloparaevitarataques#defragmentaciónysimilares.

scrubinall

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexternay#vayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Redireccionandolospuertosalservidordecorreo

________________________________________________________________________________ 6.Ejemplos de firewalls 18/23

Page 19: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

rdrlogon$externaprototcpfromanyto($externa)port$puertos_correo->$servidor_correo

#Redireccionandolospuertosalservidorweb

rdrlogon$externaprototcpfromanyto($externa)port$puertos_web->$servidor_web

#RedireccionandolospuertosalaplantaIP,observequeestossonUDP

rdrlogon$externaprotoudpfromanyto($externa)port$puertos_voip->$servidor_voip

#Lapoliticadeaccesopordefecto,aceptetodo,sinembargonoesnecesarioponerestasdos#reglasporquePFporomisiónlotomaráasí.Lodejocomoalgoilustrativo.

passinkeepstate

passoutkeepstate

#AcepteconexionesexternasalservidorSSH

passinlogquickon$externaprototcpfromanyto($externa)port22passinlogquickon$internaprototcpfrom$red_lanto($interna)port22

#Acepteconexionesexternasalosdiferentesservidores

passinlogquickon$externaprototcpfromanyto$servidor_webport$puertos_webpassinlogquickon$externaprototcpfromanyto$servidor_correoport$puertos_correopassinlogquickon$externaprotoudpfromanyto$servidor_voipport$puertos_voip

#AceptesoloconexionesHTTPyHTTPSdelaLANalaWANpassinlogquickon$internaprototcpfrom$red_lantoanyport$puertos_web

#AceptesoloconexionesdelaLANparalaDMZalospuertosdecorreoywebpassinlogquickon$internaprototcpfrom$red_lanto$servidor_webport$puertos_webpassinlogquickon$internaprototcpfrom$red_lanto$servidor_correoport$puertos_correo

#PermitaelpasodesdelosservidoresdelaDMZalservidorMySQLpassinlogquickon$dmzprototcpfrom$red_dmzto$servidor_mysqlport$puerto_mysql

#ElpasodetráficoPINGespermitidoentretodaslasinterfacespassinlogquickon$internaprotoicmpfromanytoanypassinlogquickon$dmzprotoicmpfromanytoany

#ElpasodetráficoDNSespermitidoentretodaslasinterfacespassinlogquickon$internaprototcpfromanytoanyport$puerto_dnspassinlogquickon$internaprotoudpfromanytoanyport$puerto_dnspassinlogquickon$dmzprototcpfromanytoanyport$puerto_dnspassinlogquickon$dmzprotoudpfromanytoanyport$puerto_dns

#Bloqueetodoelrestodepeticionesqueintentenentrarporlasinterfaces

________________________________________________________________________________ 6.Ejemplos de firewalls 19/23

Page 20: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

blockinquickon$externablockinquickon$dmzblockinquickon$interna

Recuerde recargar el firewall una vez creado el archivo:

bash-3.2#pfctl-f/etc/pf.conf

En este firewall se bloquea al final todos los paquetes que entran en las interfaces para hacerlo mas seguro, con eso estamos garantizando que solo el tráfico especificado es el que tiene acceso:

DNS, ICMP, WEB ,CORREO y MySQL.

d. Solución BLOCK by defaultUna vez realizados los pasos previos, solo se tendrá que editar el archivo del firewall /etc/pf.conf y agregar las reglas en el orden correcto. Entonces se edita el archivo, que debe quedar parecido a esto:

bash-3.2#cat/etc/pf.conf

#$OpenBSD:pf.conf,v1.352008/02/2917:04:55reykExp$

#Seepf.conf(5)and/usr/share/pfforsyntaxandexamples.

#Remembertosetnet.inet.ip.forwarding=1and/ornet.inet6.ip6.forwarding=1

#in/etc/sysctl.confifpacketsaretobeforwardedbetweeninterfaces.

#Definiciondeinterfaces,conmacrosparausarpalabrasmasnemotecnicas

externa="rl0"interna="sis0"dmz=”rl1”servidor_web=”172.16.0.2”servidor_correo=”172.16.0.3”servidor_voip=”10.0.0.4”servidor_mysql=”10.0.0.3”red_lan=”10.0.0.0/24”red_dmz=”172.16.0.0/24”puerto_dns=“53”puerto_mysql=”3306”puertos_correo=”{25110143993995}”puertos_web=”{80443}”puertos_voip=”{506010000:20000}”

#Estareglaesparaquenoseapliquenfiltrosenlainterfazloopback=127.0.0.1=lo

setskiponlo

#Elscruborganizapaquetesdeentradaydesalida,esrecomendabletenerloparaevitarataques#defragmentaciónysimilares.

scrubinall

________________________________________________________________________________ 6.Ejemplos de firewalls 20/23

Page 21: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

scruboutall

#Aquisehaceelenmascaramiento,laregladice:hagaNATenlainterfazexterna(rl0)siemprey#cuandolospaquetesvengandesdeunaredquenosea laexternay#vayanparacualquier#lugar.

naton$externainetfrom!($externa)toany->($externa)

#Redireccionandolospuertosalservidordecorreo

rdrlogon$externaprototcpfromanyto($externa)port$puertos_correo->$servidor_correo

#Redireccionandolospuertosalservidorweb

rdrlogon$externaprototcpfromanyto($externa)port$puertos_web->$servidor_web

#RedireccionandolospuertosalaplantaIP,observequeestossonUDP

rdrlogon$externaprotoudpfromanyto($externa)port$puertos_voip->$servidor_voip

#Lapoliticadeaccesopordefectobloqueetodo

blockinall

blockoutall

#AcepteconexionesexternasalservidorSSHreglaINpassinlogquickon$externaprototcpfromanyto($externa)port22passinlogquickon$internaprototcpfromanyto($interna)port22

#AcepteconexionesexternasalservidorSSHreglaOUTpassoutlogquickon$externaprototcpfromanytoanyport22passoutlogquickon$internaprototcpfromanytoanyport22

#AcepteconexionesexternasalosdiferentesservidoresreglasIN

passinlogquickon$externaprototcpfromanyto$servidor_webport$puertos_webpassinlogquickon$externaprototcpfromanyto$servidor_correoport$puertos_correopassinlogquickon$externaprotoudpfromanyto$servidor_voipport$puertos_voip

#AcepteconexionesexternasalosdiferentesservidoresreglasOUTpassoutlogquickon$internaprotoudpfromanyto$servidor_voipport$puertos_voip

________________________________________________________________________________ 6.Ejemplos de firewalls 21/23

Page 22: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

#AceptesoloconexionesHTTPyHTTPSdelaLANalaWANreglasINpassinlogquickon$internaprototcpfrom$red_lantoanyport$puertos_web

#AceptesoloconexionesHTTPyHTTPSdelaLANalaWANreglasOUTpassoutlogquickon$externaprototcpfromanytoanyport$puertos_web

#AceptesoloconexionesdelaLANparalaDMZalospuertosdecorreoywebreglasINpassinlogquickon$internaprototcpfrom$red_lanto$servidor_webport$puertos_webpassinlogquickon$internaprototcpfrom$red_lanto$servidor_correoport$puertos_correo

#AceptesoloconexionesdelaLANparalaDMZalospuertosdecorreoywebreglasOUTpassoutlogquickon$dmzprototcpfromanyto$servidor_webport$puertos_webpassoutlogquickon$dmzprototcpfromanyto$servidor_correoport$puertos_correo

#PermitaelpasodesdelosservidoresdelaDMZalservidorMySQLreglaINpassinlogquickon$dmzprototcpfrom$red_dmzto$servidor_mysqlport$puerto_mysql

#PermitaelpasodesdelosservidoresdelaDMZalservidorMySQLreglaOUTpassoutlogquickon$internaprototcpfrom$red_dmzto$servidor_mysqlport$puerto_mysql

#ElpasodetráficoPINGespermitidoentretodaslasinterfacesreglasINpassinlogquickon$internaprotoicmpfromanytoanypassinlogquickon$dmzprotoicmpfromanytoany

#ElpasodetráficoPINGespermitidoentretodaslasinterfacesreglasOUTpassoutlogquickon$externaprotoicmpfromanytoanypassoutlogquickon$dmzprotoicmpfromanytoanypassoutlogquickon$internaprotoicmpfromanytoany

#ElpasodetráficoDNSespermitidoentretodaslasinterfacesreglasINpassinlogquickon$internaprototcpfromanytoanyport$puerto_dnspassinlogquickon$internaprotoudpfromanytoanyport$puerto_dnspassinlogquickon$dmzprototcpfromanytoanyport$puerto_dnspassinlogquickon$dmzprotoudpfromanytoanyport$puerto_dns

#ElpasodetráficoDNSespermitidoentretodaslasinterfacesreglasOUTpassoutlogquickon$internaprototcpfromanytoanyport$puerto_dnspassoutlogquickon$dmzprototcpfromanytoanyport$puerto_dnspassoutlogquickon$externaprototcpfromanytoanyport$puerto_dnspassoutlogquickon$internaprotoudpfromanytoanyport$puerto_dnspassoutlogquickon$dmzprototcpudpanytoanyport$puerto_dnspassoutlogquickon$externaprotoudpfromanytoanyport$puerto_dns

Recuerde recargar el firewall una vez creado el archivo:

bash-3.2#pfctl-f/etc/pf.conf

NOTA: Para todos los firewalls que usan macros, verifique que los valores estén encerrados entre comillas dobles, de lo contrario PF presentará errores al cargar las reglas.

________________________________________________________________________________ 6.Ejemplos de firewalls 22/23

Page 23: Creando Un Firewall Con Packet Filter

Como crear un firewall con Packet Filter (PF) - Fernando Quintero (a.k.a nonr00t), http://www.openbsdcolombia.org

7. CONCLUSIONES

● Diseñar un firewall es, en un alto porcentaje, una tarea que consiste en entender realmente que es lo que se quiere hacer, la mayoría de las veces vamos a intentar crea reglas tratando de cubrir nuestras necesidades sobre la marcha y esa falta de planeación hará que las reglas implementadas no sean las mas adecuadas, independiente del firewall a implementar siempre debe haber una planeación como se muestra en cada ejercicio propuesto.

Planteamiento del problema, análisis, diseño y pruebas.

● Se pudo observar la flexibilidad de PF al adaptarse a diferentes escenarios con diferentes políticas de acceso por defecto. Se concluye, entonces, que La herramienta es fácil de usar, como siempre, solo se requiere un poco de practica.

● De las configuraciones se puede observar que las reglas con “BLOCK by default” son mas fáciles de entender que las “PASS by default”, pero no siempre serán útiles, dado que esta elección depende de los requerimientos que tengamos. Use las primeras cuando haya mas asuntos que prohibir que los que se deban permitir, en caso contrario trabaje con las segundas.

● Si bien no se estan mostrando todas las características avanzadas de PF, se presentan configuraciones funcionales que le pueden servir para adaptarlas a otros escenarios.

● Se puede observar la facilidad de interpretación de la sintaxis de PF, que guarda semejanza con el lenguaje cotidiano (nos evitamos reglas confusas con INPUT, OUTPUT, PREROUTING, -i, -o, -d, -s, ETC). Esto permite que el manejo de esta herramienta sea aprendido y asimilado en menos tiempo en comparación con otras herramientas con las que se pretende lograr los mismos resultados.

8. Enlaces relacionados

● Guía oficial de PF: http://www.openbsd.org/faq/pf/

● Guía oficial de PF en español (desactualizada): http://www.openbsd.org/faq/pf/es

● RFC sobre diseño de firewalls: http://tools.ietf.org/html/rfc2979

● Sitio oficial de OpenBSD Colombia: http://www.openbsdcolombia.org/

● Blog site del autor del documento: http://nonroot.blogspot.com/

! Larga vida a OpenBSD !

________________________________________________________________________________ 8.Enlaces relacionados 23/23