[EMAIL PROTECTED] wrote:

        Hola a [EMAIL PROTECTED],
        estoy a�adiendo algunas reglas a iptables, pero no se como comprobar que
abren los puertos correctamente y demas, con iptables -L -n compruebo las
reglas, pero �como hago para q actualice los cambios? �es necesario
reiniciar todo el sistema? con /etc/init.d/iptables lo que sea no consigo
modificar la salida de iptables -L -n, por lo que supongo que no se realizan
cambios si no reinicio completamente, pero debe de haber una manera de
hacerlo sin reiniciar, si hago -F y luego -L -n me vuelve a cargar lo mismo
que antes �es posible porque este como established y este conectado? �como
se comprueba?
        Gracias..




Aqu� va una peque�a introducci�n a iptables y las reglas permanentes,
Lo mando como un fichero adjunto porque ya no me acuerdo de donde
lo baj�.

Salu2. ;-)



--
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Alberto Seoane ;-)
Jabber: [EMAIL PROTECTED]
E-Mail: [EMAIL PROTECTED]
Usuario Registrado Linux #362136
Registrate en http://counter.li.org

Podemos acabar con los archivos adjuntos en Word:
http://www.fsf.org/philosophy/no-word-attachments.es.html

Di NO a las patentes de software:
http://proinnova.hispalinux.es/

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBBWcqq6Cd1ym4K2gRAhwFAJ0d0u1vekJCY0MGv2zzt1gJRXnPUQCeLbU8
Kgpc0QcXDl5Y7xZnKRi79LA=
=L5jn
-----END PGP SIGNATURE-----

Title: Configuraci�n de un cortafuegos (firewall) en Debian

Configuraci�n de un cortafuegos (firewall) en Debian

Un cortafuegos se construye mediante un filtro de paquetes y tiene el prop�sito de controlar el tipo de acceso o salida por las interfases de red y resguardar el computador de ataques maliciosos. El filtro de paquetes es un c�digo que lee el encabezado de un paquete que recibe una interfase (e.g. lo, eth0 o ppp0) y luego decide si aceptarlo o rechazarlo completamente antes de alcanzar un proceso local (demonio). En Linux, el filtro de paquetes es parte del n�cleo. A partir de la versi�n 2.4 se reescribi� completamente y pas� a llamarse 'iptables', reemplazando al antiguo 'ipchains'.

La palabra "cortafuegos" puede dar una sensaci�n falsa de seguridad. No existe red complemente segura y si bien un cortafuegos puede ser considerado como una primera l�nea de defensa, la vigilancia ante actividades extra�as en el computador son esenciales para mantener el sistema seguro. Si no has le�do a�n sobre la seguridad del sistema Debian sugerimos que lo hagas antes de continuar.

Configurar un cortafuegos puede resultar extremadamente complejo si el servidor presta servicios en forma restrictiva. Este es com�nmente el caso de redes comerciales en donde se est� m�s interesado en controlar y bloquear el uso de la red por parte de los empleados que de resguardar la red de intrusos. Aqu� obviamente no estamos interesados en este tipo de aplicaciones. Nuestra propuesta de configuraci�n intenta ser lo m�s simple y transparente posible y est� ideada para proteger un servidor Debian de intrusos externos sin restringir de ning�n modo al usuario.

Si tienes el n�cleo de instalaci�n con el sabor bf24 (versi�n 2.4), tienes en el sistema todos los m�dulos del filtro. Estos van a ser cargados en forma autom�tica cuando uses la herramienta iptables. Si tienes el n�cleo con el sabor idepci (versi�n 2.2) sugerimos que actualices a la versi�n 2.4 (lee sobre la compilaci�n del n�cleo de Linux), compilando con los siguientes componentes: En la secci�n "Networking options", marca "Networking packet filtering", luego en la subsecci�n "IP: Netfilter Configuration", marca como m�dulo "Connection tracking" y todos los soportes asociados, marca "IP tables support" y todos los soportes asociados, incluyendo los de "Packet filtering", "Full NAT" y "Packet mangling".

