Protegerse de ataques de fuerza bruta con Fail2ban

Información válida para: servidores raíz (root server) con sistema operativo Linux

Fail2ban es un programa para Linux que detecta y bloquea los ataques de fuerza bruta.

Fail2ban supervisa las entradas en los archivos de registro de los distintos servicios (por ejemplo, SSH o FTP). Demasiados intentos fallidos hacen que la dirección IP atacante se bloquee durante un cierto período de tiempo para que no se establezcan más conexiones.

Requisito

Para poder usar Fail2ban, se necesita un servidor root con sistema operativo Linux (Servidor Cloud, Servidor Dedicado o Servidor Virtual). A tener en cuenta: para los servidores con Plesk, las aplicaciones como Fail2ban deben instalarse y gestionarse siempre a través del interfaz de Plesk.

Instalar Fail2ban

Ubuntu 16.04

Actualizar las listas de paquetes:

sudo apt update

Instalar Fail2ban:

sudo apt install fail2ban

Iniciar Fail2ban:

sudo systemctl start fail2ban

Iniciar Fail2ban automáticamente al iniciar el sistema:

sudo systemctl enable fail2ban
CentOS 7

Actualizar las listas de paquetes:

sudo yum update

Instalar el EPEL Repository:

sudo yum install epel-release

Instalar Fail2ban:

sudo yum install fail2ban

Iniciar Fail2ban:

sudo systemctl start fail2ban

Iniciar Fail2ban automáticamente al iniciar el sistema:

sudo systemctl enable fail2ban

Configurar Fail2ban

Los archivos de configuración de Fail2ban se almacenan en el directorio /etc/fail2ban. En este directorio, el archivo jail.conf contiene la configuración predeterminada.

Si desea utilizar Fail2ban con parámetros que difieren de la configuración por defecto, puede crear el archivo /etc/fail2ban/jail.local para este propósito e introducir allí los parámetros deseados. Éstos sobrescriben los valores respectivos de jail.conf.

A tener en cuenta: evite cambiar la configuración del archivo jail.conf, ya que esto puede causar problemas con futuras actualizaciones de Fail2ban. Introduzca los cambios en el archivo jail.local tal y como se describe aquí.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

A continuación, puede abrir el archivo jail.local para editarlo:

sudo nano /etc/fail2ban/jail.local

Para evitar confusiones en el futuro, puede eliminar el primer bloque de texto que le advierte que no edite el archivo jail.conf:

# WARNING: heavily refactored in 0.9.0 release.  Please review and
#          customize settings for your setup.
#
# Changes:  in most of the cases you should not modify this
#           file, but provide customizations in jail.local file,
#           or separate .conf files under jail.d/ directory, e.g.:
#
# HOW TO ACTIVATE JAILS:
#
# YOU SHOULD NOT MODIFY THIS FILE.
#
# It will probably be overwritten or improved in a distribution update.
#
# Provide customizations in a jail.local file or a jail.d/customisation.local.
# For example to change the default bantime for all jails and to enable the
# ssh-iptables jail the following (uncommented) would appear in the .local file.
# See man 5 jail.conf for details.
#
Aumentar el tiempo que se banea una dirección IP atacante (ban time)

Es recomendado aumentar la configuración del "ban time", es decir del tiempo de bloqueo de una dirección IP atacante, que por defecto es de sólo 10 minutos (600 segundos).

Para aumentar el tiempo de bloqueo, localice la sección que dice:

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

Reemplace 600 por el número deseado de segundos. Por ejemplo, para bloquear hosts durante dos horas, cambie este bloque de comandos de la siguiente manera:

# "bantime" is the number of seconds that a host is banned.
bantime  = 7200

Guarde el archivo y reinicie Fail2ban para que los cambios surtan efecto:

sudo systemctl restart fail2ban

Registro fail2ban.log

Todas las acciones y medidas realizadas por Fail2ban se registran en el archivo /var/log/fail2ban.log.

sudo less /var/log/fail2ban.log