Cortafuegos e iptables
Un cortafuegos es un conjunto de reglas de filtrado de paquetes que regulan y controlan el tráfico entre dos redes (o el tráfico individual de un equipo). Este conjunto de reglas se pueden establecer en un hadware específico o bien establecerlo en un ordenador, con linux en nuestro caso.Iptables es la utilidad que vamos a utilizar para crear e insertar en el núcleo las distintas reglas de filtrado que vamos a establecer sobre los paquetes.
Tipos de filtros de paquetes
Podemos distinguir varios tipos de paquetes IP en la máquina cortafuegos:Paquetes con origen remoto y destino remoto: son los paquetes, que actuando como gateway, nuestra máquina tiene que reenviar. Estos paquetes se analizan mediante el filtro de reenvío, llamado FORWARD. Para que una máquina pueda reenviar paquetes tenemos que activar esta caractaarística mediante
echo 1 > /proc/sys/net/ipv4/ip_forward
Paquetes con origen remoto y destino local: son los paquetes que las máquinas de cualquier red envían a nuestra máquina. Estos paquetes se analizan mediante el filtro de entrada, llamado INPUT.
Paquetes con origen local y destino remoto: son los paquetes que nuestra máquina envía a otras computadoras. Estos paquetes se analizan mediante el filtro de salida, llamado OUTPUT.
Generalizando un poco los tipod de filtos pueden ser:
MANGLE: reglas de manipulación de paquetes.
NAT: reglas PREROUTING, POSTROUTING de traducción de direcciones. (NAT network address translation).
FILTER: reglas INPUT, OUTPUT, FORWARD de filtrado de paquetes que ya habíamos descrito.
Cadenas
Vamos a denominar cadena al conjunto de reglas asociados con un determinado tipo de filtro. Iptables también dispone de la posiblidad de que un usuario pueda definir sus propias cadenas y asignarle un nombre. Los nombres de cadenas predefinidos son INPUT, OUTPUT y FORWARD.Acciones sobe un paquete
Como vimos anteriormente, las decisiones que puede tomar un cada regla de un filtro de paquetes pueden ser, dejar pasar el paquete (ACCEPT), responderle al emisor educadamente que ese paquete no puede pasar (REJECT) o bien simplemente descartarlo como si no hubiera llegado (DROP o DENY).Observamos que la diferencia entre REJECT y DROP consiste en que mediante REJECT se le contesta que el servicio no está disponible (icmp destination port unrechable) evitando así demoras en la conexión y mediante DROP no se le contesta nada por lo cual el sistema remoto no corta la conexión hasta que ha transcurrido el tiempo de espera de la contestación con la consiguiente ralentización. Para la red local es aconsejable usar REJECT aunque cada administrador tiene que estudiar su situación.
Por los mismos motivos tenemos que tener cuidado con el protocolo ICMP.
También tenemos la acción LOG que origina un registro de los paquetes que verifican la regla.
En un paso un poco más complicado, también se podría manipular el paquete y cambiarle ciertas características a nuestra conveniencia.
Estas opciones se la vamos a especificar a iptables con la opción "-j".
No hay comentarios:
Publicar un comentario