You are on page 1of 10

Cortafuegos

Un cortafuegos consiste en filtrar el trfico TCP-IP, generalmente en el punto donde la red se conecta a otra (p. ej. a Internet, a una LAN de clientes, etc), que puede ser no fiable (en el caso de Internet) o quizs incluso fiable (otro piso de tu edificio). Al igual que los cortafuegos de los grandes edificios, un cortafuegos de red puede evitar e incluso bloquear la extensin del ataque si un segmento se ve comprometido con xito, al igual que su homnimo cortafuegos puede evitar que la red se siga viendo comprometida. Linux ha tenido capacidad de cortafuegos desde hace ya un tiempo, en forma de ipfwadm, que era un filtro a nivel de paquetes muy sencillo. Con la llegada del kernel 2.1, se ha visto reemplazado por ipchains, que es un poco ms sofisticado. Este a su vez se ver reemplazado en el propuesto kernel 2.4, con un filtrado de paquetes todava ms avanzado, que es ms independiente. Sin embargo, ambos todava siguen siendo filtros de paquetes, y no permiten caractersticas ms avanzadas como la inspeccin de estados o algunos tipos de conexiones proxy. Sin embargo Linux soporta IPMASQ, una forma de NAT (Traduccin de Direcciones de Red, Network Address Translation). El IPMASQ permite enganchar una red de ordenadores a Internet, pero haciendo un proxy de sus conexiones a nivel de IP. De tal forma que todo el trfico parezca provenir y dirigirse a una mquina (la mquina Linux con IPMASQ), lo cual proporciona un alto grado de proteccin a la red interna. Como plus aadido, los clientes de la red interna NO necesitan configurar su proxy; mientas el servidor IPMASQ del Linux est bien configurado y los clientes lo utilicen como su puerta de enlace por defecto, todo ir bien. Ambos ipchains e ipfwadm proporcionan las siguientes funcionalidades:
bloqueo / permiso del paso de datos basado en IP/puerto/interface origen/destino

enmascaramiento origen/destino

de

conexiones,

basado

en

IP/puerto/interface

Adems, ipchains soporta:


redireccionamiento de puertos creacin de cadenas, para reglas y condiciones ms complejas, ms fcil de mantener

routing de calidad de servicio (QOS, Quality of Service), til en conexiones de baja velocidad o saturadas

especificacin de IP/puerto/interface adems de especificacin inversa (utilizando el !)

El HOWTO del cortafuegos y las pginas "man <command>" (ipchains o ipfwadm) se ocupan en gran detalle de la mecnica para la configuracin de las reglas, pero en realidad no se ocupan de la estrategia para hacer un filtrado de forma segura. La primera eleccin que se debe hacer es si se va a seguir una poltica de denegacin o de permisin por defecto, seguido de qu servicios y hosts se quiere permitir y bloquear. Cuando se vaya a decidir la poltica, se debera escoger aquella que deniego todo por defecto, a menos que est especficamente permitido (de forma que si existe un fallo, con suerte se vea minimizado va poltica por defecto) o una poltica que permita todo y bloquee ciertos servicios/hosts. Generalmente suelo utilizar una poltica de denegacin por defecto, pues de esta forma puedo arreglar errores y cambios de forma ms segura que una poltica que permita el flujo de datos por defecto. Pongamos por caso, se tiene un servidor asegurado va filtrado con cortafuegos, ejecutando Apache, se instala WU-FTPD para uso interno (de modo que la gente pueda subir ficheros) a las 3 de la maana, y se te olvida cambiar las reglas del cortafuegos. Si se ha escogido una poltica permisiva por defecto, cualquiera puede acceder al servidor ftp desde Internet, y adems, cometiste el error de instalar una versin antigua que permita a cualquiera comprometer la mquina. Si por otra parte, se sigue una poltica de denegacin por defecto, no hubiesen accedido al servidor de ftp, ni lo hubiesen hecho tus usuarios, pero te daras cuenta ms rpidamente. Los usuarios enfadados son algo ms sencillo de tratar que una red que haya sido comprometida. En esta seccin, he decidido no tratar especficamente las reglas de filtrado del cortafuegos, dar ejemplos para cada servicio de red, puesto que para filtrar adecuadamente un protocolo primero hay que entender cmo se comporta. Por ejemplo, existe una gran diferencia entre filtrar el www y el ftp en cuanto a accesos internos y externos. Algunas reglas/conceptos generales: IPFWADM El Ipfwadm es u n slido paquete de filtrado para Linux, aunque carece de muchas caractersticas disponibles en Ipchains. Ipfwadm slo soporta 3 objetivos para cada paquete: aceptar, denegar o rechazar, mientras que las reglas del ipchains se pueden dirigir a 6 objetivos, o a un objetivo definido por el usuario. En realidad, el Ipfwadm slo es apropiado para un cortafuegos sencillo a nivel IP, enmascaramiento de IP y si se tiene previsto utilizar FreeS/WAN. Las opciones bsicas son: especificar una direccin (dentro, fuera, o ambas, til con el flag de interface), reglas de entrada, reglas de salida, reglas de redireccionamiento (pongamos que se tienen mltiples interfaces, tambin se ocupa de las reglas de enmascaramiento) y reglas de enmascaramiento que controlan el comportamiento del enmascaramiento (timeouts, etc). Se pueden insertar, aadir y borrar reglas, configurar polticas por defecto y listar todas las reglas. Aparte de

