iptables

Anuncio
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!
Descargar
Colecciones de estudio