Filtro de paquetes
iptables es la herramienta que inserta o remueve "reglas" en la tabla del filtro de paquetes del n�cleo y es instalada por omisi�n en el sistema base. El n�cleo parte con una tabla que contiene tres listas b�sicas de reglas llamadas "cadenas". Estas son INPUT, OUTPUT y FORWARD, respectivamente (entrada, salida y redirecci�n). Cuando un paquete entra a una interfase de red, el n�cleo examina primero el destino del paquete y decide que ruta tomar (INPUT o FORWARD). Luego el paquete es examinado en la cadena, en donde la decisi�n de desechar (DROP) o aceptar (ACCEPT) el paquete es tomada. Si la decisi�n es aceptar, el paquete continua hacia el destino, siendo recibido por alg�n proceso local (demonio). En cambio, si la decisi�n es desechar, el paquete es descartado completamente, muriendo en el lugar, antes de alcanzar un proceso local.
                          _____
Entrante / \ Saliente
-->[Decisi�n]--->|FORWARD|------->
[de ruta ] \_____/ ^
| |
v ____
___ / \
/ \ |OUTPUT|
|INPUT| \____/
\___/ ^
| |
----> Proceso local ----
Un cadena es entonces una lista de reglas de control. Cada regla dice, "si el encabezado del paquete es de esta manera, aplico tal acci�n sobre �l". La regla puede estar compuesta de una o m�ltiples condiciones. Si cualquiera de las condiciones de la regla no se cumple, la pr�xima regla es consultada. Si el paquete llega al final de la cadena sin que alguna regla le aplique, el n�cleo consulta la "norma" (policy) definida para la cadena. La norma puede ser DROP o ACCEPT. En un sistema en donde la seguridad es prioridad, la norma de las cadenas INPUT y FORWARD deber�a ser DROP.

Un programa o proceso tambi�n puede generar un paquete para ser enviado, pasando por la cadena OUTPUT. Si la decisi�n es ACCEPT, el paquete continua, saliendo por la interfase de red. Un sistema en donde el control sobre sus usuarios es m�nimo, la norma de la cadena OUTPUT deber�a ser ACCEPT.

Aparte de las tres cadenas b�sicas, que son imborrables, iptables permite crear nuevas cadenas e insertar reglas en ellas. Estas no tienen norma y al llegar al final retornan al punto que fueron llamadas. Las operaciones que se pueden realizar sobre una cadena son:
  1. Crear una nueva cadena (-N).
  2. Borrar una cadena vac�a (-X).
  3. Cambiar la norma de una cadena b�sica (-P).
  4. Lista de reglas en una cadena (-L).
  5. Vaciar las reglas de una cadena (-F).
  6. Volver a cero el contador de paquetes y bytes de todas las reglas de una cadena (-Z).
Las operaciones para manipular una regla dentro de una cadena son:
  1. A�adir una regla a una cadena (-A).
  2. Insertar una regla en alg�n punto de la cadena (-I).
  3. Reemplazar una regla en alg�n punto de la cadena (-R).
  4. Borrar una regla en alg�n punto de la cadena, o la primera que coincida (-D).
A modo de ejemplo
Para comenzar, da el comando 'iptables -L' para producir una lista de las cadenas y reglas. Ya que la tabla del filtro de paquetes no ha sido manipulada, el comando retornar� a la pantalla las tres cadenas b�sicas vac�as de reglas,

� Chain INPUT (policy ACCEPT)
� target���� prot opt source�������������� destination

� Chain FORWARD (policy ACCEPT)
� target���� prot opt source�������������� destination

� Chain OUTPUT (policy ACCEPT)
� target���� prot opt source�������������� destination


La norma por omisi�n de las tres cadenas es ACCEPT.

A modo de ejemplo, vamos a manipular la tabla para bloquear paquetes del protocolo ICMP (Internet Control Message Protocol) provenientes de la direcci�n IP 127.0.0.1 (loopback). Este protocolo es usado por ejemplo por ping para recibir un eco de un servidor en la red. Para comenzar da el comando,

