Búsqueda de sitios web

Cómo utilizar Fail2ban para proteger su servidor Linux


Mejorar la seguridad de su servidor debería ser una de sus principales prioridades cuando se trata de administrar un servidor Linux. Al revisar los registros de su servidor, a menudo puede encontrar diferentes intentos de inicio de sesión por fuerza bruta, inundaciones web, búsqueda de exploits y muchos otros.

Con un software de prevención de intrusiones como fail2ban, puede examinar los registros de su servidor y agregar reglas de iptables adicionales para bloquear direcciones IP problemáticas.

Lea también: Cómo instalar Fail2Ban para proteger SSH en CentOS/RHEL 8

Este tutorial le mostrará cómo instalar fail2ban y configurar la configuración básica para proteger su sistema Linux de ataques de fuerza bruta.

Requisitos

Fail2ban está escrito en Python y el único requisito es tener Python instalado:

  • La rama Fail2ban 0.9.x requiere Python >=2.6 o Python >=3.2
  • La rama Fail2ban 0.8.x requiere Python >=2.4
  • Acceso root a su sistema
  • Opcionalmente, iptables o showewall y sendmail

Cómo instalar Fail2Ban en sistemas Linux

La instalación de fail2ban es relativamente sencilla:

Instalar Fail2Ban en CentOS/RHEL

Primero, actualice sus paquetes, habilite el repositorio Epel e instale fail2ban como se muestra.

yum update
yum install epel-release
yum install fail2ban

Instalar Fail2Ban en Debian/Ubuntu

Primero, actualice sus paquetes e instale fail2ban como se muestra.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Opcionalmente, si desea habilitar el soporte por correo (para notificaciones por correo), puede instalar sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Para habilitar fail2ban y sendmail utilice los siguientes comandos:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Cómo configurar Fail2ban en sistemas Linux

De forma predeterminada, fail2ban utiliza los archivos .conf ubicados en /etc/fail2ban/ que se leen primero. Sin embargo, estos pueden ser anulados por archivos .local ubicados en el mismo directorio.

Por lo tanto, no es necesario que el archivo .local incluya todas las configuraciones del archivo .conf, sino solo las que desea anular. Los cambios deben realizarse en los archivos .local, no en .conf. Esto evitará que se sobrescriban los cambios al actualizar el paquete fail2ban.

Para los fines de este tutorial, copiaremos el archivo fail2ban.conf existente a fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Ahora puede realizar los cambios en el archivo .local utilizando su editor de texto favorito. Los valores que puedes editar son:

  • loglevel: este es el nivel de detalle que se registrará. Las opciones posibles son:

    • CRÍTICO
    • ERROR
    • ADVERTENCIA
    • AVISO
    • INFORMACIÓN
    • DEPURAR
  • logtarget: registra las acciones en un archivo específico. El valor predeterminado es /var/log/fail2ban.log. Sin embargo, puedes cambiar esto a:

    • STDOUT: genera cualquier dato
    • STDERR: muestra cualquier error
    • SYSLOG: registro basado en mensajes
    • Archivo: salida a un archivo
  • socket: directorio en el que se colocará el archivo socket.
  • pidfile: ubicación del archivo pid.

Configurar Fail2ban jail.local

Uno de los archivos más importantes en fail2ban es jail.conf que define tus cárceles. Aquí es donde defines los servicios para los cuales se debe habilitar fail2ban.

Como mencionamos anteriormente, los archivos .conf se pueden modificar durante las actualizaciones, por lo que debes crear un archivo jail.local donde puedas aplicar tus modificaciones.

Otra forma de hacer esto es simplemente copiar el archivo .conf con:

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

En caso de que estés usando CentOS o Fedora, necesitarás cambiar el backend en jail.local de “auto ” a “systemd ”.

Si estás usando Ubuntu/Debian, no es necesario realizar esta modificación, aunque ellos también usen systemd.

El archivo jail habilitará SSH de forma predeterminada para Debian y Ubuntu, pero no en CentOS. Si desea habilitarlo, simplemente cambie la siguiente línea en /etc/fail2ban/jail.local:

