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