# ping -c1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.1 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms


Este comando env�a un paquete ICMP tipo 8 (echo request) a la interfase loopback y el servidor (localhost) responde con otro paquete ICMP tipo 0 (echo reply). El argumento -c1 obliga a ping a enviar uno de estos paquetes y luego terminar.

Vamos a a�adir (-A) una regla a la cadena INPUT para que pruebe todos aquellos paquetes cuyo protocolo (-p) es ICMP, provenientes de la fuente (source, -s) 127.0.0.1 y luego "salte" (jump, -j) al blanco (target) DROP,

# iptables -A INPUT -p ICMP -s 127.0.0.1 -j DROP

Ahora la lista en la tabla (iptables -L) contiene la regla reci�n introducida,

# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target���� prot opt source�������������� destination
DROP������ icmp --� localhost����������� anywhere


Si un paquete recibido proviene de la fuente 127.0.0.1 y cuyo protocolo es ICMP, entonces la regla es cumplida y salta (-j) al blanco DROP, es decir, el paquete es descartado. El blanco tambi�n puede ser ACCEPT o el nombre de otra cadena, en cuyo caso el paquete sufre un nuevo escrutinio con las reglas de esa cadena. Todas las partes de una regla tienen que cumplirse para que la regla salte al blanco. Si no es as�, se consulta la siguiente regla hasta que haya un concordancia completa o llegue al final de la cadena y se le aplique la norma.

El comando 'ping -c1 127.0.0.1' no producir� eco alguno del servidor, pues el paquete enviado morir� en la interfase loopback antes que se produzca una respuesta. Para terminar ping cancela con <ctrl>-<c>. Nota que la primera manipulaci�n de la tabla inserta autom�ticamente los m�dulos ip_iptables y iptable_filter en el n�cleo. Nota tambi�n que cualquier regla que insertes en la tabla ser� borrada cada vez que reinicies el computador. M�s adelante mostraremos como hacerlas permanentes en el sistema Debian.

Para borrar la regla reci�n insertada existen varias posibilidades. El comando 'iptables -D INPUT 1' borra la primera regla de la cadena INPUT. Una r�plica del comando, reemplazando '-A' por '-D', 'iptables -D INPUT -p ICMP -s 127.0.0.1 -j DROP', produce el mismo efecto. Esta �ltima forma es conveniente de usar cuando la cadena contiene reglas complejas. Finalmente, el comando 'iptables -F INPUT' vac�a la cadena INPUT de todas sus reglas.

El protocolo (-p) del paquete a que se aplica la regla puede ser 'TCP', 'UDP', 'ICMP' o 'ALL' (todos). May�sculas o min�sculas no tienen importancia. El prefijo "!" invierte el argumento. Por ejemplo, '-p ! TCP' especifica todos los protocolos a excepci�n de los de tipo TCP. "!" es equivalente a un not l�gico.

La direcci�n de la fuente (-s) o destino (-d) puede especificarse de cuatro maneras. Puede ser un nombre, como 'localhost' o 'fusion.nuclear.cl', o un n�mero IP. Tambi�n puede ser un rango de n�meros IP, como '200.79.123.0/24' o equivalentemente '200.79.123.0/255.255.255.0'. Ambos casos especifican el rango de n�meros IP de 200.79.123.0 a 200.79.123.255. Los d�gitos despu�s de "/" denotan la parte del n�mero IP que es significativo. "/24" dice que los 24 primeros bits del n�mero son significativos, o si quieres, los tres primeros grupos de 8 bits. "/32" o "/255.255.255.255" es equivalente a una correspondencia completa del n�mero IP que va delante. "/0" o "/0.0.0.0" especifica cualquier n�mero IP y es quivalente a omitir -s o -d completamente. La cuarta forma de especificar la fuente o destino es similar a la m�scara de red y es por ende conveniente de usar cuando la m�scara es poco convencional. El prefijo "!" invierte el argumento. Por ejemplo, '-s ! localhost' especifica toda fuente a excepci�n de localhost.

