9.7. Cortafuegos 'IP Chains' (n�cleos 2.2)

La mayor�a de los aspectos de GNU/Linux evolucionan para satisfacer las cada vez mayores demandas de sus usuarios; el cortafuegos de IP no es una excepci�n. La implementaci�n del cortafuegos de IP tradicional resulta suficiente para la mayor�a de las aplicaciones, pero puede resultar engorroso y poco eficiente para configurar en entornos complejos. Para resolver este problema, se desarroll� un nuevo m�todo de configuraci�n del cortafuegos de IP as� como nuevas caracter�sticas relacionadas. Este nuevo m�todo fue denominado “Cortafuegos 'IP Chains'[1]” y fue liberado por vez primera para uso general en el n�cleo 2.2.0.

El soporte del cortafuegos 'IP Chains' fue desarrollado por Paul Russell y Michael Neuling[2]. Paul es el autor del documento sobre 'IP Chains' IPCHAINS-HOWTO.

El cortafuegos 'IP Chains' le permite desarrollar clases de reglas de cortafuegos a las que puede entonces a�adir y quitar 'hosts' o redes. Una consecuencia colateral del encadenamiento de reglas de cortafuegos es que puede mejorar el rendiminento del cortafuegos en aquellas configuraciones en las que haya montones de reglas.

El cortafuegos 'IP Chains' est� soportado por las series de n�cleos 2.2 y tambi�n se encuentran disponibles como un parche para la series de n�cleos 2.0.*. El HOWTO describe d�nde obtener el parche y proporciona montones de pistas �tiles sobre c�mo utilizar de forma efectiva la utilidad de configuraci�n ipchains.

9.7.1. Uso de ipchains

Existen dos formas de emplear la utilidad ipchains. La primera forma consiste en utilizar el gui�n de "shell" ipfwadm-wrapper, que es b�sicamente un sustituto de la orden ipfwadm y que llama por debajo al programa ipchains. Si esto es lo que desea, no siga leyendo y relea las secciones previas que describen ipchains, poniendo ipfwadm-wrapper en su lugar. Esto funcionar�, pero no se garantiza que el gui�n se mantenga en un futuro, y en ese caso no dispondr� de las caracter�sticas avanzadas que el cortafuegos 'IP Chains' vaya a ofrecer.

La segunda forma de utilizar ipchains consiste en aprender su nueva sintaxis y modificar cualquier configuraci�n existente que exija utilizar la nueva sintaxis en lugar de la antigua. Con algunas consideraciones cuidadosas, se dar� cuenta de que puede optimizar su configuraci�n a la vez que realiza la conversi�n. La sintaxis de ipchains es m�s f�cil de aprender que la de ipfwadm, por lo que resultar� una buena opci�n.

La orden ipfwadm manipulaba tres conjuntos de reglas para el prop�sito de configurar el cortafuegos. Con el cortafuegos 'IP Chains', podr� crear un n�mero arbitrario de conjuntos de reglas, cada una enlazada con otra, pero siguen estando presentes siempre tres conjuntos de reglas relacionadas con la funci�n del cortafuegos. Los conjuntos de reglas est�ndares son los directos equivalentes de los utilizados con ipfwadm, exceptuando el hecho de que ahora tiene nombre: input, forward y output.

Veamos primero la sintaxis general de la orden ipchains, despu�s se ver� como utilizar ipchains en lugar de ipfwadm sin preocuparse acerca de sus caracter�sticas avanzadas de encadenamiento. Se har� reutilizando nuestros ejemplos anteriores

9.7.2. Sintaxis de la orden ipchains

La sintaxis de la orden ipchains es bastante directa. Se contemplar�n los ejemplos m�s importantes. La sintaxis general de la mayor�a de las �rdenes de ipchains es:
    ipchains orden especificaci�n_de_regla opciones

9.7.2.1. �rdenes

