Ipfw

Ipfw
Información sobre la plantilla
12302firewall.jpg
Ipfw es un programa de cortafuegos (en inglés, firewall) propio de los sistemas UNIX, principalmente FreeBSD y Mac OS X. Fue escrito y es mantenido por los programadores del proyecto FreeBSD.
DesarrolladorFreeBSD
Última versión estable2.0
Sitio web
http://www.freebsd.org/doc/es/articles/linux-users/firewall.html


Ipfw su sintaxis permite la utilización de funcionalidades avanzadas y así permitir a los usuarios profesionales satisfacer requerimientos avanzados. También puede ser usado como un módulo que se puede cargar en el núcleo (en inglés, kernel) o incorporarse directamente en el mismo. La utilización del mismo como un módulo cargable en el núcleo está altamente recomendado.

Cortafuegos

Igual que Linux dispone de IPTABLES, FreeBSD también disponde de cortafuegos integrado en el kernel, solo que FreeBSD en lugar de uno dispone de tres:

IPFIREWALL o IPFW (el programa para manejar las reglas de IPFW es ipfw) es el cortafuegos que desarrollan y mantienen los desarrolladores de FreeBSD. IPFW se puede combinar con dummynet para conseguir servicios de “traffic shaping” y simular diferentes tipos de conexiones.

Entrada de tráfico SSH

ipfw add allow tcp from any to me 22 in via $ext_if

IPFILTER es el cortafuegos que desarrolla Darren Reed. No es específico de FreeBSD y se ha portado ya a diversos sistemas operativos como NetBSD, OpenBSD, SunOS, HP/UX y Solaris.

  • Ejemplo permite la entrada de tráfico SSH:

pass in on $ext_if proto tcp from any to any port = 22

El último cortafuegos, PF, ha sido desarrollado por el proyecto OpenBSD. PF fue creado como sustituto de IPFILTER, de ahí que la sintaxis de PF sea muy similar a la de IPFILTER. PF se puede combinar con altq para disponer de QoS.

  • Ejemplo para una regla que permite la entrada de tráfico SSH

pass in on $ext_if inet proto tcp from any to ($ext_if) port 22

ipfw es un firewall para freeBSD, en origen, ya que es usado en MAC OSX, y su sabor de Windows es WipFW. Tambien ipfw se usa en la firewall-distro pfSense (que por cierto, su versión 2.0-Release esta recien salida del horno ).

Su potencia esta más que demostrada, (los router Juniper que corren bajo JunOS en realidad son freeBSD customizados con ipfw, al igual que los Cisco se basan en un kernel de linux, nihil novum sub solen, excpeto mejorar y transformar …). Bajo mi punto de vista, la sintaxis de ipfw para crear reglas o ACLs es más clara, versatil y potente que IPtables (el firewall por antonomasia de Linux)

Reglas de filtrado de capa2 o de enlace con ipfw

    1. Denegamos IPv6 denegando trafico de capa 2 del tipo IPv6

ipfw -q add deny ip from any to any layer2 mac-type 0x86DD

    1. Permitimos trafico arp

ipfw -q add allow ip from any to any layer2 mac-type 0×0806

    1. Permitimos autenticacion EAP over LAN (IEEE 802.1X)

ipfw -q add allow ip from any to any layer2 mac-type 0x888e

    1. Permitimos PPPoE Discovery Stage

ipfw -q add allow ip from any to any layer2 mac-type 0×8863

    1. Permitimos PPPoE Session Stage

ipfw -q add allow ip from any to any layer2 mac-type 0×8864

    1. Denegamos trafico de capa 2 que no sea del tipo IPv4 (lo que permite implicitamente trafico de capa 2 del tipo IPv4)

ipfw -q add deny ip from any to any layer2 not mac-type 0×0800

    1. deniega trafico de capa 2 que no sea de tipo IPv4

Nótese que con estas acls no funcionara RARP (reverse arp) del tipo 0×8035, ni el tráfico de VLAN (0×8100)

Se puede usar los mac-type con su denominacion, por ejemplo:

    1. Descartamos trafico de capa 2 que sea del tipo IPv6 y VLAN

ipfw -q add drop log ip from any to any layer2 mac-type ipv6,vlan Por supuesto ipfw admite filtrado de MACs

    1. Dejamos pasar el trafico con origen en la mac 00:01:02:ab:ab:ab a la mac de destino 00:01:02:03:04:05

ipfw -q add pass MAC 00:01:02:03:04:05 00:01:02:ab:ab:ab mac-type

    1. Permitimos broadcast de capa 2 (donde pone mac-type, tambien valdria ether_type )

ipfw -q add pass MAC any ff:ff:ff:ff:ff:ff mac-type

ipfw -q add pass MAC ff:ff:ff:ff:ff:ff any mac-type

Nótese que primero se pone la mac de destino y luego la de origen en la regla y por ultimo la reoxtiax: ¡Y se pueden usar reglas de capa 3 y capa 2 en la misma ACL!.

    1. permitimos trafico de capa 3 desde la ip 192.168.0.11 a cualquier destino con origen en la nic con mac 00:19:e0:8d:d0:43
    1. keep-state crea una regla dinamica temporal para permitir el trafico de retorno,

ipfw -q add allow log ip from 192.168.0.11 to any MAC any 00:19:e0:8d:d0:43 keep-state

    1. log -> indica que escriba en el log o bitacora los eventos coincidentes con la acl

Referencia

Bibliografía