Professional Documents
Culture Documents
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.
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.
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.
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.
--dport/sport puerto : Compara los paquetes TCP/UDP destinados/provenientes del puerto especificado.
Agregar/Borrar Reglas
Insertar/Reemplazar Reglas
Listar/Borrar/Resetear Reglas
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
-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
-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
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
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:
-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
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.
#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
Fin
Ahora solo les queda practicar hasta que logren crear un script con el conjunto de reglas que hagan lo que deseen. Suerte!