Existen diversas formas de manipular las reglas y conjuntos de reglas con la orden ipchains. Las relevantes para la funcionalidad de cortafuegos de IP son:

-A cadena

A�ade una o m�s reglas al final de la cadena especificada. Si se proporciona un nombre de 'host' como origen o destino que se resuelve a m�s de una direcci�n IP, entonces se a�ade una regla por cada una de las direcciones.

-I cadena numero_de_regla

Inserta una o m�s reglas al principio de la cadena especificada. De nuevo, si se proporciona un nombre de 'host', se a�ade una regla por cada direcci�n que se resuelva.

-D cadena

Elimina una o m�s reglas de la cadena especificada que coincida con la especificaci�n de regla.

-D cadena n�mero_de_regla

Elimina la regla ubicada en la posici�n n�mero_de_regla de la cadena especificada. Las posiciones de reglas comienzan por uno en la primera regla de la cadena.

-R cadena n�mero_de_regla

Reemplaza la regla ubicada en la posici�n n�mero_de_regla de la cadena especificada por la especificaci�n de regla proporcionada.

-C cadena

Comprueba el datagrama que se describe con la especificaci�n de la regla contra la cadena especificada. Esta orden devuelve un mensaje que describe c�mo se procesar� el datagrama por la cadena. Esto resulta muy �til para comprobar la configuraci�n del cortafuegos, por lo que se ver�n m�s detalles un poco m�s adelante.

-L [cadena]

Muestra las reglas de la cadena especificada, o de todas las cadenas si no se especifica ninguna.

-F [cadena]

Elimina todas las reglas de la cadena especificada, o de todas las cadenas si no se especifica ninguna.

-Z [cadena]

Establece a cero los contadores de datagramas y bytes de la cadena especificada, o de todas las cadenas si no se especifica ninguna.

-N cadena

Crea una nueva cadena con el nombre especificado. No puede existir una cadena con el mismo nombre. As� es como se crean las cadenas de usuario.

-X [cadena]

Elimina la cadena de usuario especificada, o todas las cadenas de usuario especificadas si no se especifica ninguna cadena. Para que esta orden tenga �xito, no deben existir referencias de ninguna otra cadena de reglas a la cadena especificada.

-P pol�tica_de_cadena

Establece la pol�tica por defecto de la cadena especificada a la pol�tica especificada. Las pol�ticas de cortafuegos v�lidas son ACCEPT, DENY, REJECT, REDIR, o RETURN. ACCEPT, DENY, y REJECT tienen los mismo significados que las pol�ticas correspondientes de la implentaci�n tradicional del cortafuegos de IP. REDIR especifica que se debe redirigir de forma transparente el datagrama a un puerto del 'host' del cortafuegos. La pol�tica RETURN causa que el c�digo del cortafuegos de IP vuelva a la cadena de cortafuegos que hizo la llamada a la que contiene esta regla y que contin�e empezando por la regla situada tras la regla que hizo la llamada.

9.7.2.2. Par�metros de especificaci�n de las reglas

Ciertos par�metros de ipchains crean una especificaci�n de reglas al determinar qu� tipos de paquetes coinciden. Si se omite algunos de esos par�metros de la especificaci�n de una regla, se asumen sus valores por omisi�n.

-p [!]protocolo

Especifica el protocolo del datagrama que buscar coincidencias con� con esta regla. Los protocolos v�lidos son: tcp, udp, icmp, o todos. Tambi�n puede especificarse un n�mero de protocolo para buscar coincidencias con con otros protocolos. Por ejemplo, se puede utilizar el 4 para buscar coincidencias con el protocolo de encapsulamiento ipip. Si se proporciona el signo !, entonces la regla es negativa y el datagrama buscar coincidencias con� con cualquier protocolo que no sea el especificado. Si no se especifica este par�metro, se asumir� por omisi�n el valor all.

-s [!]direcci�n[/m�scara] [!] [puerto]

