jueves, 3 de enero de 2013

IPTables/Netfilter Recent Module



Es un sistema avanzado de comparación de paquetes basado en múltiples tablas de eventos pasados. Se pueden denir diferentes reglas que se basen en coincidencias previas, para decidir la acción actual.

Lo que esto me permite hacer es, básicamente, crear un fichero  temporal para cuando la gente trata de realizar un ‘PortScan’ sobre una red poder bloquear todo el trafico que generen durante un determinado tiempo.

Hay que tener en cuenta que este modulo se creo con http server en mente aunque trabaja con todo tipo de conexiones TCP.

Un ejemplo de esto sería:

iptables -A FORWARD -m recent --rcheck --seconds 60 -j DROP
iptables -A FORWARD -i eth0 -d 127.0.0.0/8 -m recent --set -j DROP

Todos aquellos que intenten enviar datos al rango  ip 127.0.0.0/8 desde la interface eth0 serán bloqueados durante un periodo de 60 segundos.

¿Como trabaja?
Un paquete destinado al rango 127.0.0.0/8 pasaría a través de la primera regla y sería capturado por la segunda regla la cual metería la ip origen en una lista `recent` para, posteriormente, descartarlo silenciosamente (DROP), el resto de paquetes durante los próximos 60 segundos serán descartados.

Algunas de las opciones para configurar las diferentes opciones son:

--name : Nombre de la lista recent que vamos a usar.

--set: Esto añade la ip origen del paquete a la lista.

--rcheck: Revisa si la dirección de origen del packete está en la lista o no.

--update: Como rcheck pero

--remove: Esto revisa si la ip de origen del paquete está en la lista, si es así la eliminará.

--hitcount: Es el número de ocurrencias que debe haber de este tipo de paquetes, para aplicar el target de la regla.

--seconds: Establece el intervalo de tiempo en segundos.

El listado recent se localiza en `/proc/net/ipt_recent/`. Esto te permite, por ejemplo, añadir las IP’s que desees de forma manual en dicho fichero.

Por defecto el modulo solo recuerda 100 ip’s atacantes aunque este comportamiento se puede modificar, en este caso lo vamos a aumentar a 1000:

modprobe ipt_recent ip_list_tot=1000

¿Que es capaz de evitar?

Por ejmplo un Null Scan, 

Via NMAP podemos :

nmap -sN 192.168.0.2  (siendo 192.168.0.2 la ip del PC de la victima)

Este tipo de escaner consiste en escanear puertos TCP sin "flags", algunos firewall no protegen contra este tipo de paquetes.

Pues bien, para detectar este tipo de escaneo y proteger nuestra red de ello:


  1. # Log attack
  2. iptables -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> Null scan "
  3. # Drop and blacklist for 60 seconds IP of attacker
  4. iptables -A INPUT -p tcp --tcp-flags ALL NONE  -m recent --name blacklist_60 --set -m comment --comment "Drop/Blacklist Null scan" -j DROP

No hay comentarios:

Publicar un comentario