Está en la página 1de 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

s - Iptables Iptables 1. Qu es y para qu sirve? Es uno de los mejores cortafuegos disponibles, incluyendo soluciones comerciales, y desde luego, la mejor solucin gratuita por su potencia y versatibilidad. iptables es una extensin del kernel, es decir, el propio sistema se encarga de su gestin y lo que eso conlleva, para bien o para mal. Su funcin consiste bsicamente en analizar todo el flujo de trfico entrante y saliente hacia/desde l y tomar unas decisiones sobre cada paquete en base a unas reglas definidas. 2. Cmo funciona? Para saber cmo funciona un cortafuegos hay que entender primero cmo funciona una conexin y el trfico 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 comunicacin se abren una serie de puertos de comunicacin en los ordenadores en donde los programas se ponen a "hablar y escuchar" para interactuar.

As, por ejemplo, un ordenador que ofrece una pgina 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 comunicacin se establece y se muestra la pgina 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 comunicacin, o para ser exactos, cuando se intenta establecer una conexin, es cuando entra en juego iptables, que se pone por delante de nuestros puertos y decide qu paquete de informacin puede pasar, segn 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.

Mas claro,, el paquete entra por la parte superior de la tabla: se encuentra con la primera regla de filtrado, se decide la accin analizando el paquete: dejarlo pasar o no. Si se deja, siguiente regla, si no, para fuera. Es as de sencillo. Iptables consiste bsicamente de tres tablas:

tabla FILTER: usado para implementar el firewall. Aqu se produce el filtrado de paquetes. tabla NAT:(masquerading) para hacer que otros ordenadores se conecten a travs del nuestro a una serie de servicios pero con nuestra ip, pareciendo que esas conexiones vienen de nuestro equipo. tabla MANGLE: sirve para alterar el estado de un paquete.

Tenemos dentro de la tabla FILTER:


INPUT: todo el trfico entrante OUTPUT: todo el trfico saliente FORWARDING: para enrutar trfico a travs de nuestro ordenador hacia otro ordenador. Se supone que este trfico no es para nosotros

Dentro de la tabla NAT tenemos:


PREROUTING: para alterar el trfico as como llegue a nosotros POSTROUTING: para alterar paquetes generados localmente antes de enrutarlos OUTPUT: alterar paquetes justo antes de que salgan

Si adems tenemos el mdulo ipt_conntrack disponible, dispondremos de herramientas para controlar el estado de la conexin. Podemos aadir entonces:

NEW: nuevo paquete que viene hacia nosotros RELATED: paquetes nuevos pero que ya estn relacionados con una conexin existente.

EJEMPLO: cuando usamos un ftp se abren varias conexiones para poder bajar correctamente lo que necesitamos. Si no lo activamos, slo sera posible la primera conexin y los dems paquetes, aunque relacionados con la primera conexin, no se dejaran pasar y la transferencia se interrumpir.

ESTABLISHED: paquetes asociados a una conexin nueva INVALID: todos los dems paquetes, que no coincidan con ninguno de los estados descritos

3. Dnde lo consigo? Como lo comentaba, iptables forma parte del ncleo y por lo tanto todo usuario linux dispone de ese servicio. 4. Cmo lo pongo a andar? ALGUNAS ORDENES BASICAS:

iptables -F : borrado de reglas

iptables -L : listado de reglas que se estn aplicando iptables -A : append, aadir 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.0.0.0/0 -p TCP --dport www -j ACCEPT Nomenclatura: iptables: comando iptables -A: append, aadir una regla. OJO, se aade al final!! 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, podr ser DROP, LOG, REJECT, ... ) FLAGS MAS COMUNES: -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 -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, ... ) Notas: -i se usa con reglas INPUT y FORWARD -o se usa con reglas FORWARD y OUTPUT Visto esto, y dado que tenemos multitud de conexiones, ms an si estamos ofreciendo servicios, deberemos introducir una multitud de comandos al iptables cada vez que arranque el ncleo, de ah se opta por la automatizacin.

Por ello se crea un script, un simple archivo de texto, en el que ponemos todo lo que queramos que ejecute nuestro cortafuegos durante la carga del sistema, y programamos el Linux para que cargue el script durante arranque, olvidndonos de esta tarea tediosa. SECCIONES DEL SCRIPT Siempre empiezan invocando al intrprete (un programa que lee y ejecuta el archivo), la primera lnea debe ser algo como : #!/bin/sh -> se llama a sh y ste se encarga de leer lnea por lnea el archivo. Tenemos la posibilidad de declarar variables. 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 mencin al ejecutable /sbin/iptables, slo tendremos que poner $IPT. MUUUUY importante no olvidarse del smbolo $ cada vez que llamemos a una variable. Ejemplo de iptables a realizar en la prctica
#! /bin/sh # # #Inicia de la Configuracion de Iptables # iptables -X iptables -F iptables -Z iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth1 -m state --state ESTABLISHED,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.1.170.10 # iptables -A INPUT -s 10.1.170.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

# 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 estn haciendo enmascaramiento # iptables -t nat -A POSTROUTING -s 10.1.150.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 configuracin de Iptables

Actividades: Vaya al archivo boot.local que esta ubicado en /etc/init.d. Haga una copia del mismo cp boot.local boot.local.original Edite el boot.local, aada el cortafuegos de ejemplo. Ajuste el cortafuegos a su servidor, es decir use sus tarjetas de red, las ip de su red, etc. 5. Reinicie el cortafuegos con las siguientes instrucciones desde una consola: iptables flush iptables t nat --flush sh /etc/init.d/boot.local 6. Conctese desde una de las maquinas clientes registradas en su server, via SSH, y pruebe si tiene acceso. Puntos a detallar en el informe: 1. Asignatura, fecha, nmero de informe, integrantes. 2. Ruta completa para llegar al archivo modificable boot.local 3. Describa cada lnea del cortafuego de ejemplo en forma de comentario y adjntelo al informe. 4. Mensaje que enva computadora cliente registrada en iptables al establecer conexin va SSH con el Server. 5. Mensaje que enva computadora cliente no registrada en iptables al establecer conexin va SSH con Server. 6. Actividades no especificadas 7. Problemas encontrados. 1. 2. 3. 4.

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

También podría gustarte