IPTABLES
Gonzalo Alvarez Flores
Contenido
1. ¿Qué es un firewall?
2. Netfilter: Historia
3. ¿Qué es Iptables?
4. Políticas para implementar un firewall
5. Iptables: Conceptos Básicos
6. Creando Reglas
7. Tipos de Filtrado
8. Comandos útiles
9. Creación 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
tráfico 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
acción llamada Objetivo.
4. Políticas para implementar un
firewall
Hay dos maneras de implementar un
firewall:
Política por defecto ACEPTAR: en principio
todo lo que entra y sale por el firewall se
acepta y solo se denegará lo que se diga
explícitamente.
Política por defecto DENEGAR: todo esta
denegado, y solo se permitirá pasar por el
firewall aquellos que se permita
explícitamente.
5. Iptables: Conceptos Básicos
Regla (Rules):
−
Una cadena de entrada o salida, una cadena de
reenvío (sólo NAT) ó una cadena definida por el
usuario.
Tablas (Tables):
−
Filter: filtrar de paquetes (firewall).
−
Nat: modificar direcciones o puertos de
origen/destino de los paquetes (router).
−
Mangle: modificar paquetes para lograr efectos
especiales.
Cadenas (Chains):
−
INPUT: Todo lo que quiera entrar en nuestra máquina.
−
OUTPUT: Todo lo que quiera salir de nuestra máquina.
−
FORWARD: Todo lo que se quiera redirigir a otra
máquina.
−
PREROUTING: Lo que se hará antes de encaminar el
paquete.
−
POSTROUTING: Lo que se hará inmediatamente
después de encaminar el paquete.
Relación Tabla-Cadena
TABLA
CADENA
FILTER
INPUT
OUPUT
FORDWARD
NAT
PREROUTING
POSROUTING
OUTPUT
MANGLE
PREROUTING
POSTROUTING
INPUT
OUTPUT
FORDWARD
Objetivos (Targets):
−
ACCEPT: El paquete es aceptado y sale de INPUT.
−
DROP: El paquete se descarta sin ningúnproceso posterior.
−
REJECT: Igual que DROP pero se envía 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 numérica.
Especificacion de una Regla:
-j objetivo : Especifica el objetivo de la regla.
-p protocolo : Compara paquetes con el protocolo
especificado.
-s/d direccion IP : Compara la dirección IP de
origen/destino del paquete con la especificada.
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
especificación-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 especificación-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 características, entre los tipos de
filtrado más usados tenemos:
−
−
−
−
−
Filtrado por interfaz
Filtrado por protocolo
Filtrado por dirección
Filtrado por puerto
Filtrado por estado de conexión
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 dirección
Dirección de destino:
− -d, --destination [!] dirección[/máscara]
Dirección de origen:
− -s, --source [!] dirección[/máscara]
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:
−
Puerto de origen:
−
-dport, --destination-port [!] puerto[:puerto]
-sport, --source-port [!] puerto[:puerto]
Ejemplos:
−
−
iptables -A INPUT --protocol tcp --destinationport 25 -j DROP
iptables -A INPUT --protocol udp --source-port !
80 -j ACCEPT
Filtrando por estado de
conexión
-m state --state estado
Donde estado es:
− INVALID: dirección desconocida
− ESTABLISHED: conexión que ha enviado
paquetes en ambas direcciones
− NEW: conexión sólo ha enviado paquetes en
una dirección
− RELATED: está iniciando una nueva conexión
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
iptables-restore
−
−
Permite restaurar reglas que se encuentran en
un archivo.
iptables-restore < mireglas
9. Creación 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 continuación 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 máquina
## 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 política 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!
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )