practica iptables

7
PRÁCTICA 5: USO DE CORTAFUEGOS IPTABLES 1. ¿ Qué es IPTABLES ? En linux, el filtrado de paquetes se controla a nivel del kernel. Existen módulos 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 disponía de los módulos IPCHAINS para montar firewalls, así como de otros módulos de soporte para comunicaciones concretas (enmascaramiento de FTP, de IRC, Real Audio etc.). Gracias a IPCHAINS, además de poder definir normas de firewall muy precisas, también podía 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 más 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 módulos para solventar los problemas de acceso a servicios especiales, Y se recomienda pasarse a IPTABLES.

Upload: ecosolid

Post on 23-Dec-2015

227 views

Category:

Documents


5 download

DESCRIPTION

iptables

TRANSCRIPT

Page 1: Practica Iptables

PRÁCTICA 5: USO DE CORTAFUEGOS

IPTABLES

1. ¿ Qué es IPTABLES ?

En linux, el filtrado de paquetes se controla a nivel del kernel.

Existen módulos 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 disponía de los módulos IPCHAINS para montar firewalls, así como de otros módulos de soporte para comunicaciones concretas (enmascaramiento de FTP, de IRC, Real Audio etc.).

Gracias a IPCHAINS, además de poder definir normas de firewall muy precisas, también podía 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 más 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 módulos para solventar los problemas de acceso a servicios especiales, Y se recomienda pasarse a IPTABLES.

Page 2: Practica Iptables

En el siguiente gráfico se distingue el camino que siguen los paquetes al pasar por un firewall con IPTables, y nos guía sobre la forma de aplicar las reglas. (En general, a lo que se ruta a través del firewall se le aplica FORWARD y a lo que va al firewall se le aplica INPUT).

2. Diferencias respecto a IPCHAINS

IPTABLES es más completo que IPCHAINS, permite un control aún más preciso, aunque también es más 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 podría complicar y sofisticar tanto como se deseara, eso ya es cuestión de cada cual.

La sintaxis, obviamente cambia, aunque no mucho. DENY no existe, ahora sería DROP. MASQ y REDIRECT no existen como destinos de paquetes. REJECT extendidos con mas opciones LOG con más opciones, muy útil para monitorizar y depurar … y más que se pueden ver en el Howto y en otras páginas.

3. Elementos básicos de iptables

El script:

· Comienza cargando los módulos necesarios (los imprescindibles y los auxiliares, como el de ftp masquerading),

· Establece algún bit como por ejemplo el de forwarding.

Page 3: Practica Iptables

· Luego borra todas las reglas actuales (flush).

· Establece las políticas por defecto para la aceptación, reenvío y salida.

· Y finalmente va aplicando todas las reglas de firewall, que varían enormemente dependiendo de las necesidades de cada red.

El orden de algunos puntos no tiene por que ser siempre así.. Por lo general, una aproximación buena suele ser CERRAR todo por defecto, e ir abriendo lo que se necesite. Aunque esta última aproximación da mucho más quebraderos de cabeza.

-Ordenes básicas:

iptables –F : flush de reglas (las elimina) iptables –L : listado de reglas que se están aplicando iptables –A : append, añadir 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, opción para añadir la regal INPUT: estado del paquete (al entrar es input). -i eth0: interfaz de red eth0 -s 0.0.0.0/0: dirección de acceso (cualquiera en este caso) -p TCP: tipo de puerto --dport: puerto de destino -j ACCEPT: destino del paquete (se acepta, podría ser DROP, LOG, REJECT,..)

-Guía rápida 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

Page 4: Practica Iptables

A partir de estas normas básicas, conociendo la anatomía básica 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); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete. ¿Cuál 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 máquina

Muy bien, tenemos una máquina 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) - Aplicación de políticas 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 máquina echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables –F iptables –X iptables –Z iptables -t nat –F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

Page 5: Practica Iptables

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 compañero le dejamos entrar al servidor de internet

iptables -A INPUT -s ?.?.?.? -p tcp --dport 80 -j ACCEPT <- modificar IP # A otro compañero 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 20:21 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 22 -j DROP iptables -A INPUT -p tcp --dport 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 algún compañero. Modificar los permisos del script para poder ejecutarlo

chmod 750 firewall1.sh

, y ejecutarlo.

Ejercicio: Comprobar el estado de IPTABLE después 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 través de ssh.

Ejercicio: Hacer pequeñas modificaciones en el script y probar el acceso desde distintas maquinas a través de diferentes puertos.

Page 6: Practica Iptables

4. Depurar el funcionamiento del firewall

Programas útiles

IPTRAF. Sin duda alguna uno de los programas más prácticos 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 tráfico que atraviesa nuestra máquina con todo lujo de detalles: origen/destino de ips y puertos, tráfico total o tráfico total según 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 rápida, efectiva y con multitud de opciones. Podemos usarla desde máquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visión" 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

Page 7: Practica Iptables

Para profundizar:

En la web existe un manual que podéis consultar, http://cebu.mozcom.com/riker/iptraf/

Probar filtrando para mejorar la visibilidad de los puertos que se desean comprobar

También podéis probar NMAP con los scripts que habéis hecho, el NMAP lo podéis encontrar en: http://www.insecure.org/nmap/nmap_download.html y el manual en español ¡que existe! Esta en: http://www.insecure.org/nmap/data/nmap_manpage-es.html

Para obtener más información se recomienda el articulo: http://www.pello.info/filez/firewall/iptables.html en que podéis encontrar ejemplos para otras configuraciones de firewall más complejos.