Para poder construir un cortafuegos IP con Linux, es necesario disponer de un núcleo compilado con soporte de cortafuegos de IP y de la utilidad de configuración adecuada. En todos los núcleos anteriores a la serie 2.2 se usaba la utilidad ipfwadm. Los núcleos 2.2.x supusieron el lanzamiento de la tercera generación de cortafuegos de IP para Linux que se denominó 'IP Chains'. 'IP chains' utiliza un programa similar a ipfwadm que se llama ipchains. Los núcleos de Linux 2.3.15 y siguientes soportan la cuarta generación de cortafuegos de IP de Linux que se denomina netfilter. El código de netfilter es el resultado de un gran rediseño del flujo en el manejo de paquetes en Linux. Netfilter es una criatura con múltiples caras, pues proporciona un soporte compatible hacia atrás tanto con ipfwadm como con ipchains además de una nueva orden alternativa que se llama iptables. En las próximas secciones se hablará de las diferencias entre los tres.
El núcleo de Linux debe configurarse para que dé soporte a las funciones de cortafuegos de IP. Sólo hay que seleccionar las opciones adecuadas cuando se realiza un make menuconfig del núcleo. [1] En el Capítulo 3 se describe cómo hacerlo. En los núcleos 2.2, las siguientes opciones deberían ser seleccionadas:
Networking options ---> [*] Network firewalls [*] TCP/IP networking [*] IP: firewalling [*] IP: firewall packet logging |
En cambio, en los núcleos 2.4.0 y posteriores se deberían seleccionar estas opciones:
Networking options ---> [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration ---> . <M> Userspace queueing via NETLINK (EXPERIMENTAL) <M> IP tables support (required for filtering/masq/NAT) <M> limit match support <M> MAC address match support <M> netfilter MARK match support <M> Multiple port match support <M> TOS match support <M> Connection state match support <M> Unclean match support (EXPERIMENTAL) <M> Owner match support (EXPERIMENTAL) <M> Packet filtering <M> REJECT target support <M> MIRROR target support (EXPERIMENTAL) . <M> Packet mangling <M> TOS target support <M> MARK target support <M> LOG target support <M> ipchains (2.2-style) support <M> ipfwadm (2.0-style) support |
La utilidad ipfwadm (el administrador del cortafuegos de IP) es la herramienta que se utiliza para construir las reglas del cortafuegos para todos los núcleos anteriores al 2.2.0. La sintaxis de las órdenes puede resultar muy confusa porque permite realizar un amplio espectro de cosas; aquí se proporcionarán algunos ejemplos comunes que ilustrarán las variaciones más importantes dentro de ese espectro.
La utilidad ipfwadm se incluye en la mayoría de las distribuciones modernas de Linux, aunque quizás no por defecto. Puede que haya un paquete de 'software' específico que tenga que instalar. Si su distribución no la incluye, puede obtener el paquete con el código fuente de ftp.xos.nl dentro del directorio /pub/linux/ipfwadm/, y compilarla usted mismo.
Al igual que la utilidad ipfwadm, la utilidad ipchains puede resultar algo desconcertante al principio. Proporciona toda la flexibilidad de ipfwadm con una sintaxis simplificada, y además proporciona un mecanismo de “encadenamiento” que le permite gestionar múltiples conjuntos de reglas y enlazarlas conjuntamente. Se cubrirá el encadenamiento de reglas en una sección independiente cerca del final de este capítulo, porque resulta un concepto avanzado en la mayoría de las situaciones.
La orden ipchains aparece en la mayoría de las distribuciones de Linux basadas en los núcleos 2.2. Si desea compilarla usted mismo, puede encontrar el paquete con el código fuente en el sitio de desarrollo http://www.rustcorp.com/linux/ipchains/. Con el paquete del código fuente se incluye un guión [2] denominado ipfwadm-wrapper que imita a la orden ipfwadm, pero que realmente invoca la orden ipchains. La migración de una configuración preexistente de cortafuegos resulta menos costosa gracias a este complemento.
La sintaxis de la utilidad iptables es bastante similar a la de ipchains. Los cambios consisten en mejoras y en el resultado del rediseño de la herramienta para que sea extensible a través de bibliotecas dinámicas. Al igual que en el caso de ipchains, se presentarán los equivalentes de los ejemplos con iptables de tal forma que pueda comparar y contrastar su sintaxis con la de las otras utilidades.
La utilidad iptables se incluye en el paquete de código fuente de netfilter que está disponible en http://www.samba.org/netfilter/. También estará incluído en cualquier distribución basada en la serie de núcleos 2.4.
Se hablará un poco del importante paso hacia delante que netfilter representa en una sección dedicada más adelante en este capítulo.
[1] | 'firewall packet logging' (N. del T.: "registro de paquetes del cortafuegos" en español) es una característica especial que permite escribir una línea de información en un dispositivo especial y visible para usted por cada datagrama que coincida con un regla del cortafuegos. |
[2] | N. del T.: 'script' en el original en inglés |