Todos los servidores que están expuestos a Internet corren el riesgo de sufrir ataques de malware. Por ejemplo, si tiene un software conectado a una red pública, los atacantes pueden usar intentos de fuerza bruta para obtener acceso a la aplicación.

Fail2ban es una herramienta de código abierto que ayuda a proteger su máquina Linux de la fuerza bruta y otros ataques automatizados al monitorear los registros de servicios en busca de actividad maliciosa. Utiliza expresiones regulares para escanear archivos de registro. Todas las entradas que coinciden con los patrones se cuentan y, cuando su número alcanza un cierto umbral predefinido, Fail2ban prohíbe la IP infractora durante un período de tiempo específico. El cortafuegos del sistema predeterminado se utiliza como acción de prohibición. Cuando expira el período de prohibición, la dirección IP se elimina de la lista de prohibición.

Este artículo explica cómo instalar y configurar Fail2ban en CentOS 8.

Instalación de Fail2ban en CentOS

El paquete Fail2ban está incluido en los repositorios predeterminados de CentOS 8. Para instalarlo, ingrese el siguiente comando como root o usuario con privilegios sudo :

sudo dnf install fail2ban

Una vez completada la instalación, habilite e inicie el servicio Fail2ban:

sudo systemctl enable --now fail2ban

Para verificar si el servidor Fail2ban se está ejecutando, escriba:

sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...

Eso es. En este punto, tiene Fail2Ban ejecutándose en su servidor CentOS.

Configuración de Fail2ban

La instalación predeterminada de Fail2ban viene con dos archivos de configuración /etc/fail2ban/jail.conf/etc/fail2ban/jail.d/00-firewalld.confEstos archivos no deben modificarse, ya que pueden sobrescribirse cuando se actualiza el paquete.

Fail2ban lee los archivos de configuración en el siguiente orden:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Cada .localarchivo anula la configuración del .confarchivo.

La forma más fácil de configurar Fail2ban es copiar jail.confjail.localmodificar el .localarchivo. Los usuarios más avanzados pueden crear un .localarchivo de configuración desde cero. El .localarchivo no tiene que incluir todas las configuraciones del .confarchivo correspondiente, solo aquellas que desea anular.

Cree un .localarchivo de configuración a partir del jail.confarchivo predeterminado:

sudo cp /etc/fail2ban/jail.{conf,local}

Para empezar a configurar el servidor Fail2ban abre el jail.localarchivo con tu editor de texto :

sudo nano /etc/fail2ban/jail.local

El archivo incluye comentarios que describen lo que hace cada opción de configuración. En este ejemplo, cambiaremos la configuración básica.

Lista blanca de direcciones IP

Las direcciones IP, los rangos de IP o los hosts que desea excluir de la prohibición se pueden agregar a la ignoreipdirectiva. Aquí debe agregar la dirección IP de su PC local y todas las demás máquinas que desea incluir en la lista blanca.

Descomente la línea que comienza con ignoreipy agregue sus direcciones IP separadas por espacios:

/etc/fail2ban/jail.local
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24

Configuración de prohibición

Los valores de bantimefindtimemaxretryopciones definen el tiempo de prohibición y las condiciones de prohibición.

bantimees la duración durante la cual la IP está prohibida. Cuando no se especifica ningún sufijo, el valor predeterminado es segundos. De forma predeterminada, el bantimevalor se establece en 10 minutos. En general, la mayoría de los usuarios querrán establecer un tiempo de prohibición más largo. Cambia el valor a tu gusto:

/etc/fail2ban/jail.local
bantime  = 1d

Para prohibir permanentemente la IP, use un número negativo.

findtimees la duración entre el número de fallas antes de que se establezca una prohibición. Por ejemplo, si Fail2ban está configurado para prohibir una IP después de cinco fallas ( maxretry, vea a continuación), esas fallas deben ocurrir dentro de la findtimeduración.

/etc/fail2ban/jail.local
findtime  = 10m

maxretryes el número de fallos antes de que se prohíba una IP. El valor predeterminado se establece en cinco, lo que debería estar bien para la mayoría de los usuarios.

/etc/fail2ban/jail.local
maxretry = 5

Notificaciónes de Correo Electrónico

Fail2ban puede enviar alertas por correo electrónico cuando una IP ha sido prohibida. Para recibir mensajes de correo electrónico, debe tener un SMTP instalado en su servidor y cambiar la acción predeterminada, que solo prohíbe la IP a %(action_mw)s, como se muestra a continuación:

/etc/fail2ban/jail.local
action = %(action_mw)s

%(action_mw)sprohibirá la IP infractora y enviará un correo electrónico con un informe whois. Si desea incluir los registros relevantes en el correo electrónico, establezca la acción en %(action_mwl)s.

También puede ajustar las direcciones de correo electrónico de envío y recepción:

/etc/fail2ban/jail.local
destemail = admin@linuxize.com

sender = root@linuxize.com

Cárceles Fail2ban

Fail2ban utiliza un concepto de cárceles. Una cárcel describe un servicio e incluye filtros y acciones. Se cuentan las entradas de registro que coinciden con el patrón de búsqueda y, cuando se cumple una condición predefinida, se ejecutan las acciones correspondientes.

Fail2ban se envía con un número de cárcel para diferentes servicios. También puede crear sus propias configuraciones de cárcel.

De forma predeterminada, en CentOS 8, no hay cárceles habilitadas. Para habilitar una cárcel, debe agregar enabled = truedespués del título de la cárcel. El siguiente ejemplo muestra cómo habilitar la sshdcárcel:

/etc/fail2ban/jail.local
[sshd]
enabled   = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Las configuraciones que discutimos en la sección anterior, se pueden establecer por cárcel. Aquí hay un ejemplo:

/etc/fail2ban/jail.local

Los filtros están ubicados en el /etc/fail2ban/filter.ddirectorio, almacenados en un archivo con el mismo nombre que la cárcel. Si tiene una configuración personalizada y experiencia con expresiones regulares, puede ajustar los filtros.

Cada vez que se modifica el archivo de configuración, se debe reiniciar el servicio Fail2ban para que los cambios surtan efecto:

sudo systemctl restart fail2ban

Cliente Fail2ban

Fail2ban se envía con una herramienta de línea de comandos fail2ban-clientque puede usar para interactuar con el servicio Fail2ban.

Para ver todas las opciones disponibles del fail2ban-clientcomando, invóquelo con la -hopción:

fail2ban-client -h

Esta herramienta se puede usar para prohibir/desbanear direcciones IP, cambiar configuraciones, reiniciar el servicio y más. Aquí están algunos ejemplos:

  • Consultar el estado de una cárcel:

    sudo fail2ban-client status sshd
  • Desbanear una IP:

    sudo fail2ban-client set sshd unbanip 23.34.45.56
  • Prohibir una IP:

    sudo fail2ban-client set sshd banip 23.34.45.56

Conclusión

Le mostramos cómo instalar y configurar Fail2ban en CentOS 8. Para obtener más información sobre cómo configurar Fail2ban, visite la documentación oficial .

Si tiene preguntas, no dude en dejar un comentario a continuación.