You are on page 1of 28

IPTABLES

Gonzalo Alvarez Flores

Contenido
1. Qu es un firewall? 2. Netfilter: Historia 3. Qu es Iptables? 4. Polticas para implementar un firewall 5. Iptables: Conceptos Bsicos 6. Creando Reglas 7. Tipos de Filtrado 8. Comandos tiles 9. Creacin de scripts

1. Qu es un firewall?

Un firewall o cortafuegos, es un elemento de hardware o software utilizado en una red de computadoras para controlar la entrada y salida de trfico y de sta manera prevenir algunos tipos de comunicaciones prohibidos.

2. Qu es Netfilter?

Netfilter es el framework dentro de las series 2.4.x y 2.6.x del Kernel Linux que permite el filtrado de paquetes, el uso de Network Address Translation (NAT) y Mangling. http://www.netfilter.org

3. Qu es Iptables?

Iptables es el nombre de la herramienta que permite configurar, mantener y monitorear las reglas para el filtrado de paquetes, para hacer NAT y Mangling. Cada cadena es una lista de de reglas que se pueden comparar una serie de paquetes. Cada regla especifica que hace con cada paquete que coincida y se ejecuta una accin llamada Objetivo.

4. Polticas para implementar un firewall


Hay dos maneras de implementar un firewall: Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente. Poltica por defecto DENEGAR: todo esta denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente.

5. Iptables: Conceptos Bsicos

Regla (Rules):

Una cadena de entrada o salida, una cadena de reenvo (slo NAT) una cadena definida por el usuario. Filter: filtrar de paquetes (firewall). Nat: modificar direcciones o puertos de origen/destino de los paquetes (router). Mangle: modificar paquetes para lograr efectos especiales.

Tablas (Tables):

Cadenas (Chains):

INPUT: Todo lo que quiera entrar en nuestra mquina. OUTPUT: Todo lo que quiera salir de nuestra mquina. FORWARD: Todo lo que se quiera redirigir a otra mquina. PREROUTING: Lo que se har antes de encaminar el paquete. POSTROUTING: Lo que se har inmediatamente despus de encaminar el paquete.

Relacin Tabla-Cadena
TABLA FILTER CADENA INPUT OUPUT FORDWARD PREROUTING POSROUTING OUTPUT PREROUTING POSTROUTING INPUT OUTPUT FORDWARD

NAT

MANGLE

Objetivos (Targets):

ACCEPT: El paquete es aceptado y sale de INPUT. DROP: El paquete se descarta sin ningnproceso posterior. REJECT: Igual que DROP pero se enva un paquete de error al remitente. LOG: El paquete es registrado. ULOG, QUEUE, RETURN, DNAT, SNAT, MASQUERADE.

Flujo del Proceso

5. Creando Reglas

Opciones Comunes:

t tabla : Aplica la regla para la tabla especificada, FILTER por defecto si se omite. v : Nos muestra los mensajes de salida. n : Nos muestra salida numrica. -j objetivo : Especifica el objetivo de la regla. -p protocolo : Compara paquetes con el protocolo especificado. -s/d direccion IP : Compara la direccin IP de origen/destino del paquete con la especificada.

Especificacion de una Regla:


Creando Reglas (II)

--dport/sport puerto : Compara los paquetes TCP/UDP destinados/provenientes del puerto especificado.

Agregar/Borrar Reglas

iptables { -A | --append | -D --delete } cadena especificacin-de-la-regla [ opciones ] Ejemplo:


iptables -A INPUT -p udp -j DROP iptables -D INPUT -p udp -j DROP

Insertar/Reemplazar Reglas

iptables { -R | --replace | -I --insert } cadena numeroDeRegla especificacin-de-la-regla [ opciones ] Ejemplo:


iptables -R INPUT 2 -p icmp -j DROP iptables -I INPUT 4 -p udp --dport 80 -j DROP

Listar/Borrar/Resetear Reglas

iptables { -L | --list | -F --flush | -Z --zero } [ cadena ] [ opciones ] Ejemplos:


iptables -L OUTPUT iptables -F iptables -t nat -Z PREROUTING

Crear/Borrar Cadenas