Existen muchos blancos. Aqu� vamos a usar solo los blancos DROP y ACCEPT. Otro blanco com�n es RETURN usado para terminar la cadena actual y retornar a la cadena inicial.

Tambi�n se puede especificar la interfase de entrada (-i), la que recibe el paquete, o la interfase de salida (-o). Por ejemplo, '-i eth0' o '-i ppp0'. En ambos casos se puede invertir el argumento con un "!".

El puerto de destino del paquete o el puerto de la fuente lo especifican las opciones '--destination-port' (o '--dport') y '--source-port' (o '--sport'). Por ejemplo, '--dport 80', prueba aquellos paquetes destinados al puerto http. Para saber qu� n�mero de puerto corresponde a cada protocolo consulta el archivo /etc/services.

Existen condiciones gen�ricas, impl�citas y expl�citas. Las gen�ricas son aquellas condiciones que no dependen del protocolo que se est� probando, por ejemplo, el protocolo (-p), la fuente (-s), el destino (-d), la interfase de entrada (-i) o de salida (-o). Las condiciones impl�citas son aquellas que est�n asociadas a un protocolo, por ejemplo, el puerto de la fuente o destino, '-p TCP --sport 80' y '-p UDP --dport 80', respectivamente, o el tipo de paquete ICMP, '-p ICMP --icmp-type 8'. Las condiciones expl�citas, a diferencia de las impl�citas, no son cargadas autom�ticamente por iptables y tienen que cargarse con la opci�n '-m' antes de la condici�n. Por ejemplo, la condici�n '--state' requiere declararse previamente, '-m state --state NEW,RELATED,ESTABLISHED'.

Cortafuegos
Ahora vamos a manipular la tabla en serio, modificando la norma de las cadenas b�sicas, creando nuevas cadenas e insertando reglas en ellas para probar todos los paquetes recibidos por red. Primero es necesario crear un "script", darle permisos de ejecuci�n y protegerlo de que sea le�do por otros,

# touch cortafuegos.sh
# chmod 700 cortafuegos.sh


Una advertencia. Existen procesos internos que funcionan haciendo llamados a la interfase loopback (127.0.0.1) u otros n�meros IP de las redes privadas. Puede suceder que un cortafuegos mal configurado bloquee estos procesos causando una p�rdida del control de computador. Para evitar esto, mientras configuras el cortafuegos, sugerimos correr un "cron" que cada cierto tiempo borre la tabla. Da el comando 'crontab -e' e inserta las siguientes l�neas,

# m���� h������ dom���� mon���� dow���� command
*/15��� *������ �*����� �*����� �*����� /etc/init.d/iptables clear


Luego sal del editor. Este cron va a borrar la tabla cada 15 minutos. Si el computador se cuelga, espera a que la hora sea un m�ltiplo de 15 minutos y volver�s a controlar el computador. Una vez que el cortafuegos este configurado, comenta o borra la segunda l�nea corriendo 'crontab -e' nuevamente.

Cortafuegos para ppp0
La primera propuesta de cortafuego es apta para un sistema Debian conectado a la red por m�dem o ADSL (interfase ppp0) y que no presta ning�n servicio de red. Si tienes una conexi�n tipo T1 (ethernet) sugerimos que igual estudies el ejemplo ya que contiene aspectos comunes que se usar�n m�s adelante. Edita el archivo cortafuegos.sh e inserta las siguientes l�neas:

-----------------------------------------------------------------------------
#!/bin/sh

# 1) Borrar la actual tabla
/etc/init.d/iptables clear

# 2) Definir la norma de cada cadena b�sica
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 3) Manipular la cadena INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
#iptables -A INPUT -j LOG --log-level debug --log-prefix "Drop INPUT: "

# 4) Grabar las reglas de la tabla
/etc/init.d/iptables save active
-----------------------------------------------------------------------------


En 1) se borra la actual tabla de todas sus cadenas y reglas a excepci�n de las cadenas b�sicas que quedan vac�as.