Especifica la direcci�n de origen y el puerto del datagrama que buscar coincidencias con� con este regla. La direcci�n puede proporcionarse como un nombre de 'host', un nombre de red o una direcci�n de IP. El argumento opcional m�scara es la m�scara de red que se utilizar� y puede ser proporcionada en la forma tradicional (e.g.,/255.255.255.0) o en la forma moderna (e.g., /24). El argumento opcional puerto especifica el puerto de TCP o UDP, o el tipo de datagrama de ICMP que buscar coincidencias con�. Se puede proporcionar una especificaci�n de puerto s�lamente si se ha proporcionado el p�rametro -p con uno de los protocolos tcp, udp, o icmp. Se puede especificar los puertos en la forma de un rango, especificando los l�mites inferior y superior con el signo : como delimitador. Por ejemplo, 20:25 describe todos los puertos que van desde el 20 hasta el 25 incluyendo ambos. De nuevo, el signo ! puede utilizarse para negar los valores.

-d [!]direcci�n[/m�scara] [!] [puerto]

Especificar la direcci�n y el puerto de destino del datagrama que buscar coincidencias con� con esta regla. La codificaci�n de este par�metro es la misma que la del par�metro -s.

-j blanco

Especifica la acci�n que se tomar� cuando se coincida con esta regla. Puede pensarse en este par�metro como con el significado de “salta a.” Los blancos v�lidos son en principio las pol�ticas ACCEPT, DENY, REJECT, REDIR, y RETURN. Se describieron sus significados m�s arriba. Sin embargo, tambi�n puede proporcionarse el nombre de una cadena de usuario, y ser� por donde el proceso continuar�. Si se omite este par�metro, no se tomar� ninguna acci�n sobre los datagramas coincidentes con la regla exceptuando la actualizaci�n de los contadores de datagrams y de bytes.

-i [!]nombre_de_interfaz

Especifica la interfaz por la que se recibi� o va a transmitirse el datagrama. De nuevo, el signo ! invierte el resultado de la coincidencia. Si el nombre de la interfaz acaba con un signo + entonces cualquier interfaz que comience con la cadena proporcionada buscar coincidencias con�. Por ejemplo, -i ppp+ buscar coincidencias con� con cualquier dispositivo de red de PPP y -i ! eth+ con todas las interfaces excepto las correspondientes a dispositivos de Ethernet.

[!] -f

Especifica que esta regla se aplica a todo excepto al primer fragmento del un datagrama fragmentado.

9.7.2.3. Opciones

Las siguientes opciones de ipchains son m�s generales por naturaleza propia. Algunas de ellas controlan caracter�sticas bastante esot�ricas del 'software' de 'IP Chains':

-b

Fuerza a que la orden genere dos reglas. Una ajusta el par�metro proporcionado y la otra regla a�adida coincide con los par�metros en el sentido contrario.

-v

Causa que ipchains sea m�s expl�cito en su salida. Proporcionar� m�s informaci�n.

-n

Causa que ipchains muestre las direcciones de IP y los n�meros de puertos en forma de n�meros sin intentar resoverlos contra sus correspondientes nombres.

-l

Habilita el registro del n�cleo de los datagramas coincidentes. Cualquier datagrama que coincida con la regla ser� registrado por el n�cleo utilizando su funci�n printk, con lo que este registro ser� gestionado habitualmente por el programa sysklogd y escrito a un fichero de registro. Esto resulta muy �til para hacer visibles datagramas poco usuales.

-o[tama�o_m�ximo]

Causa que el 'software' de 'IP Chains' copie cualquier datagrama coincidente con la regla al dispositivo “netlink” del espacio de usuarios. El argumento de tama�o_m�ximo limita el n�mero de bytes que se pasar�n desde cada datagrama al dispositivo netlink. Esta opci�n resulta de la mayor utilidad para los desarrolladores de 'software', pero puede que sea aprovechada por paquetes de 'software' en el futuro.

