Usando IPTables

Ayudanos, compartiendo en tus redes sociales!

IPTables es una herramienta a través de la cual los administradores crean reglas para cada filtrado de paquetes y módulos de NAT. IPTables es la herramienta estándar de todas las distribuciones modernas de GNU/Linux; y hoy aprenderemos cómo usarlo y cómo viene la mano 😉

Vale aclarar que IPTables es un componente de Netfilter y NO como muchos creen que IPTables = Netfilter, en realidad es “solo” uno de los componentes más populares.

Ok, pero qué es Netfilter?, como bien lo define Wikipedia, es un framework que nos ayuda a interceptar y administrar paquetes de red en nuestro OS; dicho framework se encuentra disponible en el núcleo de Linux.

Genial, a comenzar se ha dicho!, con IPTables puedo definir el destino de un paquete de red; un paquete de red puede ser entrante (INPUT), saliente (OUTPUT) o reenviado (FORWARD); estos “estados” que pueden ser los paquetes de red se conocen como CADENAS.

Ahora, qué destino puedo definir a esas cadenas?, puedo aceptarlas (ACCEPT), descartarlas (DROP), rechazarlas (REJECT), encaminarlas a algún lugar despues de su paso (POSTROUTING), o encaminarlas antes (PREROUTING), etc.

Pero obviamente puedo crear una politica de destino por defecto, para esto la opción -P cambia una política para una cadena. Por ejemplo, si quiero descartar (DROP) todas las conexiones que ingresen (INPUT), todas las conexiones que se reenvíen (FORWARD) y todas las conexiones que salgan (OUTPUT), es decir, se descarta todo el tráfico que entre desde una red pública y el que trate de salir desde la red local, quedaría algo así:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Pero existen muchas reglas que podemos configurar obviamente, los más comunes que suelo usar son:

-A añade una cadena, la opción -i define una interfaz de tráfico entrante.
-o define una interfaz para trafico saliente
-j establece una regla de destino del tráfico, que puede ser ACCEPT, DROP o REJECT.
-m define que se aplica la regla si hay una coincidencia específica
–state define una lista separada por comas de distinto tipos de estados de las conexiones (INVALID, ESTABLISHED, NEW, RELATED).
–to-source define que IP reportar al tráfico externo
-s define trafico de origen
-d define tráfico de destino
–source-port define el puerto desde el que se origina la conexión
–destination-port define el puerto hacia el que se dirige la conexión
-t tabla a utilizar, pueden ser nat, filter, mangle o raw.

Ok, no se asusten, creanme es más sencillo de lo que creen, si se dan cuenta es como estar hablando con el OS; asi que antes de seguir (creo que venimos bien) vamos hacer unos ejemplos comunes como para entender un poco mas, por ejemplo, simulemos algo muy famoso, re-enviar paquetes desde una interfaz de red local (eth1) hacia una interfaz de red pública (eth0):

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

O permitir (ACCEPT) todo el tráfico entrante (INPUT) desde (-s) cualquier dirección (0/0) de la red local (eth1) y desde el retorno del sistema (lo) hacia (-d) cualquier destino (0/0):

iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT
iptables -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT

Ven lo que decía?, que es como estar hablando con el OS!, estoy por seguro que te está gustando!.

Fijate esta, dale que venimos agrandados, simulemos descartar (DROP) todo el tráfico entrante (-i) desde la interfaz eth0 que trate de utilizar la dirección IP pública del servidor (10.10.10.10) alguna dirección IP de la red local (192.168.0.0/24) o la dirección IP del retorno del sistema (127.0.01) importante regla de seguridad 😉 )

iptables -A INPUT -i eth0 -s 10.10.10.10/32 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

Pfff!!, demasiado sencillo no?. Ok, creamos reglas, como elimino?, generalmente se utiliza la misma regla, pero en lugar de utilizar -A (append), se utiliza -D (delete), por ejemplo, eliminemos la regla que descarta (DROP) todo tipo de conexiones de tráfico entrante (INPUT) desde (-s) la dirección IP 10.10.10.10:

iptables -D INPUT -s 10.10.10.10 -j DROP

Ok, creamos y eliminamos reglas, ahora vamos a mostrarlas, con la opcion -n podemos ver las listas de reglas en formato numérico, y -L, para solicitar la lista de éstas cadenas, y si, podes combinarlas:

iptables -nL

Guardamos:

service iptables save

Esto hace que se guarde en /etc/sysconfig/iptables.

Para levantar el servicio

service iptables start

Para hacer que los cambios hechos tras modificar la configuración surtan efecto:

service iptables restart

Y para detener el servicio, claramente:

service iptables stop

Algo que veo que no muchos hacen: añadir a iptables entre los servicios al levantar el sistema en todos los niveles de ejecución, para eso:

chkconfig iptables on

Bueno, como para la primera vez espero que te guste, y que lo practiques principalmente ya que es la clave del manejo de esta herramienta.

Fuente:

Wikipedia: http://es.wikipedia.org/wiki/Iptables
Tips Firewall With IPTables: http://oceanpark.com/notes/firewall_example.html

Si te gustó, no te olvides de ayudar compartiendo en las Redes Sociales!