Anteriormente explicamos cómo configurar un firewall en sistemas linux con iptables utilizando algunas de las funcionalidades básicas de dicha herramienta. En esta ocasión profundizaremos en otras opciones y usos que posee iptables y cómo puede utilizarse en un entorno corporativo.

Iptables permite definir diferentes reglas de acuerdo a las necesidades de la compañía. Quizá uno de los métodos más comunes utilizados es el redireccionamiento de paquetes a ciertos servidores dentro de la organización. Esto asegura que el tráfico dentro de la organización sea dirigido al servidor o grupo de servidores correspondientes y así poder aplicar los controles necesarios.

A modo de ejemplo, a continuación se define una regla que permite dirigir todo el tráfico entrante HTTPS a un servidor y puerto específico:

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Regla de HTTPS

De esta manera, todos aquellos paquetes que ingresen a través de la interfaz eth0 y tengan como destino el puerto 443 (https) serán aceptados. Si se presta atención, la segunda regla habilita las conexiones salientes para así poder establecer la comunicación completa.

Otro de los casos más allá del propio filtrado de paquetes, son aquellos tipos de reglas en relación al tráfico y cómo se gestiona el mismo. Con iptables también es posible definir reglas de balanceo. En el siguiente ejemplo se define una regla para enviar de forma secuencial cada paquete recibido, a tres servidores diferentes.

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.200:80

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.201:80

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.202:80

Suponiendo que se cuenta con tres servidores replicados en las direcciones 192.168.1.200, 192.168.1.201 y 192.168.1.202 se produce la redirección cada 3 paquetes recibidos a cada uno de los servidores. Esto permite balancear la carga de una forma sencilla a través de la extención Nth.

De la misma manera, uno de los ataques más comunes en la actualidad son los denominados DoS o Denial of Service. Anteriormente brindamos algunos consejos para controlar un ataque de denegación de servicio. En este caso, también puede implementarse algunos controles con iptables. Para ello, solo hace falta limitar la cantidad de conexiones posibles en un rango de tiempo, según su origen.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 200/minute --limit-burst 100 -j ACCEPT

Balanceo de Carga

En este caso, se limitaron las conexiones entrantes al servidor remoto a un máximo de 200 por minuto. Este número debe establecerse de acuerdo a los recursos con los que cuenta el propio servidor. El parámetro --limit-burst permite establecer cuál es el límite de cantidad de paquetes que se reciben antes de que se aplique la media por minuto, siendo en este caso 100 paquetes.

A lo largo de este post, analizamos algunas de las tantas funcionalidades de iptables que pueden utilizarse en un entorno corporativo. Los ejemplos que aquí demostramos son solo unos pocos comparados con las grandes capacidades con las que cuenta iptables.

Las organizaciones deberían comenzar a considerar la seguridad de sus recursos web en este sentido, utilizando herramientas como iptables o similares para minimizar los riesgos asociados a este tipo de tecnologías. Como siempre afirmamos, la seguridad debe ser gestionada como un proceso y formar parte del propio modelo de gestión.