You are on page 1of 7

PRCTICA 5: USO DE CORTAFUEGOS

IPTABLES

1. Qu es IPTABLES ?
En linux, el filtrado de paquetes se controla a nivel del kernel.
Existen mdulos para el kernel que permiten definir un sistema de reglas para aceptar o
rechazar los paquetes o las comunicaciones que pasan por el sistema. Estos sistemas de
reglas conforman lo que se conoce como firewall o cortafuegos; en otros sistemas los
firewall pueden estar implementados en software y estar desvinculados del sistema
operativo, pero en el caso de linux, el firewall se puede montar a nivel de kernel y no es
necesario instalar un software adicional que a veces tiene agujeros.
En versiones de Kernel anteriores a la 2.4 se dispona de los mdulos IPCHAINS para
montar firewalls, as como de otros mdulos de soporte para comunicaciones concretas
(enmascaramiento de FTP, de IRC, Real Audio etc.).
Gracias a IPCHAINS, adems de poder definir normas de firewall muy precisas,
tambin poda hacer que un linux funcionara como gateway enmascarando todas las
peticiones de una LAN.
IPCHAINS ha muerto, viva IPTABLE. A partir del kernel 2.4 se esta dando soporte a
otro modulo para filtrado de paquetes mucho ms potente que IPCHAINS, llamado
IPTABLES.
Para acceder a ciertos sitios ftp tendremos problemas usando IPCHAINS con el kernel
2.4. A pesar de que IPCHAINS siga funcionando, ya no tendremos los antiguos
mdulos para solventar los problemas de acceso a servicios especiales,
Y se recomienda pasarse a IPTABLES.

En el siguiente grfico se distingue el camino que siguen los paquetes al pasar por un
firewall con IPTables, y nos gua sobre la forma de aplicar las reglas.
(En general, a lo que se ruta a travs del firewall se le aplica FORWARD y a lo que va
al firewall se le aplica INPUT).

2. Diferencias respecto a IPCHAINS


IPTABLES es ms completo que IPCHAINS, permite un control an ms preciso,
aunque tambin es ms complejo.
En principio el sistema sigue siendo el mismo. Hay que cargar un modulo del kernel (se
puede hacer en el propio script de firewall), y ejecutar un script de shell convencional
que tiene el aspecto de un conjunto de reglas. Un script de este tipo se podra complicar
y sofisticar tanto como se deseara, eso ya es cuestin de cada cual.
La sintaxis, obviamente cambia, aunque no mucho.
DENY no existe, ahora sera DROP.
MASQ y REDIRECT no existen como destinos de paquetes.
REJECT extendidos con mas opciones
LOG con ms opciones, muy til para monitorizar y depurar
y ms que se pueden ver en el Howto y en otras pginas.

3. Elementos bsicos de iptables


El script:
Comienza cargando los mdulos necesarios (los imprescindibles y los auxiliares, como
el de ftp masquerading),
Establece algn bit como por ejemplo el de forwarding.

Luego borra todas las reglas actuales (flush).


Establece las polticas por defecto para la aceptacin, reenvo y salida.
Y finalmente va aplicando todas las reglas de firewall, que varan enormemente
dependiendo de las necesidades de cada red.
El orden de algunos puntos no tiene por que ser siempre as.. Por lo general, una
aproximacin buena suele ser CERRAR todo por defecto, e ir abriendo lo que se
necesite. Aunque esta ltima aproximacin da mucho ms quebraderos de cabeza.
-Ordenes bsicas:
iptables F : flush de reglas (las elimina)
iptables L : listado de reglas que se estn aplicando
iptables A : append, aadir regla
iptables D : borrar una reglas, etc
-Ejemplo de regla:
#Regla que acepta conexiones al puerto 80
iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p TCP --dport www -j ACCEPT

ANATOMIA DE LA REGLA:
iptables: comando iptables (no hay que olvidar que las reglas son un shell script)
-A: append, opcin para aadir la regal
INPUT: estado del paquete (al entrar es input).
-i eth0: interfaz de red eth0
-s 0.0.0.0/0: direccin de acceso (cualquiera en este caso)
-p TCP: tipo de puerto
--dport: puerto de destino
-j ACCEPT: destino del paquete (se acepta, podra ser DROP, LOG, REJECT,..)
-Gua rpida de flags:
-i = in-interface : el interfaz por el que se entra (eth0,eth1, ppp0,)
-o = --out-interface: el interfaz por el que se sale (eth0,eth1, ppp0,)
-s : source address. Ej: -s 192.168.1.0/24
-d : destino. Ej: -d 84.56.73.3
-p : tipo de protocolo(TCP,UDP,ICMP). Ej: -p TCP
--sport : puerto de origen
--dport: puerto de destino
-Notas:
-i se usa con reglas INPUT y FORWARD
-o se usa con reglas FORWARD y OUTPUT