En 2) se modifica la norma de las cadenas INPUT y FORWARD a DROP. Nota que la cadena OUTPUT se deja con la norma ACCEPT. A estas alturas, la tabla va a descartar cualquier paquete entrante o redirigido en cualquier interfase de red y va aceptar cualquier paquete saliente.

En 3) se a�ade una regla a la cadena INPUT que acepta todo paquete de una conexi�n ya establecida o relacionada. Si una interfase env�a o recibe un paquete de cualquier direcci�n interna o externa requiriendo una conexi�n, todo paquete que el receptor o emisor env�e de vuelta y llegue a INPUT ser� en estado establecido o relacionado, siendo aceptada por esta regla. La pr�xima l�nea acepta todo paquete en INPUT que requiere una nueva conexi�n pero que no provenga de la interfase ppp0, es decir la interfase externa. En particular, cualquier nueva conexi�n requerida por la interfase loopback ser� aceptada. Esto es aceptable solo si tienes una (y solo una) interfase (ppp0) conectada a la red externa. Cualquier otra interfase conectada al exterior (una tarjeta ethernet en eth0 o un segundo m�dem en ppp1) quedar� desprotegida con esta regla, creando un agujero por el cual un intruso podr�a meterse. La tercera regla (que esta comentada) sirve para hacer diagn�sticos. Al descomentarla todo paquete que no haya cumplido ninguna de las dos reglas previas es registrado con syslog. El blanco LOG siempre retorna a donde fue llamado. El nivel de registro puede ser 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' o 'emerg'. Si el nivel es 'debug' todo paquete descartado por la norma ser� registrado en /var/log/debug con el prefijo "Drop INPUT:". Como ves, un paquete que cruza una cadena lo hace en forma secuencial, prob�ndose cada regla una por una. Si la regla no se aplica al paquete en su totalidad, la pr�xima regla es probada. Si el paquete cumple cualquiera de estas reglas, salta inmediatamente al blanco y sale de la cadena. Si un paquete logra llegar al final de la cadena, es descartado por la norma de INPUT. La regla que est� comentada es para

Finalmente, en 4) se graba la tabla con el nombre 'active'. En Debian, la tabla se graba en el directorio /var/lib/iptables con el nombre especificado.

Ahora corre el script './cortafuegos.sh', luego con�ctate a la red con PPP o PPPoE y prueba conexiones a servidores externos. Si no encuentras ning�n problema, puedes borrar el cron usado para borrar la tabla cada 15 minutos. Si deseas puede ir a la secci�n que describe como hacer las reglas permanentes en la tabla.

Cortafuegos para eth0
Ahora vamos a presentar un cortafuegos de uso m�s amplio, apto para un servidor conectado a la red por una interfase ethernet (eth0) y que presta algunos servicios de red, como servicios ftp, http, ssh, ntp y otros.

------------------------------------------------------
#!/bin/sh
/etc/init.d/iptables clear

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 1) Definir la interfase externa y loopback y respectivos no. IPs
INET_IFACE="eth0"
INET_IP="200.89.74.17"
LO_IFACE="lo"
LO_IP="127.0.0.0/8"

# 2) Cadena INPUT general
iptables -A INPUT -i $INET_IFACE -p TCP -j bloquear-spoof
iptables -A INPUT -p TCP -m state --state NEW ! --syn -j DROP
iptables -A INPUT -i $INET_IFACE -s $INET_IP -j DROP
iptables -A INPUT -i $INET_IFACE -d ! $INET_IP -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $LO_IFACE -p ALL -s $LO_IP -j ACCEPT
iptables -A INPUT -i $LO_IFACE -p ALL -s $INET_IP -j ACCEPT
iptables -A INPUT -i $INET_IFACE -p ICMP -j pqtes-icmp-permitidos
iptables -A INPUT -i $INET_IFACE -p UDP -j pqtes-udp-permitidos
iptables -A INPUT -i $INET_IFACE -p TCP -j pqtes-tcp-permitidos

# 3) Cadena OUTPUT
iptables -A OUTPUT -o $INET_IFACE -p TCP -j bloquear-spoof
iptables -A OUTPUT -p TCP -m state --state NEW ! --syn -j DROP