iptables { -N | --new-chain } cadena iptables { -X | --delete-chain } [ cadena ] iptables { -P | --policy } cadena objetivo iptables { -E | --rename-chain } antiguonombre nuevo-nombre

7. Tipos de Filtrado

Podemos filtrar los paquete dependiendo de ciertas caractersticas, entre los tipos de filtrado ms usados tenemos:

Filtrado por interfaz Filtrado por protocolo Filtrado por direccin Filtrado por puerto Filtrado por estado de conexin

Filtrado por interfaz


-i, --in-interface [!] nombre (para INPUT) -o, --out-interface [!] nombre (para OUTPUT) Ejemplo: iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT --in-interface ! eth0 -j DROP

Filtrado por protocolo


-p, --protocol [!] protocolo iptables -A INPUT --protocol tcp --jump DROP iptables -A INPUT --protocol udp --jump ACCEPT iptables -A INPUT --protocol icmp --jump EVALUARudp: para filtrar UDP tcp: para filtrar TCP icmp: para filtrar ICMP all: para todos los protocolos

Filtrado por direccin

Direccin de destino: -d, --destination [!] direccin[/mscara] Direccin de origen: -s, --source [!] direccin[/mscara] Ejemplo: iptables -A INPUT --destination 192.168.0.2 -j DROP iptables -A INPUT --d ! 192.168.0.2/16 -j ACCEPT iptables -A INPUT --source 200.48.121.4 -j DROP

Filtrado por puerto

Puerto de destino:

-dport, --destination-port [!] puerto[:puerto] -sport, --source-port [!] puerto[:puerto] iptables -A INPUT --protocol tcp --destinationport 25 -j DROP iptables -A INPUT --protocol udp --source-port ! 80 -j ACCEPT

Puerto de origen:

Ejemplos:

Filtrando por estado de conexin


-m state --state estado Donde estado es: INVALID: direccin desconocida ESTABLISHED: conexin que ha enviado paquetes en ambas direcciones NEW: conexin slo ha enviado paquetes en una direccin RELATED: est iniciando una nueva conexin asociada a otra existente Ejemplo: iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

8. Comandos tiles

iptables-save

Permite guardar las reglas actuales en un archivo de texto con un formato especial. iptables-save > misreglas Permite restaurar reglas que se encuentran en un archivo. iptables-restore < mireglas

iptables-restore

9. Creacin de Scripts para aplicar reglas

La forma de crear reglas es ejecutando el comando iptables seguido de las opciones adecuadas para nuestras necesidades. La mejor manera es crear un script de shell y listar alli todas nuestras reglas de manera que automatizamos el proceso y podemos usarlo en diferentes Pcs. A continuacin les muestro un script de ejemplo para proteger a nuestra propio equipo.

Script de ejemplo para proteger al propio equipo


#!/bin/sh ## Script para proteger la propia mquina ## Gonzalo Alvarez Flores echo "Aplicando Reglas de Firewall... \n" ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F

#borrando todas las reglas (tabla filter por defecto) #borra las cadenas agregadas por el usuario #Reseteando los contadores de paquetes y bytes a cero #borrando todas las reglas de la tabla nat

## Establecemos poltica por defecto (En esta caso Por defecto aceptar) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT

Script de ejemplo para proteger al propio equipo (II)


## Aplicando el filtro # Aceptamos la interfaz lo (Loopback device) iptables -A INPUT -i lo -j ACCEPT # Dejamos pasar todo a nuestra IP iptables -A INPUT -s 192.168.2.12 -j ACCEPT # Abrimos el puerto 7500 para algun fin iptables -A INPUT -s 192.168.2.12 -p tcp --dport 7500 -j ACCEPT # Permitimos el uso de ftp iptables -A INPUT -s 192.168.2.10 -p tcp --dport 20:21 -j ACCEPT # Cerramos el resto de puertos conocidos iptables -A INPUT -p tcp --dport 20:21 -j DROP iptables -A INPUT -p tcp --dport 7500 -j DROP iptables -A INPUT -p tcp --dport 22 -j DROP # Fin

Fin
Ahora solo les queda practicar hasta que logren crear un script con el conjunto de reglas que hagan lo que deseen. Suerte!

You might also like