eso es muy parecido a ipchains, con pequeas variaciones. Lo que viene a continuacin es un script apropiado para un servidor que est haciendo de bridge entre 2 redes (10.0.0.x en eth0, 10.0.0.1 y 192.168.0.x en eth1, 192.168.0.1) ejecutando un servidor de correo. #!/bin/bash # # Primero limpiar todas las reglas # ipfwadm -f -I ipfwadm -f -O ipfwadm -f -F # # Permitir el redireccionamiento entre las dos redes y si no es entre # ellas, denegarlo # ipfwadm -F -a 192.168.0.0/24 ipfwadm -F 10.0.0.0/24 -a accept -P all -S 10.0.0.0/24 -i eth0 -D

accept

-P

all

-S

192.168.0.0/24

-i

eth1

-D

ipfwadm -F -p deny # # Y por supuesto hay que dejar que entren los paquetes # ipfwadm -I -a 192.168.0.0/24 ipfwadm -I 10.0.0.0/24 # # Dejarles acceder al servidor de correo pero a nada ms # ipfwadm -I -a accept -P tcp -S 10.0.0.0/24 -i eth0 -D 10.0.0.1 25 ipfwadm -I -a 192.168.0.1 25 accept -P tcp -S 192.168.0.0/24 -i eth0 -D -a accept -P tcp -S 10.0.0.0/24 -i eth0 -D

accept

-P

tcp

-S

192.168.0.0/24

-i

eth1

-D

ipfwadm -I -p deny Ahora el FreeS/WAN soporta la serie 2.2.x del kernel, nunca se debera escoger ipfwadm sobre ipchains. Ipchains ofrece un grado de control mucho ms afinado y es mucho ms flexible que ipfwadm. IPCHAINS El ipchains contiene algunas caractersticas nuevas comparado con ipfwadm; se pueden crear cadenas de reglas (de aqu el nombre) y enlazarlas juntas, haciendo ms sencilla la administracin de cortafuegos. El ipchains soporta ms objetivos que ipfwadm; se puede apuntar una regla a: ACCEPT, DENY, REJECT, MASQ, REDIRECT o RETURN o a una cadena definida por el usuario. Como tal es bastante potente, se podra, por ejemplo, redireccionar todos los paquetes destinados al puerto 80 (trfico www) de mi puerta de enlace para que se redirigiesen al puerto local 3128, el servidor proxy de Squid. Tambin se puede utilizar esto junto con el routing de calidad de servicio, el ejemplo dado en la documentacin de ipfwadm es priorizar el trfico sobre un enlace PPP, se le puede dar una prioridad ms alta al trfico de telnet que al de, pongamos, ftp, reduciendo los problemas de latencia causados por un enlace saturado. Por lo general, creo un fichero /etc/rc.d/init.d/ipchains-sh (o en cualquier otro lugar apropiado) y lo llamo inmediatamente despus de que arranca la red, lo cual deja un tiempo pequeo durante el cual el servidor es vulnerable, pero mnimamente, pues todava no se estn ejecutando demonios de red. El siguiente script es apropiado para una puerta de enlace ejecutndose con 2 interfaces, que es por lo que he utilizado el objetivo DENY en lugar de REJECT, de modo que se descarte el paquete y no se responda d e ninguna manera, lo cual ralentiza los escaneos de red (puesto que esperan el timeout en lugar de recibir una respuesta) y revela menos informacin. Tambin desaconsejara guardar logs de los datos, a menos que se disponga de la suficiente cantidad de espacio en disco duro, puesto que cada paquete que se enva (varios bytes) se utilizan muchos bytes de disco duro para crear la entrada del log, siendo fcil saturar el syslog y/o el disco duro en una conexin rpida. La pgina del ipchains se encuentra en: http://www.rustcorp.com/linux/ipchains/