# 4) Definir la cadena "bloquear-spoof" para proteger n�meros IP privados desde el exterior
iptables -N bloquear-spoof
iptables -A bloquear-spoof -p TCP -s 192.168.0.0/16 -j DROP
iptables -A bloquear-spoof -p TCP -s 10.0.0.0/8 -j DROP
iptables -A bloquear-spoof -p TCP -s 172.16.0.0/12 -j DROP

# 5) Cadena "pqtes-icmp-permitidos"
iptables -A pqtes-icmp-permitidos -i $INET_IFACE -p ICMP --icmp-type 8 -j ACCEPT
iptables -A pqtes-icmp-permitidos -i $INET_IFACE -p ICMP --icmp-type 11 -j ACCEPT
iptables -A pqtes-icmp-permitidos -i $INET_IFACE -p ICMP -j DROP

# 6) Cadena "pqtes-udp-permitidos"
iptables -N pqtes-udp-permitidos
iptables -A pqtes-udp-permitidos -i $INET_IFACE -p UDP -m state --state NEW \
������������������������������� �--dport 123 -j ACCEPT
iptables -A pqtes-udp-permitidos -i $INET_IFACE -p UDP -j DROP

# 7) Cadena "pqtes-tcp-permitidos"
iptables -N pqtes-tcp-permitidos
iptables -A pqtes-tcp-permitidos -i $INET_IFACE -p TCP -m state --state NEW \
�������������������������������� -m multiport --dport 21,25,80,443 -j ACCEPT
iptables -A pqtes-tcp-permitidos -i $INET_IFACE -p TCP -m state --state NEW \
�������������������������������� -s 200.89.74.0/24 --dport 22 -j ACCEPT
iptables -A
pqtes-tcp-permitidos -i $INET_IFACE -p TCP -j DROP

/etc/init.d/iptables save active

------------------------------------------------------


Recuerda que esta es una proposici�n para ser modificada de acuerdo a tus necesidades. Comenta o borra toda l�nea que no se aplique a tu caso en particular.

En 1) se define la interfase conectada al la red externa (eth0) y loopback (lo) y sus respectivos n�meros IP. Modifica la variable INET_IP con el n�mero IP de tu servidor.

En 2) comienza la manipulaci�n de la cadena INPUT. La primera regla hace saltar todo paquete que llega a la interfase externa a la cadena "bloquear-spoof" para descartar todo paquete obviamente malicioso. La segunda regla requiere explicaci�n. Todo paquete TCP tiene una serie de indicadores llamados banderines (flags). En iptables los banderines TCP se prueban con '--tcp-flags', por ejemplo, 'iptables -p TCP --tcp-flags SYN,ACK,FIN SYN'. En este caso, los banderines SYN, ACK y FIN son probados exigi�ndose que SYN est� puesto pero no ACK y FIN. En un paquete TCP que requiere una nueva conexi�n, SYN deber�a estar puesto, pero no ACK y FIN. El acr�nimo '--syn' es equivalente a esto. La segunda regla dice entonces que descarte todo paquete TCP en estado nuevo que no tenga los banderines SYN puestos y ACK y FIN no puestos. La tercera regla descarta todo paquete que llega a la interfase externa con un n�mero IP id�ntico al mio. La cuarta regla descarta todo paquete que llega a la interfase externa cuyo destino no soy yo. La quinta regla acepta todo paquete en estado establecido y relacionado. La sexta y septima regla acepta todo paquete que llega a la interfase loopback provenientes de 127.0.0.0/24 y del n�mero IP del servidor. Las proximas tres reglas hacen saltar todo paquete de los protocolos ICMP, UDP y TCP que llega a la interfase externa en INPUT a las cadenas "pqtes-icmp-permitidos", "pqtes-udp-permitidos" y "pqtes-tcp-permitidos", respectivemante.

En 3) se manipula la cadena OUTPUT para que bloquear n�meros IP indebidos y paquetes tipo TCP en estado nuevo que no tengas los banderines correctos.