-m valor_de_marca

Causa que los datagramas coincidentes sean marcados con un valor. Los valores de las marcas son n�meros de 32 bits sin signo. En las implementaciones actuales esto no hace nada, pero en alg�n momento en el futuro puede que sirvan para determinar c�mo otro 'software', como un c�digo de encaminamiento, tratar� al datagrama. Si un valor de una marca comienza con el signo + o con el signo -, el valor se a�ade o se substrae del valor actual de la marca.

-t m�scara_and m�scara_xor

Le permite manipular los bits del “tipo de servicio” de la cabecera de IP de cualquier datagrama que coincida con esta regla. Los bits de tipo de servicio son utilizados por los encaminadores inteligentes para gestionar la prioridad de los datagramas antes de reenviarlos. El software de encaminamiento de GNU/Linux es capaz de realizar este tipo de asignaci�n de prioridades. La m�scara_and y la m�scara_xor representar m�scaras de bits con las que se realizar�n respectivamente un AND l�gico o un OR l�gico con los bits del tipo de servicio del datagrama. Esto constituye una caracter�stica avanzada que se discute con m�s detalle en el IPCHAINS-HOWTO.

-x

Fuerza que los n�meros de salida de ipchains aparezcan con sus valores exactos sin ninguna aproximaci�n.

-y

Causa que la regla coincida con cualquier datagrama de TCP cuyo bit SYN valga 1 y los bits ACK y FIN lleven un valor de 0. Esto se utiliza para filtrar las peticiones de conexi�n de TCP.

9.7.3. Nuestro ejemplo simple revisado

Vamos de nuevo a suponer que se dispone de una red en nuestra organizaci�n y que se utiliza una m�quina cortafuegos basada en GNU/Linux para permitir a nuestros usuarios el acceso a servidores de WWW en Internet, y para impedir cualquier otro tipo de tr�fico.

r Si nuestra red tiene una m�scara de red de 24 bits (clase C) y tiene como direcci�n 172.16.1.0, podr�an utilizarse las siguientes reglas de ipchains:
    # ipchains -F forward
    # ipchains -P forward DENY
    # ipchains -A forward -s 0/0 80 -d 172.16.1.0/24 -p tcp -y -j DENY
    # ipchains -A forward -s 172.16.1.0/24 -d 0/0 80 -p tcp -b -j ACCEPT

La primera de las �rdenes borra todas las reglas del conjunto de reglas forward y el segundo establece la pol�tica predeterminada del conjunto de reglas forward a DENY. Por �ltimo, la tercera y cuartas �rdenes establecen el filtrado espec�fico que se desea. La cuarta orden permite que pasen los datagramas que provengan de o vayan a los servidores web de fuera de nuestra red, y la tercera red impide las conexiones entrantes de TCP con un puerto de origen igual a 80.

Si ahora se desea a�adir reglas que permitan el modo pasivo s�lo como modo de acceso a los servidores de FTP de fuera de nuestra red, se a�adir�an estas reglas:
    # ipchains -A forward -s 0/0 20 -d 172.16.1.0/24 -p tcp -y -j DENY
    # ipchains -A forward -s 172.16.1.0/24 -d 0/0 20 -p tcp -b -j ACCEPT
    # ipchains -A forward -s 0/0 21 -d 172.16.1.0/24 -p tcp -y -j DENY
    # ipchains -A forward -s 172.16.1.0/24 -d 0/0 21 -p tcp -b -j ACCEPT

9.7.4. Listado de nuestras reglas con ipchains

