Alex Sobrino

Blog personal...

Fail2ban

jander | 15 Febrero, 2010 09:50 | del.icio.us meneame.net technorati.com

fail2ban es una herramienta muy útil que básicamente analiza ficheros de log y bloquea el acceso a una IP que realiza varios intentos fallidos de contraseña.

Por ejemplo, si tenemos un servidor con SSH en marcha, y recibimos muchos intentos por parte de una IP, fail2ban bloqueará esa IP durante unos minutos. El fichero de log que monitoriza, el número de intentos fallidos permitidos y la duración del ban es totalmente configurable.

Descarga e instalación

En la web oficial, apartado Downloads, se encuentra el código fuente para compilar. Además, hay paquetes precompilados para la mayoría de las distribuciones.

De hecho en Debian/Ubuntu está incluido en los repositorios oficiales. Para instalarlo bastará con realizar:

aptitude install fail2ban

Siempre se puede optar por instalarlo a partir del fichero .tar.bz2 con los fuentes. Para ello:

tar xvfj fail2ban-X.X.X.tar.bz2
cd fail2ban-X.X.X
python setup.py install

Con ello, nos quedará todo instalado en /usr/share/fail2ban y con los ejecutables en /usr/bin.

Habrá que añadir la ejecución de fail2ban al inicio del sistema. Para ello, nos vienen una serie de scripts por defecto que podemos utilizar. Se encuentran en el directorio de instalación:

cd fail2ban-X.X.X/files
ls

Hay para distintas distribuciones y tan solo debemos copiar la que más nos convenga. En mi caso, una SuSE SLES 9:

cp suse-initd /etc/init.d/fail2ban

Darle los permisos adecuados y añadirlo al arranque:

chmod 755 /etc/init.d/fail2ban
chkconfig fail2ban on

Configuración

La configuración de fail2ban se encuentra dentro del directorio /etc/fail2ban/. Dentro se encuentran los dos ficheros básicos de configuración.

El primero de ellos es /etc/fail2ban/fail2ban.conf en el cual indicaremos parámetros globales de la configuración, como el fichero de log de fail2ban. Por defecto, se trata del /var/log/fail2ban.log.

El segundo fichero de configuración es /etc/fail2ban/jail.conf. En él se definen las reglas de funcionamiento de fail2ban. Se configuran parámetros globales que quieras que sean comunes. Además, hay un áera de configuración para cada uno de los servicios y logs que se quiera monitorizar con fail2ban.

Para activar uno de ellos, debemos poner el enable = true, y configurar el resto de opciones según nuestros requisitos. Siguiendo con el ejemplo de la SuSE SLES 9 anterior... para el SSH tenemos:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=bofh@direcciondedestino.com,
           sender=fail2ban@direcciondeorigen.com]
           logpath  = /var/log/ssh-auth
           maxretry = 5

En él vemos que el fichero de autenticación del SSH es

/var/log/ssh-auth
, que queremos permitir un máximo de 5 intentos fallidos y que nos envie un correo electrónico cada vez que realice una operación. La duración del ban viene determinada por el parámetro global bantime = 600.

Si lo hemos hecho bien, podemos hacer una prueba nosotros mismos, fallando a propósito el login. Deberíamos recibir un correo electrónico similar a este:

Hi,

The IP XXX.XXX.XXX.XXX has just been banned by Fail2Ban after
6 attempts against SSH.


Here are more information about XXX.XXX.XXX.XXX:

blablabla

Regards,

Fail2Ban

Además, podremos ver la entrada correspondiente en el fichero de log, /var/log/fail2ban.log. También veremos una entrada de iptables denegando las conexiones desde la IP XXX.XXX.XXX.XXX. Para comprobarlo, podemos realizar:

iptables -L

Una cosilla más por hacer, es integrar el fichero de log de fail2ban en el logrotate:

/var/log/fail2ban.log {
    weekly
    rotate 7
    missingok
    compress
    postrotate
      /usr/local/bin/fail2ban-client reload 1>/dev/null || true
    endscript
}

Como nota, añadir que existe una alternativa denominada DenyHosts que realiza algo parecido modificando el /etc/hosts.deny. Pero eso ya es para otro día...

Comentarios

 

Doctor Online Here

Doctor Online Here | 05/04/2012, 05:24

This mall is so cool, not cool like interesting cool, i mean like not hot, cool :) Gonna buy more stuff & go home :)

 

Permisos del Log

Jose | 16/09/2014, 17:06

Hola. El log "fail2ban.log" se genera con permisos "rw-r-----" y necesitaría que se generase como "rw-r--r--". ¿Sabes dónde y cómo se debe especificar?

Un saludo,
Jose.

Añadir comentario
Para evitar el spam, no se permite escribir http en los comentarios.
Con soporte para Gravatares
 
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by LifeType - Design by BalearWeb