A partir de estas normas bsicas, conociendo la anatoma bsica de una regla, y viendo
ejemplos ya tenemos
suficiente material para hacernos con el dominio de IPTABLES.
IMPORTANTE
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando
hay que decidir que se hace con un paquete se va comparando con cada regla del
firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta
regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese
paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del
firewall, puede que las siguientes no se apliquen y no sirvan de nada.
Ejercicio: comprobar el estado de IPTABLES
iptables -L -n

Ejercicio: Comprobar el estado de los puertos del sistema con netstat.


netstat -ln

3.1 Proteger la propia mquina


Muy bien, tenemos una mquina linux pinchada en internet y queremos protegerla con
su propio firewall. Lo nico que tenemos que hacer es crear un script de shell en el que
se van aplicando las reglas.
Los scripts de iptables pueden tener este aspecto:
- Borrado de las reglas aplicadas actualmente (flush)
- Aplicacin de polticas por defecto para INPUT, OUPUT, FORWARD
- Listado de reglas iptables.
Ojo con el orden de las reglas!
#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia mquina
echo -n Aplicando Reglas de Firewall...
## FLUSH
iptables
iptables
iptables
iptables

de reglas
F
X
Z
-t nat F

## Establecemos politica por defecto


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

iptables -t nat -P PREROUTING ACCEPT


iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales)
iptables -A INPUT -i lo -j ACCEPT
# A nuestra IP le dejamos todo
iptables -A INPUT -s ?.?.?.? -j ACCEPT <- modificar IP
# A un compaero le dejamos entrar al servidor de internet
iptables -A INPUT -s ?.?.?.? -p tcp --dport 80 -j ACCEPT <- modificar IP
# A otro compaero le dejamos usar el ssh
iptables -A INPUT -s ?.?.?.? -p tcp --dport 22 -j ACCEPT<- modificar IP
# El puerto 443 de www debe estar abierto, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# El puerto 80 de www debe estar cerado, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 80 -j DROP
# Y el resto, lo cerramos
iptables -A INPUT -p tcp --dport
iptables -A INPUT -p tcp --dport
iptables -A INPUT -p tcp --dport
iptables -A INPUT -p tcp --dport

20:21 -j DROP
3306 -j DROP
22 -j DROP
10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"


# Fin del script

Ejercicio: Escribir el script modificando las IP para que correspondan con


algn compaero. Modificar los permisos del script para poder ejecutarlo
chmod 750 firewall1.sh

, y ejecutarlo.
Ejercicio: Comprobar el estado de IPTABLE despus de aplicar el script
iptables -L -n

Ejercicio: Comprobar que hace lo que se espera probando el acceso desde


alguna maquina vecina a la web (http://... Y https//..)
Ejercicio: Comprobar que hace lo que se espera probando el acceso desde
alguna maquina vecina a travs de ssh.
Ejercicio: Hacer pequeas modificaciones en el script y probar el acceso
desde distintas maquinas a travs de diferentes puertos.

4. Depurar el funcionamiento del firewall


Programas tiles
IPTRAF. Sin duda alguna uno de los programas ms prcticos para depurar el firewall
es IPTRAF, ya que con el podemos observar si la conexiones se establecen o no; es un
programa de consola que es aconsejable controlar ya que muestra en tiempo real el
trfico que atraviesa nuestra mquina con todo lujo de detalles: origen/destino de ips y
puertos, trfico total o trfico total segn el interfaz de red, etc Si vemos muchas
conexiones simultaneas y nos perdemos, existe la posibilidad de aplicar filtros para
captar solo aquello que nos interesa.
NMAP. La herramienta para escanear puertos por excelencia, rechace imitaciones. Es
una herramienta de consola rpida, efectiva y con multitud de opciones. Podemos usarla
desde mquinas ajenas a nuestra red para comprobar si realmente el firewall esta
filtrando correctamente y en cierta manera para hacernos una idea de que "visin"
pueden tener los hackers de nuestro sistema.
Ejercicio: descargarse IPTRAF e instalarlo.
Se puede encontrar en la pagina http://cebu.mozcom.com/riker/iptraf/
Descomprimir el fichero .tar.gz usando:
tar zxvf iptraf-2.7.0.tar.gz

o bien usando:
gunzip iptraf-2.7.0.tar.gz
tar xvf iptraf-2.7.0.tar

Para compilar e instalar el programa ejecuta


./Setup

Los ficheros binaries resultants se colocan en el directorio /usr/local/bin . Y todos los


directories necesarios son creados.
Ejercicio: Ejecutar iptraf y familiarizarse con el programa. Probarlo para
varios de los scripts anteriores

Para profundizar:
En la web existe un manual que podis consultar,
http://cebu.mozcom.com/riker/iptraf/
Probar filtrando para mejorar la visibilidad de los puertos que se desean
comprobar
Tambin podis probar NMAP con los scripts que habis hecho, el NMAP lo
podis encontrar en: http://www.insecure.org/nmap/nmap_download.html y el
manual en espaol que existe! Esta en:
http://www.insecure.org/nmap/data/nmap_manpage-es.html
Para obtener ms informacin se recomienda el articulo:
http://www.pello.info/filez/firewall/iptables.html en que podis encontrar
ejemplos para otras configuraciones de firewall ms complejos.