Para mostrar nuestras reglas con ipchains, se utiliza su argumento -L. De igual forma que con ipfwadm, existen argumentos que controlan el grado de detalle de la salida. En su forma simple, ipchains produce una salida que se parece a �sta:
    # ipchains -L -n
    Chain input (policy ACCEPT):
    Chain forward (policy DENY):
    target     prot opt     source              destination         ports
    DENY       tcp  -y----  0.0.0.0/0           172.16.1.0/24       80 ->   *
    ACCEPT     tcp  ------  172.16.1.0/24       0.0.0.0/0           * ->   80
    ACCEPT     tcp  ------  0.0.0.0/0           172.16.1.0/24       80 ->   *
    ACCEPT     tcp  ------  172.16.1.0/24       0.0.0.0/0           * ->   20
    ACCEPT     tcp  ------  0.0.0.0/0           172.16.1.0/24       20 ->   *
    ACCEPT     tcp  ------  172.16.1.0/24       0.0.0.0/0           * ->   21
    ACCEPT     tcp  ------  0.0.0.0/0           172.16.1.0/24       21 ->   *
    
    Chain output (policy ACCEPT):

Si no se proporciona el nombre de la cadena que se desea mostrar, ipchains mostrar� todas las reglas de todas las cadenas. El argumento -n de nuestro ejemplo le dice a ipchains que no intente convertir ninguna direcci�n ni puerto en nombres. La informaci�n que presenta deber�a ser auto-explicativa.

Un formato de salida m�s expl�cito, que se invoca con la opci�n -u, proporciona mucho m�s detalle. Esta salida a�ade campos para los contadores de bytes y de datagramas, el tipo de servicio, los identificadores AND y XOR, el nombre de la interfaz, la marca, y el tama�o de la salida.

Todas las reglas creadas con ipchains tienen contadores de datagramas y bytes asociadas con ellas. As� es c�mo se implementa la auditor�a de IP y se discutir� con detalle en Cap�tulo 10. Por defecto, estos contadores se presentan de forma aproximada utilizando los sufijos K y M, que representan las unidades de mil y de mill�n, respectivamente. Si se proporciona el argumento -x, entonces se muestran los contadores en su forma completa y expandida.

9.7.5. Uso avanzado de las cadenas

Usted ya sabe que la orden ipchains sustituye a la orden ipfwadm con una sintaxis de l�nea de �rdenes m�s simple y con algunas mejoras interesantes, pero sin duda alguna, usted desea saber d�nde y por qu� se deben utilizar las cadenas de usuario. Probablemente, tambi�n desee saber c�mo utilizar los guiones de soporte que acompa�an a la orden ipchains en su paquete de 'software'. Se investigar�n a continuaci�n estas materias y se dar� respuesta a esas cuestiones.

9.7.5.1. Cadenas de usuario

Los tres conjuntos de reglas del c�digo del cortafuegos de IP tradicional proporcionan un mecanismo para construir configuraciones de cortafuegos que eran bastante simples de entender y de gestionar en el caso de peque�as redes con requisitos simples en cuanto a funcionalidad de cortafuegos. Cuando los requisitos de configuraci�n no son tan simples, aparecen numerosos problemas. En primer lugar, las redes muy grandes requieren con frecuencia un n�mero mucho mayor de reglas de cortafuegos que el peque�o que hemos visto hasta ahora; de forma inevitable, aparecen necesidades que requieren que se a�adan reglas de cortafuegos para cubrir escenarios con casos especiales. Cuando el n�mero de reglas empieza a crecer, el rendimiento del cortafuegos disminuye m�s y m�s seg�n m�s y m�s comprobaciones tienen que realizarse sobre cada datagrama y la facilidad de gesti�n se convierte en un asunto importante. En segundo lugar, no es posible habilitar y deshabilitar conjuntos de reglas at�micamente; en cambio, usted se encontrar� inevitablemente expuesto a ataques mientras se encuentre en medio de una reconstrucci�n de sus conjuntos de reglas.

