lunes 21 de septiembre de 2009

¿Qué son y como funcionan las TABLAS?

En iptables existen 3 TABLAS principales: FILTER, NAT y MANGLE.

Las dos primeras son las mas usadas. FILTER te da el filtro, el firewall real, lo que define que trafico se admite y en que sentido.

NAT sirve para manipular paquetes, para alterar las direcciones o puertos que traen en el origen y/o destino, antes y/o despues de que se decidió la ruta que va a seguir.

La MANGLE es la tercera y no se usa cotidianamente. Por eso no explicaremos de ella aca mucho.


El kernel de Linux tiene incorporado la característica interna de filtrar paquetes, permitiendo aceptar algunos de ellos en el sistema mientras que intercepta y para a otros.

El netfilter del kernel tiene tres tablas o listas de reglas incorporadas. Son las siguientes:
filter — La tabla por defecto para el manejo de paquetes de red.
nat — Usada para alterar paquetes que crean una nueva conexión y utilizada para la Traducción de direcciones de red (Network Address Translation, NAT).
mangle — Usada por tipos específicos de alteración de paquetes.

Si no especificas ninguna tabla lo que piensa iptables es que quieres filtrar. Asi de simple.


La primera (filter) es donde se encuentran todas las cadenas que pueden contener reglas que hagan filtrado de paquetes (acepten, rechacen o denieguen paquetes).

La regla es la orden específica que le indica al kernel qué hacer cuando encuentra un paquete con las características que están indicadas en la misma regla. Las reglas están contenidas dentro de cadenas y las cadenas están dentro de las tablas. Sino se entiende todavía, a no desesperar que si seguís leyendo vas a terminar entendiendo. Y si ahun despues de leer todo tampoco, entonces, comentenlo por favor.


Entonces, el funcionamiento es sencillo: entra un paquete por una interfase de red y el kernel empieza a procesarlo, el paquete PASA POR TODAS LAS TABLAS SIEMPRE de iptables (pero no por todas las cadenas, ni mucho menos por cada regla) y es verificado contra cada una de las reglas que va encontrando dentro de las cadenas que tengan sentido. Cuando un paquete cumple con las características que se definieron en una regla, la acción es ejecutada.
Luego, dependiendo el tipo de regla, el paquete es verificado contra las subsiguientes reglas o no (generalmente no se continua con la verificación en las siguientes reglas. ¡Ya para que¡)

El paquete pasara por cada tabla, primero la tabla FILTER, luego, NAT y finalmente por la MANGLE. En cada una pasa por las cadenas que tenga sentido y buscara la regla que coincida. Sino coincide con ninguna se aplicara la decisión por default (decisión estandard) que se definio a la cadena. Y como dijimos pasara el paquete a la siguiente tabla y se aplicara la regla que coincida o la decisión por default (decisión estandard). ¿Sencillo verdad?.


Note que por default se aplica la tabla FILTER, si no se especifica alguna en la parametrizacion de la regla.

Se lo explico de otra manera, primero necesita saber como el firewall (iptables) manejara lo paquetes que "salen", "entran", o "pasan" a travez de la computadora. Basicamente hay tres cadenas para cada una de ellas. Cualquier paquete que entre a su computadora pasara por la cadena INPUT. Cualquier paquete que su computadora saque a hacia la red pasara por la cadena OUTPUT. Cualquier paquete que su computadora la tome de una red y la envia a otra pasara a travez de la cadena FORWARD.

Sin embargo las cadenas son la mitad de lo que hace iptables. ¿Que sera la otra mitad?, Siga leyendo y lo sabra.

Ahora lo que realiza iptables es que definir mediante reglas (leyes de computadora inmutables) en cada cadena lo que se hara con los paquetes que pasen a travez de la computadora.

Por ejemplo, si su computadora (el equipo linux donde esta el firewall - iptables-)envia un paquete a www.suwebmaster.net pidiendo una pagina HTML, este paquete primero pasara a travez de la cadena OUTPUT. El kernel revisara en las reglas de esa cadena para ver si alguna concuerda. En la primera regla que concuerde se decidira que hacer con el paquete finalmente. Puede por ejemplo que haya alguna que deniege poder conectarse con esa pagina.

Si ninguna regla coincide, entonces la politica para toda la cadena se aplicara como la decisión final de que hacer con el paquete. La desicion final, bien podria ser. ACCEPT (que se vaya el paquete), DENY (Que no pase pero que avise), (DROP, que no pase y que no se le avise a nadie).

Luego cuando SuWebmaster responda con la pagina esta pasara a travez de la regla INPUT. Asi de simple. Y nuevamente habran reglas que indiquen que sera hara con la respuesta.

0 comentarios:

Publicar un comentario en la entrada