sábado, 28 de noviembre de 2009

Fail2Ban

Como trabajo de la materia Linux, elegimos el estudio y configuración de algún software de la vuelta. Además si éste no tenía artículo en Wikipedia español debíamos hacerlo. Así fue como dimos con fail2ban, un framework escrito en Python, que básicamente se encarga de escanear logs. El usuario puede especificarle expresiones regulares, y cuando el programa encuentra dichas expresiones regulares en los logs, toma una determinada acción. La acción puede tratarse de "bloquear" una IP, un puerto, un protocolo, etc. Puede ser extremadamente útil para evitar ataques de fuerza bruta por ejemplo. En el proyecto puntualmente levantamos un servidor web (lighttpd) y cuando un usuario se logueaba mal mas de 2 veces, bloqueaba la IP desde la cuál se estaba tratando de loguear por 60 segundos.
Es todo ajustable, de manera que si queremos bloquear una IP por más tiempo, basta con cambiar 60 por la cantidad de segundos que querramos y listo!

INSTALACIÓN
Simplemente sudo apt-get install fail2ban
(Conviene tener instalado Python 2.5 previamente, sino sudo apt-get install python2.5)

CONFIGURACIÓN

Para la configuración se tienen básicamente 2 archivos importantes.
/etc/fail2ban/jail.conf
/etc/fail2ban/filter.d/archivoConReglas.conf

El primer archivo es el que contiene todas las configuraciones referentes al bloqueo que se desea realizar. Se indica que puertos se han de bloquear, el archivo conteniendo las expresiones regulares que se desean buscar, el nombre del log que se desean encajar las expresiones regulares, el tiempo de bloqueo, etc.




port = puertos que bloqueara o aplicará la penalización
protocol = protocolos que bloqueara o aplicará la penalización
filter = indica el nombre del archivo que contendrá las expresiones regulares
logpath = path al archivo de log que se quiere escanear
maxretries = máxima cantidad de reintentos de fallo
También existen otros parámetros como bantime que especifica la cantidad de tiempo en segundos que se deseará bloquear la pc atacante.

El segundo es un archivo que se crea con las expresiones regulares a buscar. En nuestro caso buscaríamos expresiones que fueran del tipo:
(http_auth.c.872).*: (Donde es un alias que contiene IP, protocolo, puerto, etc). El http_auth.c.872 es el código de error para simbolizar que hubo un intento fallido de logueo.

Es un software sumamente interesante, que acepta trabajar con la mayoría de los servidores o programas importantes (Apache,QMail, Lighttpd, SSH, entre otros).
Invito a probarlo, puede llegar a ser de gran utilidad.
Saludos!

No hay comentarios:

Publicar un comentario