En 4) se define la cadena "bloquear-spoof" para descartar paquetes TCP en la interfase externa cuya fuente son n�meros IP de las redes privadas. Estos n�meros son reservados para redes internas y no deber�an circular en forma externa.

En 5) se define la cadena "pqtes-icmp-permitidos" con reglas relacionadas al protocolo ICMP. La primera regla acepta paquetes ICMP de tipo 8 (echo request) para permitir que la red externa reciba una respuesta con ping. La segunda regla acepta paquetes ICMP de tipo 11 (time exceeded). La �ltima regla de la cadena descarta todo paquete ICMP que no haya cumplido las reglas previas. Al no especificarse una direcci�n de la fuente con '-s' las reglas aceptan todo n�mero IP.

En 6) se define la cadena "pqtes-udp-permitidos" con reglas relacionadas al protocolo UDP. La primera regla prueba paquetes de la interfase externa, en estado nuevo, cuyo destino es el puerto ntp (puerto 123) para permitir a ntp servir correctamente requerimientos externos. La �ltima regla de la cadena descarta todo paquete UDP que no haya cumplido la regla previa.

En 7) se define la cadena "pqtes-tcp-permitidos" con reglas relacionadas al protocolo TCP. En la primera regla los puertos 21 (ftp), 25 (smtp), 80 (http) y 443 (https) son abiertos a requerimientos de todo n�mero IP por la interfase de la red externa. Para poder especificar m�ltiples puertos es necesario cargar la condici�n 'multiport' expl�citamente. Si no prestas servicios por cualquiera de estos puertos, borra el n�mero correspondiente, o agrega propios. Para que la regla del puerto 21 (ftp) funcione correctamente, es necesario insertar en m�dulo ip_conntrack_ftp en el n�cleo. Abrir el puerto 25 (smtp) es necesario para recibir correo electr�nico con exim. La regla siguiente permite a los n�meros IP 200.89.74.0 a 200.89.74.255 hacer requerimientos SSH (puerto 22). La �ltima regla de la cadena descarta todo paquete TCP que no haya cumplido las reglas previas.

Las reglas en las cadenas "pqtes-icmp-permitidos", "pqtes-udp-permitidos" y "pqtes-tcp-permitidos" son las que definen los servicios permitidos y las que deber�as modificar para tu caso en particular. El resto de cadenas y reglas son de uso general y no requieren modificaci�n alguna.

Ahora corre el script './cortafuegos.sh', prueba conexiones a servidores externos y si tienes acceso a un computador externo a tu red, prueba conexiones a los servicios de red que prestas. Si no encuentras ning�n problema, puedes borrar el cron usado para borrar la tabla cada 15 minutos.

Reglas permanentes
Para hacer permanentes las reglas insertadas en la tabla, edita el archivo de configuraci�n /etc/default/iptables y modifica la variable 'enable_autosave' a 'true'. Luego anda al directorio /etc/rcS.d/ y da el comando,

# ln -s ../init.d/iptables S38iptables

para crear un link simb�lico de /etc/init.d/iptables a /etc/rcS.d/S38iptables. Esto va a permitir que la tabla grabada en /var/lib/iptables bajo el nombre 'active' sea cargada al momento de arranque. Nota en particular que la tabla se va a cargar antes de que la red sea activada ya que �sta se carga con /etc/rcS.d/S40networking.

El comando 'iptables -L -v' har� un listado de las cadenas y reglas de la tabla del filtro con los contadores de paquetes y bytes.

Finalmente, hemos basado estas instrucciones en la documentaci�n, escrita por el creador de iptables, 'Rusty' Russell, incluida en el paquete Debian iptables y que puedes encontrar en,

� /usr/share/doc/iptables/html/packet-filtering-HOWTO.html

Tambi�n hemos usado el tutorial escrito por Oskar Andreasson y que puedes encontrar en el depositario de software (paquete iptables-tutorial).

Copyright 2002-2004 Ricardo Yanez


[EMAIL PROTECTED]

Responder a