#!/bin/bash # # Este script configura las reglas apropiadas de un cortafuegos para un # servidor con 2 interfaces ejecutndose como puerta de enlace. # # Si se planea utilizarlo, es necesario editar este script. #

# Se supone que las mquinas internas hacen todas una llamada a la puerta # de enlace, de modo que las reglas no bloquean el trfico interno. # # Un par de variables # # ETH0IP es la direccin IP de ETH0 (el interfaz externo) # ETH0NET es la red # ETH0NETMASK es la mscara de red # HOSTFIABLE1 web/ssh) # HOSTFIABLE2 web/ssh) es un host fiable (para administracin de

es

un

host

fiable

(para

administracin

de

# ETH1IP es la direccin IP de ETH1 (el interfaz interno) # ETH1NET es la red # ETH1NETMASK es la mscara de red # ETH0IP=1.1.1.1 ETH0NET=1.1.1.0 ETH0NETMASK=24 HOSTFIABLE1=1.5.1.1 HOSTFIABLE2=1.5.1.2 ETH1IP=10.0.0.1 ETH1NET=10.0.0.0 ETH1NETMASK=24 # PATH=/sbin # LIMPIAR TODAS LAS REGLAS ipchains -F input ipchains -F output

ipchains -F forward # ANTI-SPOOFING ipchains -A 0.0.0.0/0 ipchains -A 0.0.0.0/0 input -p all -j DENY -s 10.0.0.0/8 -i eth0 -d

input

-p

all -j DENY

-s 127.0.0.0/8

-i eth0

-d

ipchains -A input -p all -j DENY -s 192.168.0.0/16 -i eth0 -d 0.0.0.0/0 ipchains -A input -p all -j DENY -s 172.16.0.0/16 -i eth0 -d 0.0.0.0/0 ipchains -A 0.0.0.0/0 # PRIMERO ICMP ipchains -A input -p icmp -j ACCEPT -s $ETH0NET/$ETH0NETMASK -i eth0 -d 0.0.0.0/0 ipchains -A 0.0.0.0/0 # SSH ipchains -A input -p tcp -j ACCEPT -s $HOSTFIABLE1 -i eth0 -d 0.0.0.0/0 22 ipchains -A input -p tcp -j ACCEPT -s $HOSTFIABLE2 -i eth0 -d 0.0.0.0/0 22 # BLOQUEO 1:1023 ipchains -A input 0.0.0.0/0 1:1023 ipchains -A input 0.0.0.0/0 1:1023 -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d input -p icmp -j DENY -s 0.0.0.0/0 -i eth0 -d input -p all -j DENY -s $ETH0IP -i eth0 -d

-p

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

# BLOQUEO DE OTRAS COSAS ipchains -A input 0.0.0.0/0 1109 ipchains -A input 0.0.0.0/0 1524 ipchains -A input 0.0.0.0/0 1600 ipchains -A input 0.0.0.0/0 2003 -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

ipchains -A input 0.0.0.0/0 2049 ipchains -A input 0.0.0.0/0 2105 ipchains -A input 0.0.0.0/0 3001 ipchains -A input 0.0.0.0/0 3001

-p

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

ipchains -A input -p 0.0.0.0/0 3128:3130 ipchains -A input -p 0.0.0.0/0 3128:3130 ipchains -A input 0.0.0.0/0 3306 ipchains -A input 0.0.0.0/0 3306 ipchains -A input 0.0.0.0/0 4444 -p

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

ipchains -A input -p 0.0.0.0/0 6000:6100 ipchains -A input -p 0.0.0.0/0 6000:6100 ipchains -A input 0.0.0.0/0 6667 ipchains -A input 0.0.0.0/0 7000 -p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

udp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

-p

tcp

-j

DENY

-s

0.0.0.0/0

-i

eth0

-d

# ADMINISTRACIN DE WEB ipchains -A input -p tcp -j ACCEPT -s $HOSTFIABLE1 -i eth0 -d 0.0.0.0/0 10000 ipchains -A input -p tcp -j ACCEPT -s $HOSTFIABLE2 -i eth0 -d 0.0.0.0/0 10000 ipchains -A input 0.0.0.0/0 10000 -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d

# REGLAS DE REDIRECCIONAMIENTO ipchains -P forward DENY ipchains -A forward -p all -j MASQ -s $ETH1NET/$ETH1NETMASK -d 0.0.0.0/0

NETFILTER El NETFILTER es la siguiente generacin de filtrado de paquetes para Linux. Debera de hacer otro tipo de cosas ms fcilmente, como cortafuegos, IPSec, cualquier cosa que tenga que ver con la gestin de paquetes. El HOWTO se encuentra disponible en: http://netfilter.kernelnotes.org/ IPF El IPF es un paquete de cortafuegos alternativo, disponible para Linux (y la mayora de sistemas operativos). Se puede conseguir en: http://cheops.anu.edu.au/

SINUS Firewall El SINUS Firewall es un cortafuegos alternativo para Linux (kernel 2.0.x and 2.2.x). Se puede conseguir en: http://www.sinusfirewall.org/.

Phoenix Adaptive Firewall Estoy en proceso de evaluar el producto, sin embargo parece bastante prometedor. Reemplaza ipchains completamente y aade un montn de inteligencia al proceso de filtrado. Sin embargo es un producto comercial (sobre los 3000$ US), y es el primer cortafuegos para Linux en estar certificado por la ICSA. Est disponible en: http://www.progressivesystems.com/products/phoenix/ Creacin de Reglas ipfwadm2ipchains Un simple script que convierte las r eglas de ipfwadm a ipchains, haciendo ms fcil la migracin. El script se encuentra disponible en la siguiente direccin: http://users.dhp.com/~whisper/ipfwadm2ipchains/ mason Mason es un generador automtico de reglas para ipfwadm e ipchains. Se carga y monitoriza el flujo de paquetes a travs de la mquina, y despus, basndose en eso crea un conjunto de reglas para permitir ese tipo de actividad (p. ej. si se hace un ftp al servidor desde un sitio remoto, permitir ese tipo de acceso en las reglas que crea). Es una buena herramienta para administradores de cortafuegos novatos, disponible en: http://users.dhp.com/~whisper/mason/ firewall.sh Un script basado en dilogo que te conduce a travs de la creacin de reglas de filtrado, bastante bien hecho y est orientado a nuevos usuarios, disponible en: http://devplanet.fastethernet.net/Utilities/ Mklinuxfw

Mklinuxfw es una herramienta perl dirigida a proporcionar una variedad de interfaces (CGI, KDE, lnea de comandos, etc.) para la creacin de reglas de cortafuegos. Actualmente soporta interfaz CGI y est en progreso el GTK. Se puede descargar de: http://www.madhouse.org.uk/~red/framepage.phtml?/mklinuxfw /index.html kfirewall kfirewall es una aplicacin basada en GUI para la creacin de reglas ipfwadm o ipchains. Se puede conseguir en: http://megaman.ypsilonia.net/kfirewall/ fwconfig fwconfig es una herramienta interesante para configurar ipfwadm e ipchains, basada en www. Se puede descargar desde: http://www.mindstorm.com/~sparlin/fwconfig.shtml xipfwadm xipfwadm es una aplicacin Tcl/Tk para X que simplifica la creacin de reglas ipfwadm. Se puede conseguir en: http://www.x25.org/xipfwadm.html Firewall Manager Firewall Manager es una aplicacin Tcl/Tk orientada a ser ejecutada desde X-Window que proporciona un GUI para gestin de cortafuegos. Se puede descargar desde: http://www.tectrip.net/arg/

Linux Firewall Tools Un sitio interesante, tiene un cgi online para crear scripts de cortafuegos, aunque a mi no me funcion (muy lento). Se puede ver en: http://www.linux-firewall-tools.com/. FCT - Firewall Configuration Tool Una de las herramientas de configuracin online mediante avanzadas. Se puede probar http://www.fen.baynet.de/~ft114/FCT/index.htm. DNi DNi es un cgi online que te ayuda a crear reglas de cortafuegos para ipfwadm. Se puede probar en: http://members.tripod.com/~robel/dni/. cgi ms en

Volver

Copyright 1999, Kurt Seifried, Jos Antonio Revilla Todos los derechos reservados.

You might also like