El dise�o del cortafuegos 'IP Chains' ayuda a soliviantar estos problemas al permitir al administrador de la red crear conjuntos arbitrarios de reglas de cortafuegos que se pueden enlazar con los tres conjuntos de reglas predefinidas. Se puede utilizar la opci�n -N de ipchains para crear una nueva cadena con el nombre de ocho caracteres o menos que nos plazca. (Probablemente sea buena idea restringir el nombre a uno formado por min�sculas solamente). La opci�n -j configura la acci�n que se tomar� cuando el datagrama coincida con la especificaci�n de la regla. La opci�n -j especifica que si un datagrama coincide con una regla, entonces deben realizarse m�s comprobaciones contra una cadena definida por usuario. Se ilustrar� esto con un diagrama.

Consid�rese las siguientes �rdenes de ipchains:
    ipchains -P input DENY
    ipchains -N tcpin
    ipchains -A tcpin -s ! 172.16.0.0/16
    ipchains -A tcpin -p tcp -d 172.16.0.0/16 ssh -j ACCEPT
    ipchains -A tcpin -p tcp -d 172.16.0.0/16 www -j ACCEPT
    ipchains -A input -p tcp -j tcpin
    ipchains -A input -p all

Se establece la pol�tica por defecto de la cadena de entrada a deny. La segunda orden crea una cadena de usuario denominada “tcpin.” La tercera orden a�ade una regla a la cadena tcpin que coincide con cualquier datagrama cuyo origen est� fuera de nuestra red; la regla no representa ninguna acci�n. Esta regla es una regla de auditor�a que se discutir� con m�s detalle en Cap�tulo 10. Las dos reglas siguientes coinciden con cualquier datagrama destinado a nuestra red local tanto al puerto de ssh como al de www; los datagramas que coincidan con estas reglas son aceptados. La magia de ipchains empieza en la regla siguiente. Obliga al 'software' del cortafuegos a que compruebe cualquier datagrama del protocolo de TCP contra la cadena de usuario tcpin. Por �ltimo, se a�ade una regla a la cadena input que coincide con cualquier datagrama; esto es otra regla de auditor�a. Todo esto producir� la cadenas de cortafuegos mostradas en la Figure 9-4.

Nuestras cadenas input y tcpin est�n pobladas con nuestras reglas. El procesamiento de los datagramas siempre comienza por una de las cadenas predefinidas... Veamos c�mo entran en juego las cadenas de usuario siguiendo el camino de procesamiento de los diferentes tipos de datagramas.

Primero, veamos qu� pasa cuando se recibe un datagrama de UDP para uno de nuestros 'hosts'. La Figura 9-5 ilustra el flujo por las reglas.

El datagrama se recibe por la cadena input y cae dentro de las dos reglas porque coinciden con los protocolos de ICMP y TCP, respectivamente. Coincide con la tercera regla en la cadena, pero no se especifica ning�n blanco por lo que los contadores de datagramas y bytes se actualizan pero se toma ninguna otra acci�n. El datagrama alcanza el final de la cadena input, se encuentra con la pol�tica predeterminada de la cadena input y no se acepta.

Para ver a nuestra cadena de usuario en acci�n, consid�rese qu� pasa cuando se recibe un datagrama de TCP destinado al puerto ssh de uno de nuestros 'hosts'. La secuencia se muestra en la Figura 9-6.

Esta vez, la segunda regla de la cadena input coincide y especifica como blanco la cadena tcpin, nuestra cadena de usuario. Especificar una cadena de usuario como blanco causa que se compruebe el datagrama contra las reglas de esa cadena, por lo que la siguiente regla que se comprobar� ser� la primera regla de la cadena tcpin. La primera regla coincide con cualquier datagrama que tenga una direcci�n de origen fuera de nuestra red local y no especifica ning�n blanco, por lo que tambi�n es una regla de auditor�a y la comprobaci�n pasa a la siguiente regla. La segunda regla de nuestra cadena tcpin s� que coincide y especifica un blanco de ACCEPT. Se ha llegado a un blanco tal que no se realiza m�s procesamiento. El datagrama se acepta.

