Iptables like a pr0

Mucho tiempo ha pasado desde los albores del sistema firewall de Linux, los tiempos del comando Ipchains que tenía una funcionalidad bastante básica.

Con el advenimiento de Iptables el filtrado de paquetes en Linux dio un salto cualitativo en cuanto a funcionalidad y actualmente, existen opciones realmente interesantes que merecen la pena explorar. Veamos unas cuantas:

Iptables como IPS

Hace tiempo que los cortafuegos evolucionaron a partir de las típicas reglas IN / OUT / NAT y se convirtieron en ‘IPSs‘ ampliando el formato de las reglas haciendo inspección completa del paquete y pudiendo permitir o denegar tráfico si el payload del paquete cumple una determinada característica, integrando el concepto IDS dentro del cortafuegos.

Iptables soporta filtrado de contenido permitiendo una variedad de reglas al-estilo-Snort. De hecho, existe un proyecto llamado fwsnort que integra todo el juego de reglas Snort dentro de IPtables.

Veamos un ejemplo sencillo de como buscar y detener tráfico sospechoso con Iptables. Buscamos el string “/etc/passwd” en cualquier paquete que vaya dirigido hacia el puerto 80:

# iptables -A INPUT -p tcp –dport 80 -m string –string “/etc/passwd” –algo kmp  -j LOG –log-ip-options –log-tcp-options –log-prefix “passwd access ”

# iptables -A INPUT -p tcp –dport 80 -m string –string “/etc/passwd” –algo kmp -j DROP

De esta forma primero logeamos el paquete y posteriormente lo bloqueamos

Se puede dar el caso que el patrón que buscamos no sea posible representarlo usando ascii, para eso Iptables soporta reglas en formato Hex con el flag –hex-string

Reglas de acceso basadas en tiempo

Muchas veces mas allá del tipo de puertos que permitimos / denegamos basados en protocolos, tenemos la necesidad de aplicar lógica de tiempo a esas reglas. Por ejemplo, permitir acceso a la VPN corporativa en horario laboral parece una buena idea, pero mantener ese acceso durante los fines de semana puede no ser necesario.

Iptables permite crear reglas empleando valores de tiempo, tanto en el campo Hora como en el campo días-de-la-semana.

Veamos un ejemplo:

# iptables -A INPUT -p tcp –dport 22 -m state –state NEW,ESTABLISHED -m time –timestart 09:00 –timestop 18:00 –weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT

# iptables -A INPUT -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j DROP

Con estas dos reglas, primero permitimos el acceso al servidor ssh (puerto 22) desde las 9 de la mañana hasta las 18, los días Lunes, Martes, Miércoles, Jueves y Viernes. La segunda regla bloquea el resto del tiempo el acceso al puerto 22

Conclusión: Iptables siempre gozó de una excelente fama por su rendimiento y fiabilidad como cortafuegos, a esa fama de fiable hay que sumar muy merecidamente la de versátil y moderno ya que en cuanto a funcionalidad, hay pocos sistemas de filtrado comerciales que puedan presumir de mayor funcionalidad

Fuente: SecurityByDefault

Share

This entry was posted in aprendizaje, firewall, hardening, linux, puertos, seguridad, tools. Bookmark the permalink.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

If you agree to these terms, please click here.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.