You are on page 1of 6

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA FAREM- CHONTALES Asignatura: Teletratamiento de Redes II 29/10/2012 6:00 – 7:30 Tema 5: Seguridad en redes - Iptables Iptables

1. ¿Qué es y para qué sirve? Es uno de los mejores cortafuegos disponibles, incluyendo soluciones comerciales, y desde luego, la mejor solución gratuita por su potencia y versatibilidad. iptables es una extensión del kernel, es decir, el propio sistema se encarga de su gestión y lo que eso conlleva, para bien o para mal. Su función consiste básicamente en analizar todo el flujo de tráfico entrante y saliente hacia/desde él y tomar unas decisiones sobre cada paquete en base a unas reglas definidas. 2. ¿Cómo funciona? Para saber cómo funciona un cortafuegos hay que entender primero cómo funciona una conexión y el tráfico en general. Cuando nos conectamos a internet nos estamos conectando a una red inmensa de ordenadores, es decir, tenemos acceso directo a todo aquel que está conectado en ese mismo momento. Para establecer la comunicación se abren una serie de puertos de comunicación en los ordenadores en donde los programas se ponen a "hablar y escuchar" para interactuar.
• •

Así, por ejemplo, un ordenador que ofrece una página Web (un servidor Web), se pone a escuchar y atender solicitudes en el puerto 80. Cuando se establece una solicitud, el servidor Web dialoga con el cliente y si se cumple el proceso, la comunicación se establece y se muestra la página Web.

Lo que ocurre es que los sistemas operativos actuales, e infinidad de programas, por defecto abren puertos sin notificar al usuario y por tanto estamos con unos puertos abiertos y expuestos a que alguien le dé por mirar qué es lo que ofreces sin tú saberlo. Y justo en el proceso de comunicación, o para ser exactos, cuando se intenta establecer una conexión, es cuando entra en juego iptables, que se pone por delante de nuestros puertos y decide qué paquete de información puede pasar, según unos criterios. Estos criterios se almacenan en unas tablas, con reglas en Orden descendente donde la última siempre será la última regla en aplicarse, antes de que se aplique la regla por defecto. Esto es así sempre que no sea interceptada por una regla anterior.

Podemos añadir entonces: • • NEW: nuevo paquete que viene hacia nosotros RELATED: paquetes nuevos pero que ya están relacionados con una conexión existente. Si no lo activamos. aunque relacionados con la primera conexión. Si se deja. sólo sería posible la primera conexión y los demás paquetes. EJEMPLO: cuando usamos un ftp se abren varias conexiones para poder bajar correctamente lo que necesitamos. el paquete entra por la parte superior de la tabla: se encuentra con la primera regla de filtrado. si no. para fuera. que no coincidan con ninguno de los estados descritos 3. dispondremos de herramientas para controlar el estado de la conexión. siguiente regla.Mas claro. ¿Dónde lo consigo? Como lo comentaba. se decide la acción analizando el paquete: dejarlo pasar o no. Tenemos dentro de la tabla FILTER: • • • INPUT: todo el tráfico entrante OUTPUT: todo el tráfico saliente FORWARDING: para enrutar tráfico a través de nuestro ordenador hacia otro ordenador. pareciendo que esas conexiones vienen de nuestro equipo. tabla MANGLE: sirve para alterar el estado de un paquete. iptables forma parte del núcleo y por lo tanto todo usuario linux dispone de ese servicio. Se supone que este tráfico no es para nosotros Dentro de la tabla NAT tenemos: • • • PREROUTING: para alterar el tráfico así como llegue a nosotros POSTROUTING: para alterar paquetes generados localmente antes de enrutarlos OUTPUT: alterar paquetes justo antes de que salgan Si además tenemos el módulo ipt_conntrack disponible. • • ESTABLISHED: paquetes asociados a una conexión nueva INVALID: todos los demás paquetes. Es así de sencillo.. Aquí se produce el filtrado de paquetes. tabla NAT:(masquerading) para hacer que otros ordenadores se conecten a través del nuestro a una serie de servicios pero con nuestra ip. no se dejarían pasar y la transferencia se interrumpirá. 4. ¿Cómo lo pongo a andar? ALGUNAS ORDENES BASICAS: • iptables -F : borrado de reglas . Iptables consiste básicamente de tres tablas: • • • tabla FILTER: usado para implementar el firewall.

