El problema
Hay mucha gente malvada por el mundo adelante. Personas interesadas en hacerse con un ordenador para robar datos o utilizarlo como puente para alguna “fechoría”. Si tenemos funcionando un servidor ssh o web (Apache) es probable que hayamos notado intentos de acceso indiscriminados.
Mucha gente usa ciertos programas que por fuerza bruta o mediante ataques por diccionario (esto es, probar toda una serie de palabras de una lista para encontrar la contraseña) que de forma automatizada tratan de conseguir acceso a un determinado equipo. Si tenemos una buena contraseña, es bastante complicado que consigan averiguarla, pero lo mejor es “bannear” a aquellas IPs que están intentando entrar, de tal forma que no podrán seguir intentándolo, les denegamos el acceso.
La solución
Para bloquear el acceso de una determinada IP a nuestro equipo podemos configurar el cortafuegos (firewall) que traen todos los sistemas Linux: iptables. Pero esto, la verdad, es bastante tedioso y requiere de paciencia y ganas para llegar a hacer algo productivo con él. ¿Qué tal si alguien lo hace por nosotros? Aquí entra en escena fail2ban. Es un programita que se ejecuta siempre al iniciar el ordenador y está funcionando en segundo plano, monitoreando los accesos a nuestra máquina. Realmente, no hace nada “mágico”, sino que examina el contenido de los ficheros /var/log/auth.log y /var/log/apache/error_log en busca de intentos fallidos de acceso a nuestra máquina.
/var/log/auth.log Contiene los intentos de acceso a nuestra máquina vía SSH
/var/log/apache2/error.log Contiene los intentos de acceso a nuestra máquina a través del servidor web, en este caso, Apache (en su segunda versión).
Instalación
Si vamos a su web oficial vemos que existen paquetes para varias distribuciones. Así que sólo tenéis que bajar la versión correspondiente o si tenéis Debian o algún derivado, podréis instalarlo con un sencillo:
# apt-get install fail2ban
Configuración
fail2ban se puede configurar no sólo para controlar los intentos de acceso a través de SSH o de servidor web, sino de otros programas como algún servidor ftp (como el vsftpd). ¿Cómo se configura fail2ban? Editando el fichero /etc/fail2ban.conf a nuestro gusto.
Como en este post hablamos de bloquear las IPs reincidentes que intentan entrar vía SSH, configuraremos fail2ban para que bannee estas IPs. Abrimos el fichero de configuración y buscamos la parte de SSH y colocamos las cosas tal que así:
[SSH] # Option: enabled # Notes.: enable monitoring for this section. # Values: [true | false] Default: true # enabled = true # Option: logfile # Notes.: logfile to monitor. # Values: FILE Default: /var/log/auth.log # logfile = /var/log/auth.log # Option: port # Notes.: specifies port to monitor # Values: [ NUM | STRING ] Default: # port = ssh
Con lo de arriba, hemos indicado que fail2ban controle los accesos por SSH (enabled = true), mirando los accesos fallidos que se producen almacenados en /var/log/auth.log (logfile) y puerto ssh (que por defecto es el 22). Y para el resto de servicios se haría igual: activarlos o desactivarlos, indicarles el fichero de registros y el puerto que usa ese servicio.
Otra parte importante del fichero de configuración es el número máximo de intentos fallidos que permitimos y el tiempo que queremos que esté banneada una IP:
# Option: maxfailures # Notes.: number of failures before IP gets banned. # Values: NUM Default: 5 # maxfailures = 3 # Option: bantime # Notes.: number of seconds an IP will be banned. If set to a negative # value, IP will never be unbanned (permanent banning). # Values: NUM Default: 600 # bantime = 60000
Como podéis ver el tiempo de banneo se da en segundos.
Y nada, una vez editado este fichero a vuestro gusto, lo guardáis y reiniciáis fail2ban (como superusuario):
# sudo /etc/init.d/fail2ban restart
Y listo :-)
Enlaces relacionados
- Web oficial de fail2ban.
- Un Cí“MO un poco más avanzado
- Configuración de fail2ban para FTP usando vsftpd (en los foros de esDebian)

TempWin -

31/01/2007
(Sesion + covers + tracklist)