Log2ban es una herramienta que
permite la detección y bloqueo de IPs que participan en DDOS o un ataque
de fuerza bruta contra un servidor Web. Este tipo de ataques se
caracteriza por un alto número de peticiones similares a un servidor
Web, por parte de un subconjunto relativamente pequeño de IPs en un
corto período de tiempo.
Su modo de funcionamiento se basa en que, cada petición al
servidor está
marcado con un identificador creado a partir de las propiedades de la
solicitud. Cuando el número de visitas identificadas llega al margen de
tolerancia dentro de una ventana de detección, la IP del cliente se
envía como un argumento para el comando externo (BAN_IP_COMMAND) y se
recoge en la lista de bloqueo.
Log2ban se limita a operar en el tiempo real, contra el registro de
acceso del
servidor Web. No está destinado a ser utilizado como
analizador de registros históricos. Debe ser utilizado junto con un
firewall (el firewall iptables combinado con ipset) para prohibir
realmente el acceso a los atacantes.
El script lee registro de acceso en el tiempo real, usando 'tail -n 1
-f', tal como se especifica en la configuración. Si el comando envía
EOF, log2ban terminará. Si el comando dejar de escribir registros a la
salida estándar(stdout), log2ban colgará.
Log2ban es lo suficientemente rápido por sí mismo, pero para un número
muy elevado de peticiones, el uso de la CPU puede convertirse en un
problema de disponibilidad del servidor Web. Para
evitar esto se puede
deshabilitar el registro de las solicitudes a los recursos estáticos
como: imágenes, scripts o hojas de estilo. Además la optimización puede
incluir el uso de formato de registro de acceso más simple(csv), en
lugar de, utilizar la opción por defecto.
La política de detección de log2ban puede ser optimizada. El parámetro
más importante es “TOLERANCE_MARGIN” que representa el margen tolerable
de conexiones hacia el
servidor Web. Tambien existen otros parámetros
más importantes son “WINDOW_SIZE” y “SLOT_INTERVAL”. Cuanto más corto es
el intervalo y el aumento de tamaño significa, una mejor detección y
peor rendimiento debido al consumo de recursos. Para cambiar la política
de asignación de ID, se debe modificar la función
"create_server_hit_id". Log2ban soporta el registro de acceso por
defecto de Apache/nginx. Las modificaciones introducidas en el formato
por defecto deben reflejarse en la variable “ACCESS_LOG_RECORD_FORMAT”.
Para saltar lo criterios de registro, la función de modificar "skip".
Actualmente, las solicitudes a varios tipos de archivos estáticos se
omiten en la tramitación.
Más información y descarga de log2ban:
https://github.com/unicodefreak/log2ban
Otros post publicados en este blog relacionados con DDOS:
Herramienta para probar la vulnerabilidad de un servidor ante un ataque DOS:
http://www.gurudelainformatica.es/2014/05/herramienta-para-probar-la.html
Reducir impacto ataques HTTP Flood/DoS en aplicaciones Web:
http://www.gurudelainformatica.es/2014/01/reducir-impacto-ataques-http-flooddos.html
Proteger servidor Linux contra ataques de fuerza bruta y denegación de servicios:
http://www.gurudelainformatica.es/2010/01/proteger-servidor-linux-contra-ataques.html
Auditar el impacto de ataques de denegación de servicios y fuerza bruta:
http://www.gurudelainformatica.es/2009/02/auditar-el-impacto-de-ataques-de.html