se añade al final!! INPUT: estado del paquete (al entrar es input). podrá ser DROP. añadir una regla. Ej: -s 192. ppp0.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. OJO. . .0. ...73.56.eth1. Ej: -p TCP --sport : puerto de origen --dport: puerto de destino -i = -in-interface : el interfaz por el que se entra (eth0. LOG.0/24 -d : destino. REJECT. ppp0. de ahí se opta por la automatización. añadir regla iptables -D : borrar una regla EJEMPLO DE UNA REGLA #Aceptar conexiones al puerto 80 (www) en la tarjeta eth0 iptables -A INPUT -i eth0 -s 0.1...3 -p : tipo de protocolo (TCP. ICMP). Ej: -d 84.eth1. ) -o = --out-interface: el interfaz por el que se sale (eth0.168...0/0 -p TCP --dport www -j ACCEPT Nomenclatura: iptables: comando iptables -A: append. .0. UDP. más aún si estamos ofreciendo servicios. ) FLAGS MAS COMUNES: -s : source address. y dado que tenemos multitud de conexiones.• • • iptables -L : listado de reglas que se están aplicando iptables -A : append.0. deberemos introducir una multitud de comandos al iptables cada vez que arranque el núcleo.0. ) Notas: -i se usa con reglas INPUT y FORWARD -o se usa con reglas FORWARD y OUTPUT Visto esto. -i eth0: interfaz de red eth0 -s 0.

y programamos el Linux para que cargue el script durante arranque.1. Tenemos la posibilidad de declarar variables.170. en el que ponemos todo lo que queramos que ejecute nuestro cortafuegos durante la carga del sistema.170. SECCIONES DEL SCRIPT Siempre empiezan invocando al intérprete (un programa que lee y ejecuta el archivo). sólo tendremos que poner $IPT. Ejemplo de iptables a realizar en la práctica #! /bin/sh # # #Inicia de la Configuracion de Iptables # iptables -X iptables -F iptables -Z iptables -A INPUT -i eth0 -m state --state ESTABLISHED.10 # iptables -A INPUT -s 10.10 -p tcp --dport 22 -j ACCEPT # Activacion DHCP en la interfaz privada # iptables -A INPUT -i eth1 -p udp --dport 67 -j ACCEPT # Activacion Proxy en la interfaz privada iptables -A INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT .RELATED -j ACCEPT # Activacion de SNMP # iptables -A INPUT -i iptables -A INPUT -i iptables -A INPUT -i iptables -A INPUT -i en la interfaz privada eth0 eth0 eth0 eth0 -p -p -p -p tcp udp tcp udp --dport --dport --dport --dport 161 161 162 162 -j -j -j -j ACCEPT ACCEPT ACCEPT ACCEPT # # Habilitar ssh unicamente para IP 10. olvidándonos de esta tarea tediosa. MUUUUY importante no olvidarse del símbolo $ cada vez que llamemos a una variable.1. un simple archivo de texto.Por ello se crea un script. la primera línea debe ser algo como : #!/bin/sh -> se llama a sh y éste se encarga de leer línea por línea el archivo.RELATED -j ACCEPT iptables -A INPUT -i eth1 -m state --state ESTABLISHED. Un ejemplo: IPT=/sbin/iptables EXTIF="eth1" (tarjeta de red que se conecta a internet) INTIF="eth0" (tarjeta de que se comunica con nuestra propia red) Así cada vez que queremos hacer mención al ejecutable /sbin/iptables.

. Ajuste el cortafuegos a su servidor. Haga una copia del mismo cp boot. Ruta completa para llegar al archivo modificable boot.original Edite el boot.local que esta ubicado en /etc/init. Problemas encontrados. fecha. 6. integrantes.local boot. y pruebe si tiene acceso. las ip de su red. número de informe. 4.local 3. Describa cada línea del cortafuego de ejemplo en forma de comentario y adjúntelo al informe. 2. via SSH. Mensaje que envía computadora cliente no registrada en iptables al establecer conexión vía SSH con Server.local 6. Asignatura. 5. 5.d/boot. 3. Mensaje que envía computadora cliente registrada en iptables al establecer conexión vía SSH con el Server. es decir use sus tarjetas de red. 4. 1. etc.31 -j MASQUERADE # # Cierra las reglas en el firewall # iptables -A INPUT -i eth0 -p icmp -j ACCEPT iptables -A INPUT -i eth0 -j DROP iptables -A INPUT -i eth1 -p icmp -j ACCEPT iptables -A INPUT -i eth1 -j DROP # Fin de configuración de Iptables Actividades: Vaya al archivo boot. Reinicie el cortafuegos con las siguientes instrucciones desde una consola: • iptables –flush • iptables –t nat --flush • sh /etc/init.1. Conéctese desde una de las maquinas clientes registradas en su server.150. Actividades no especificadas 7. 2. Puntos a detallar en el informe: 1. añada el cortafuegos de ejemplo.d.# Activacion DNS en la interfaz privada # iptables -A INPUT -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT # Activacion DNS en la interfaz publica # iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT # Activacion HTTP en la interfaz publica # iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT #iptables -A INPUT -i eth0 -p udp --dport 80 -j ACCEPT # Activacion HTTP en la interfaz privada # iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT #iptables -A INPUT -i eth1 -p udp --dport 80 -j ACCEPT # Maquinas que están haciendo enmascaramiento # iptables -t nat -A POSTROUTING -s 10.local.local.

Actúa como un muro que deja pasar únicamente lo que esta establecido en la configuración del mismo. Existen muchas aplicaciones que se pueden utilizar como cortafuegos. .Algunas aclaraciones: Cortafuegos: elemento importante de la seguridad en una red de computadoras. comerciales y libres. una de ellas es Iptables (software libre).