93 176 00 43 info@nullseavtec.com
IPTABLES HOWTO: Guia y documentación iptables para Sysadmins
VERSION ANALIZADA: iptables 1.4.7-1.4.12 (iptables -V)
Iptables es un software para Linux, que pertenece al proyecto Netfilter, que permite a administradores de sistemas, configurar un conjunto de reglas y cadenas, y almacenarlas en tablas que proporciona el kernel de Linux
Diferentes módulos del kernel y software, permiten crear y aplicar reglas.
iptables - IPv4
ip6tables - IPv6
arptables - ARP
ebtables - Ethernet frames
Para poder trabajar con iptables, necesitamos privilegios de root.
En muchos sistemas, por defecto, se encuentra en /sbin/iptables o /usr/sbin/iptables
Iptables permite crear reglas de filtrado, o reglas de traducción de IPs (NAT - Network Address Translation). Es un software que permite construir firewalls o gateways muy robustos y seguros. Iptables está disponible en http://www.netfilter.org/ o se puede instalar con el gestor de paquetes de tu distribución. Está disponible por defecto en muchas de las distribuciones Linux actuales, como Debian, Ubuntu, CentOS, RHEL, Fedora, SUSE
Reglas, Cadenas y Tablas (Rules, Chains, and Tables)
Las Rules (reglas) en iptables están agrupadas en Chains (cadenas). Una Chain (cadena) es un conjunto de reglas utilizadas para determinar que hacer con los paquetes que entran, salen o traspasan nuestro firewall/gateway. Estas Chains (cadenas) se agrupan en tablas (Tables)
Iptables tiene 5 tablas por defecto (filter, NAT, mangle, raw o security), se pueden crear nuevas tablas a través de extensiones de iptables
Filter table (Tabla Filter)
La tabla filter es usada para permitir o bloquear tráfico, y contiene 3 Chains (cadenas) - INPUT, OUTPUT, FORWARD
La Chain INPUT se utiliza para filtrar paquetes que tienen como destino la máquina local.
La Chain OUTPUT se utiliza para filtrar paquetes creados en la máquina local y con destino una máquina remota.
La Chain FORWARD se utiliza para los paquetes que pasan el sistema, principalmente utilizado en Routers o Gateways
NAT Table (Tabla de NAT)
La tabla de NAT es utilizada para crear reglas de traducción de direcciones, y permitir que un paquete con ip privada, pueda salir a Internet con una IP pública, o que un paquete pueda alcanzar un puerto de una IP privada.
Hay tres Chains (cadenas) PREROUTING, POSTROUTING, OUTPUT
La Chain PREROUTING es donde llegan los paquetes antes de procesarse por la tabla de rutas local
La Chain POSTROUTING es donde llegan los paquetes una vez han sido procesados por la tabla de rutas local
La forma general de una regla de iptables es:
iptables -A CHAIN -p tcp [options] -j ACTION
CHAIN: Es la cadena comentada anteriormente, en el caso de la tabla filter sería: INPUT, OUTPUT o FORWARD
-A INPUT : quiere decir añadir la regla a la cadena INPUT
La parte "-p tcp" quiere decir que la regla aplica a conexiones TCP, no UDP. (Es posible especificar reglas para UDP "-p udp")
"[options]" es donde es posible especificar que debe cumplir la regla
"-j ACTION" se utiliza para especificar que hacer con los paquetes que cumplen la regla. Normalmente se elimina el paquete "-j DROP", o se acepta "-j ACCEPT" o se guarda una entrada en los logs "-j LOG"
Principales comandos:
-A --append:
Añade la regla a la cadena especificada
iptables -A INPUT ...
-D --delete:
Elimina una regla
Hay 2 formas de utilizarla, especificando el número de la regla, o la regla en si que coincida
iptables -D INPUT 1
iptables -D INPUT -dport 80 -j DROP
-R --replace:
Permite modificar una regla concreta
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
-i --insert:
Permite insertar una regla es una posición determinada
iptables -I INPUT 1 --dport 80 -j ACCEPT
-L --list
Listar las reglas
Código:
Visualizar todas las reglas, por defecto, de la tabla filter
iptables -LVisualizar todas las reglas de la tabla NAT
iptables -t nat -LVisualizar todas las reglas de la cadena INPUT
-F --flush
iptables -L INPUT
Eliminar todas las reglas de una cadena (CHAIN)
Código:
Eliminar todas las reglas de la cadena INPUT
iptables -F INPUTEliminar todas las reglas
-N --new-chain
iptables -F
Permite crear una nueva cadena (CHAIN)
Código:
-X --delete-chain
Crea una nueva cadena LOG_DROP
iptables -N LOG_DROP
Permite eliminar una cadena
Código:
-P --policy
Eliminar la cadena LOG_DROP
iptables -X LOG_DROP
Eliminar todas las cadenas
iptables -X
Permite especificar la política por defecto de una cadena (CHAIN), ACCEPT, REJECT o DROP
Código:
iptables -P INPUT DROP
Opciones comunes y modificadores:
-A -- Añade una regla al final de la cadena (CHAIN)
-I -- Inserta una regla en una posición específica. Si no se especifica posición, la regla se inserta en la primera posición de la cadena (CHAIN).
-p -- protocolo de la regla
--dport Puerto de destino para comprobar en la regla
-i -- Interfaz de red donde se recibe el paquete
-j -- Qué hacer cuando la regla se cumple
-s -- IP origen del paquete
-d -- IP destino del paquete
Si quieres tener ejemplos de reglas en IPTABLES, puedes ver este POST:
IPTABLES HOWTO: Ejemplos de iptables para Sysadmins
REFERENCIAS:
http://en.wikipedia.org/wiki/Iptables
http://www.netfilter.org/
http://ipset.netfilter.org/iptables.man.html
|