[sshd]
enabled = true
Tiempos de prohibición y reintento

Puede configurar las circunstancias después de las cuales se bloquea una dirección IP. Para ello, fail2ban utiliza bantime, findtime y maxretry.

  • bantime: este es el número de segundos que una dirección IP permanecerá prohibida (el valor predeterminado es 10 min).
  • findtime: la cantidad de tiempo entre intentos de inicio de sesión, antes de que se prohíba el host. (predeterminado 10 min). En otras palabras, si fail2ban está configurado para bloquear una dirección IP después de 3 intentos fallidos de inicio de sesión, esos 3 intentos deben realizarse dentro del período de tiempo de búsqueda (10 minutos).
  • maxretry: número de intentos que se deben realizar antes de que se aplique una prohibición. (por defecto 3).
Dirección IP de la lista blanca

Por supuesto, querrás incluir en la lista blanca ciertas direcciones IP. Para configurar dichas direcciones IP, abra /etc/fail2ban/jail.local con su editor de texto favorito y descomente la siguiente línea:

ignoreip = 127.0.0.1/8  ::1

Luego, puede ingresar las direcciones IP que desea que se ignoren. Las direcciones IP deben estar separadas por espacios o comas.

Alertas de correo electrónico

Si desea recibir alertas por correo sobre el evento, deberá configurar los siguientes ajustes en /etc/fail2ban/jail.local:

  • destemail – dirección de correo electrónico, donde recibirá la notificación.
  • Nombre del remitente: el remitente que verá al recibir el mensaje.
  • remitente: dirección de correo electrónico desde la que fail2ban enviará los correos electrónicos.

El mta (agente de transferencia de correo) predeterminado está configurado en sendmail.

Para recibir notificaciones por correo, también deberá cambiar la configuración de “acción” de:

Action = %(action_)s

A uno de estos:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s: prohibirá el host y enviará un correo con un informe whois.
  • %(action_mwl)s: prohibirá el host, proporcionará información whois y toda la información relevante del archivo de registro.

Configuración adicional de la cárcel Fail2ban

Hasta ahora hemos analizado las opciones de configuración básicas. Si desea configurar una cárcel, deberá habilitarla en el archivo jail.local. La sintaxis es bastante simple:

[jail_to_enable]
. . .
enabled = true

Donde deberías reemplazar jail_to_enable con la cárcel real, por ejemplo, “sshd ”. En el archivo jail.local, los siguientes valores estarán predefinidos para el servicio ssh:

[sshd]

port = ssh
logpath = %(sshd_log)s

Puede habilitar el filtro que ayudará a identificar si una línea en el registro falla. El valor del filtro es en realidad una referencia a un archivo con el nombre del servicio seguido de .conf. Por ejemplo: /etc/fail2ban/filter.d/sshd.conf.

La sintaxis es:

filter = service

Por ejemplo:

filter = sshd

Puede revisar los filtros existentes en el siguiente directorio: /etc/fail2ban/filter.d/.

Utilice el cliente fail2ban

Fail2ban viene con un cliente que puede usarse para revisar y cambiar la configuración actual. Dado que ofrece muchas opciones, puede consultar su manual con:

man fail2ban-client 

Aquí verá algunos de los comandos básicos que puede utilizar. Para revisar el estado actual de fail2ban o de una cárcel específica, puede utilizar:

fail2ban-client status

El resultado será similar a este:

Para cárcel individual, puede ejecutar:

fail2ban-client status sshd

En la captura de pantalla a continuación, verá que intencionalmente fallé en varios inicios de sesión para que fail2ban pueda bloquear la dirección IP desde la que estaba intentando conectarme:

Conclusión

Fail2ban es un sistema de prevención de intrusiones excelente y bien documentado que proporciona seguridad adicional a su sistema Linux. Se necesita algo de tiempo para acostumbrarse a su configuración y sintaxis, pero una vez que se familiarice con él, podrá cambiar y ampliar sus reglas.