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:
- Crear una nueva cadena (-N).
- Borrar una cadena vac�a (-X).
- Cambiar la norma de una cadena b�sica (-P).
- Lista de reglas en una cadena (-L).
- Vaciar las reglas de una cadena (-F).
- 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:
- A�adir una regla a una cadena (-A).
- Insertar una regla en alg�n punto de la cadena
(-I).
- Reemplazar una regla en alg�n punto de la cadena
(-R).
- 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
|