Por �ltimo, veamos lo que pasa cuando se alcanza el final de una cadena de usuario. Para ver esto, se representar� el flujo de un datagrama de TCP destinado a un puerto distinto de los dos que estamos manejando espec�ficamente, como se muestra en la Figura 9-7.

Las cadenas de usuario no tienen pol�ticas por defecto. Cuando se han comprobado todas las reglas de una cadena de usuario , y ninguna coincide, el c�digo del cortafuegos act�a como si estuviera presente una regla de RETURN, por lo que si no es esto lo que usted desea, debe asegurarse de proporcionar una regla al final de la cadena de usuario que tome la acci�n que desee. En nuestro ejemplo, la comprobaci�n vuelve a la regla del conjunto de reglas input situando inmediatamente despu�s de la que nos movi� a la cadena de usuario. En alg�n momento, se alcanza el final de la cadena input, que tiene una pol�tica predeterminada y no se acepta el datagrama.

Este ejemplo era muy simple, pero sirve de ilustraci�n. Un uso m�s pr�ctico de 'IP chains' ser�a mucho m�s complejo. Un ejemplo un poco m�s sofisticado es el proporcionado con la siguiente lista de �rdenes:

    #
    # Establece la pol�tica de reenv�o por defecto a REJECT
    ipchains -P forward REJECT
    #
    # crea nuestras cadenas de usuario
    ipchains -N sshin
    ipchains -N sshout
    ipchains -N wwwin
    ipchains -N wwwout
    #
    # Se asegura de que se rechazar�n las conexiones provenientes por el camino incorrecto.
    ipchains -A wwwin -p tcp -s 172.16.0.0/16 -y -j REJECT
    ipchains -A wwwout -p tcp -d 172.16.0.0/16 -y -j REJECT
    ipchains -A sshin -p tcp -s 172.16.0.0/16 -y -j REJECT
    ipchains -A sshout -p tcp -d 172.16.0.0/16 -y -j REJECT
    #
    # se asegura que lo que alcance el final de una cadena de usuario se rechaza
    ipchains -A sshin -j REJECT
    ipchains -A sshout -j REJECT
    ipchains -A wwwin -j REJECT
    ipchains -A wwwout -j REJECT
    #
    # dirige los servicios de www y ssh a las cadenas de usuario relevantes
    ipchains -A forward -p tcp -d 172.16.0.0/16 ssh -b -j sshin
    ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 ssh -b -j sshout
    ipchains -A forward -p tcp -d 172.16.0.0/16 www -b -j wwwin
    ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 www -b -j wwwout
    #
    # Inserta nuestras reglas para buscar coincidencias con los 'hosts' en la segunda posici�n de
    # nuestras cadenas de usuario.
    ipchains -I wwwin 2 -d 172.16.1.2 -b -j ACCEPT
    ipchains -I wwwout 2 -s 172.16.1.0/24 -b -j ACCEPT
    ipchains -I sshin 2 -d 172.16.1.4 -b -j ACCEPT 
    ipchains -I sshout 2 -s 172.16.1.4 -b -j ACCEPT
    ipchains -I sshout 2 -s 172.16.1.6 -b -j ACCEPT
    #

En este ejemplo, se ha utilizado una selecci�n de cadenas de usuario tanto para simplificar la gesti�n de la configuraci�n de nuestro cortafuegos como para mejorar su eficiencia en comparaci�n a una soluci�n que involucrara s�lo las cadenas predefinidas.

