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.
ipchains orden especificaci�n_de_regla opciones |
Elimina una o m�s reglas de la cadena especificada que coincida con la especificaci�n de regla.
Muestra las reglas de la cadena especificada, o de todas las cadenas si no se especifica ninguna.
# 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 |
# 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 |
# 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): |
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.
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.
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.
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.
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.
# # 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 # |
Para utilizar los guiones, se introducir�a algo como:
ipchains-save >/var/state/ipchains/firewall.state |
ipchains-restore </var/state/ipchains/firewall.state |
[1] | N. del T.: "cadenas de IP" |
[2] | Puede contactar con Paul en Paul.Russell@rustcorp.com.au. |