IPTABLES HOWTO: Guia y documentación iptables para Sysadmins

      
in Documentacion, firewall, iptables, Linux
IPTABLES HOWTO: Guia 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 -L
Visualizar todas las reglas de la tabla NAT
iptables -t nat -L
Visualizar todas las reglas de la cadena INPUT
iptables -L INPUT
-F --flush
Eliminar todas las reglas de una cadena (CHAIN)

Código:
Eliminar todas las reglas de la cadena INPUT
iptables -F INPUT
Eliminar todas las reglas
iptables -F
-N --new-chain
Permite crear una nueva cadena (CHAIN)

Código:
Crea una nueva cadena LOG_DROP
iptables -N LOG_DROP
-X --delete-chain
Permite eliminar una cadena

Código:
Eliminar la cadena LOG_DROP
iptables -X LOG_DROP
Eliminar todas las cadenas
iptables -X
-P --policy
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

Copyright © 1996-2017 Seavtec, S.L. Reservados todos los derechos.