lunes, 3 de marzo de 2008

IPTABLES

Iptables : Es una aplicación en linea de comandos que gestiona el filtrado de paquetes en sistemas Linux (kernels 2.4.x), en base a las reglas que hayamos definido. Iptables es mucho más potente que su antecesor Ipchains (kernels 2.2.x).

La estructura de Iptables es básicamente una cola : cuando un paquete llega, este es validado contra cada una de las reglas del firewall, en el momento que alguna regla casa (match) , se ejecuta la acción que haya sido definida en la regla (descartar el paquete, acceptarlo, enrutarlo, etc).

La estructura de un comando iptables es la siguiente :

iptables -t [tabla] -[AIRDLFZNXP] [regla] [criterio] -j [acción]

Vamos a ver que es cada cosa :

-t [tabla] : Esta parte del comando especifica cual es la tabla en la que queremos añadir la regla. Existen 3 tipos de tablas válidas : nat, filter y mangle, siendo filter la tabla por defecto si se omite esta parte del comando. Nat se refiere a las conexiones que serán modificadas por el firewall, como por ejemplo, enmascarar conexiones, realizar redirecciones de puertos, etc. Filter es la tabla donde se añaden las relacionadas con el filtrado. Mangle tambien modifica paquetes pero, a diferencia de Nat, es mucho mas potente. Con Mangle podemos modificar cualquier aspecto del paquete (flags, TTL, etc).

-[AIRDLFZNXP] [regla] : Hay 4 opciones básicas con las que se puede jugar en esta apartado del comando. Estas opciones básicas son las siguientes :

· A : Es para añadir (Append) una regla. Reglas válidas son INPUT, FORWARD y OUTPUT.

· L : Es para listar las reglas.

· F : Es para borrar todas las reglas o en el caso de INPUT, FORWARD o OUTPUT seán dados como argumento se borraran las reglas asociadas solo a esa clase.

· P : Establece la politica por defecto del firewall. Por defecto es aceptar todas las conexiones.

[criterio] : Aqui es donde se especificarán las características del tipo de paquete que casará con esta regla. Para establecer reglas sencillas (reglas stateless), podemos operar con las siguientes opciones : -s (ip/red fuente), -d (ip/red destino), --sport (puerto fuente), --dport (puerto destino), y -p (protocolo). Un ejemplo de comando de la sintaxis de un ocmando iptables sencillo podría ser este (la parte en que se define el criterio de la regla está en negrita) :

iptables -A FORWARD -p [protocolo] -s [ip/red fuente] --sport [puerto fuente] -d [ip/red destino] --dport [puerto destino] -j DROP

-j [action] : Aqui establecemos que es lo que hay que hacer con el paquete. Las posibles opciones son : ACCEPT, REJECT, DROP, REDIRECT, LOG (existén más, pero estas son las básicas).

ACCEPT : Aceptará el paquete.

REJECT o DROP : Lo desecharán, la direncia entre ellos reside en que DROP descartará el paquete silenciosamente y REJECT emitirá un paquete ICMP Port Unreachable, indicando que está cerrado.

REDIRECT : Redirigirá el paquete a donde se indique en el criterio del comando y por último...

LOG : Lo logeará para su posterior análisis