Nuestro ejemplo crea cadenas de usuario para cada uno de los servicios de ssh y www en cada sentido de la conexi�n. La cadena denominada wwwout es donde se colocan las reglas para los 'hosts' que tienen permisos para realizar conexiones de World Wide Web salientes, y sshin es donde se definen las reglas para los 'hosts' a los que se desea permitir las conexiones entrantes de ssh. Se asume que tenemos los requisitos de permitir o denegar a 'hosts' individuales de nuestra red la capacidad de empezar o recibir conexiones de ssh y www. La simplificaci�n existe porque las cadenas de usuario nos permiten de forma clara agrupar las reglas para los permisos de entradas y salidas a los 'hosts' en vez de tenerlas todas revueltas. La mejora en la eficiencia se debe a que se ha reducido el n�mero medio de comprobaciones requeridas sobre cualquier datagrama antes de que se encuentre un blanco. La ganancia de eficiencia aumenta conforme se a�aden m�s 'hosts' Si no se hubiera utilizado cadenas de usuario, se tendr�a que buscar por la lista completa de reglas para determinar qu� acci�n se toma con cada datagrama que se recibe. Incluso si se asume que cada una de las reglas de nuestra lista coincide con una proporci�n igual del n�mero total de datagramas procesados, a�n as� estar�amos buscando en la mitad de la lista en promedio. Las cadenas de usuario nos permiten evitar la comprobaci�n de n�meros grandes de reglas si el datagrama que se comprueba no coincide con la regla simple en la cadena predeterminada a la que ha saltado.

9.7.5.2. Los guiones de soporte de ipchains

El paquete de 'software' de ipchains se proporciona con tres guiones de soporte. El primero de ellos ya se ha discutido brevemente, mientras que los dos restantes proporcian un m�todo sencillo y conveniente de guardar y recuperar la configuraci�n de su cortafuegos.

El gui�n ipfwadm-wrapper emula la sintaxis de la l�nea de �rdenes de la orden ipfwadm, pero utiliza la orden ipchains para construir las reglas del cortafuegos. Esto es una forma conveniente de realizar la migraci�n de la configuraci�n existente de su cortafuegos o una alternativa al aprendizaje de la sintaxis de ipchains. El gui�n ipfwadm-wrapper se comporta de forma diferente de la orden ipfwadm en dos cosas: en primer lugar, porque la orden ipchains no soporta la especificaci�n de una interfaz por su direcci�n, el gui�n ipfwadm-wrapper acepta el argumento -V pero intenta convertirlo en el equivalente en ipchains de -W buscando el nombre del interfaz configurado por la direcci�n proporcionada. El gui�n ipfwadm-wrapper le dar� siempre un aviso cuando utilice la opci�n -V con el prop�sito de recordarle todo esto. En segundo lugar, las reglas de auditor�a de los fragmentos no se traducen adecuadamente.

Los guiones ipchains-save e ipchains-restore convierten la tarea de construir y modificar la configuraci�n del cortafuegos en una tarea mucho m�s simple. La orden ipchains-save lee la configuraci�n actual y la escribe de forma simplificada por la salida est�ndar. La orden ipchains-restore lee datos con el formato de la salida de la orden ipchains-save y configura el cortafuegos de IP con esas reglas. La ventaja de utilizar estos guiones en vez de modificar directamente el gui�n de configuraci�n de su cortafuegos y probar la nueva configuraci�n consiste en la capacidad de construir din�micamente su configuraci�n una vez y entonces guardarla. Entonces usted puede recuperar esa configuraci�n, modificarla, y volverla a guardar si as� lo desea.

Para utilizar los guiones, se introducir�a algo como:
    ipchains-save >/var/state/ipchains/firewall.state
para guardar la configuraci�n actual de su cortafuegos. Usted la recuperar�a, quiz�s en el momento de arranque del sistema, con:
    ipchains-restore </var/state/ipchains/firewall.state

El gui�n ipchains-restore comprueba si ya existe cualquiera de las cadenas de usuarios especifica en su entrada. Si se proporciona el argumento -f, entonces y de forma autom�ticaa, el gui�n borrar� las reglas de la cadena de usuario antes de configurar las de la entrada. El comportamiento por defecto es que se le pregunte si desea saltarse esta cadena o inicializarla.

Notas

[1]

N. del T.: "cadenas de IP"

[2]

Puede contactar con Paul en [email protected].