BSD DevCenter
oreilly.comSafari Books Online.Conferences.

advertisement


FreeBSD Basics

BSD Firewalls: IPFW

04/25/2001

Su sistema FreeBSD viene con dos mecanismos interconstruidos para inspeccionar paquetes IP:ipfw ye ipfilter. Ambos tienen su peculiar sintaxis para crear conjuntos de reglas para determinar qué paquetes permitir y cuáles descartar, así que quisiera demostrar el uso de ambos. Debido a que usted puede ejecutar uno u otro, empezaré con ipfw; una vez que hayamos tenido una buena mirada en éste, nos dedicaremos a ipfilter.

Antes de que pueda usar ipfw, tendrá que agregar algunas opciones a su archivo de configuración del kernel y recompilar éste. Si usted está un poco oxidado para compilar kernels, querrá echar una mirada a esa sección del manual.

Hay varias opciones que pueden usarse por ipfw, así que empecemos echando una mirada a LINT. Haré una búsqueda usando "/" para encontrar rápidamente la sección correcta:

cd /usr/src/sys/i386/conf
more LINT
/IPFIREWALL

# IPFIREWALL enables support for IP firewall construction,
# in conjunction with the 'ipfw' program.  IPFIREWALL_VERBOSE
# sends logged packets to the system logger.
# IPFIREWALL_VERBOSE_LIMIT limits the number of times a
# matching entry can be logged.
#
# WARNING:  IPFIREWALL defaults to a policy of "deny ip
# from any to any" and if you do not add other rules during
# startup to allow access, YOU WILL LOCK YOURSELF OUT.  It
# is suggested that you set firewall_type=open in /etc/rc.conf
# when first enabling this feature, then refining the firewall
# rules in /etc/rc.firewall after you've tested that the new
# kernel feature works properly.
#
# IPFIREWALL_DEFAULT_TO_ACCEPT causes the default rule (at boot)
# to allow everything.  Use with care, if a cracker can crash
# your firewall machine, they can get to your protected machines.
# However, if you are using it as an as-needed filter for
# specific problems as they arise, then this may be for you.
# Changing the default to 'allow' means that you won't get stuck
# if the kernel and /sbin/ipfw binary get out of sync.

Como mínimo, necesita incluir la opción IPFIREWALL para habilitar a ipfw; esto le dice a su kernel que examine cada paquete IP y lo compare con el conjunto de reglas. Es siempre una buena idea incluir soporte al ingreso (logging support), que se hace aņadiendo la opción IPFIREWALL_VERBOSE. También debería limitar la cantidad de paquetes que el kernel registrará por la misma razón que vimos la semana pasada en limitando la cantidad de paquetes ICMP que fueran registrados. Usted limita el registro de paquetes IP con la opción IPFIREWALL_VERBOSE_LIMIT.

También en lo básico de FreeBSD:

Firewalls BSD: Conjuntos de reglas para sintonización fina

Firewalls BSD: conjuntos de reglas IPFW

Explorando su red

Examinando paquetes ICMP

Paquetes IP revelados

Note que la condición por omisión de ipfw es botar todos los paquetes IP excepto aquellos que especificamente haya permitido en su conjunto de reglas. Yo prefiero esta condición pues da control más fino sobre qué paquetes están siendo aceptados; odiaría pensar que mi kernel estaba aceptando paquetes de los cuales no estaba consciente. Definitivamente notaría si los paquetes que quiero no estuvieran siendo aceptados y puedo cambiar mi conjunto de reglas para permitirlos; nunca sabría la diferencia si los paquetes de los cuales no había tenido cuidado estuvieran durmiendo por mi firewall debido a que no hice un conjunto de reglas para denegarlos explícitamente. En consecuencia, no pasaría sobre la condición por omisión incluyendo la opción IPFIREWALL_DEFAULT_TO_ACCEPT.

# IPDIVERT enables the divert IP sockets, used
# by ''ipfw divert''

Esta opción es utilizada en conjunción con natd. Debido a que sólo estoy construyendo un firewall para proteger una sola máquina, no necesitaré esta opción

# IPSTEALTH enables code to support stealth forwarding
# (i.e., forwarding packets without touching the ttl).
# This can be useful to hide firewalls from traceroute
# and similar tools.

Esto suena como una opción interesante, así que la incluiré en mi firewall y veré como funciona cuando pruebe mi firewall.

# Statically Link in accept filters
options            ACCEPT_FILTER_DATA
options            ACCEPT_FILTER_HTTP

No estoy ejecutando un servidor web en esta computadora, así que no compilaré en estas dos opciones.

# The following options add sysctl variables for controlling
# how certain TCP packets are handled.
#
# TCP_DROP_SYNFIN adds support for ignoring TCP packets with
# SYN+FIN. This prevents nmap et al. from identifying the
# TCP/IP stack, but breaks support for RFC1644 extensions
# and is not recommended for web servers.
#
# TCP_RESTRICT_RST adds support for blocking the emission
# of TCP RST packets. This is useful on systems which are
# exposed to SYN floods (e.g. IRC servers) or any system
# which one does not want to be easily portscannable.

De nuevo, voy a incluir esas opciones para ver los resultados cuando pruebe mi firewall.

# ICMP_BANDLIM enables icmp error response bandwidth
# limiting.   You typically want this option as it will
# help protect the machine from D.O.S. packet attacks.
#
options     ICMP_BANDLIM

Esta opción viene habilitada con el kernel por omisión; vimos su comportamiento la semana pasada cuando usamos la utilería nmap.

# DUMMYNET enables the "dummynet" bandwidth limiter.
# You need IPFIREWALL as well. See the dummynet(4)
# manpage for more info. BRIDGE enables bridging between
# ethernet cards -- see bridge(4).

No incluiré esas dos opciones debido a que no necesito hacer ningún análisis de tráfico en esta sola computadora.

Pages: 1, 2, 3

Next Pagearrow





Sponsored by: