Cómo instalar Fail2Ban para proteger SSH en CentOS / RHEL 8


Fail2ban es una herramienta de prevención de intrusiones gratuita, de código abierto y ampliamente utilizada que escanea los archivos de registro en busca de direcciones IP que muestren señales maliciosas, como demasiadas fallas de contraseña, y mucho más, y las prohíbe (actualiza las reglas del firewall para rechazar las direcciones IP) . De forma predeterminada, se envía con filtros para varios servicios, incluido sshd.

En este artículo, explicaremos cómo instalar y configurar fail2ban para proteger SSH y mejorar la seguridad del servidor SSH contra ataques de fuerza bruta en CentOS/RHEL 8.

Instalación de Fail2ban en CentOS / RHEL 8

El paquete fail2ban no está en los repositorios oficiales pero está disponible en el repositorio de EPEL. Después de iniciar sesión en su sistema, acceda a una interfaz de línea de comandos, luego habilite el repositorio EPEL en su sistema como se muestra.

# dnf install epel-release
OR
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Luego, instale el paquete Fail2ban ejecutando el siguiente comando.

# dnf install fail2ban

Configuración de Fail2ban para proteger SSH

Los archivos de configuración de fail2ban se encuentran en el directorio/etc/fail2ban/y los filtros se almacenan en el directorio /etc/fail2ban/filter.d/ (el archivo de filtro para sshd es /etc/fail2ban/filter.d/sshd.conf) .

El archivo de configuración global para el servidor fail2ban es /etc/fail2ban/jail.conf, sin embargo, no se recomienda modificar este archivo directamente, ya que probablemente se sobrescribirá o mejorará en caso de una actualización de paquete en el futuro.

Como alternativa, se recomienda crear y agregar sus configuraciones en un archivo jail.local o archivos .conf separados en el directorio /etc/fail2ban/jail.d/. Tenga en cuenta que los parámetros de configuración establecidos en jail.local anularán lo que esté definido en jail.conf.

Para este artículo, crearemos un archivo separado llamado jail.local en el directorio/etc/fail2ban/como se muestra.

# vi /etc/fail2ban/jail.local

Una vez que el archivo esté abierto, copie y pegue la siguiente configuración en él. El [DEFAULT] la sección contiene opciones globales y [sshd] contiene parámetros para la cárcel sshd.

[DEFAULT] 
ignoreip = 192.168.56.2/24
bantime  = 21600
findtime  = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd] 
enabled = true

Expliquemos brevemente las opciones en la configuración anterior:

  • ignoreip: specifies the list of IP addresses or hostnames not to ban.
  • bantime: specified the number of seconds that a host is banned for (i.e effective ban duration).
  • maxretry: specifies the number of failures before a host gets banned.
  • findtime: fail2ban will ban a host if it has generated “maxretry” during the last “findtime” seconds.
  • banaction: banning action.
  • backend: specifies the backend used to get log file modification.

Por lo tanto, la configuración anterior significa que si una IP ha fallado 3 veces en los últimos 5 minutos, prohíbala durante 6 horas e ignore la dirección IP 192.168.56.2.

A continuación, inicie y habilite el servicio fail2ban por ahora y verifique si está funcionando con el siguiente comando systemctl.

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl status fail2ban

Supervisión de direcciones IP fallidas y prohibidas mediante fail2ban-client

Después de configurar fail2ban para asegurar sshd, puede monitorear las direcciones IP fallidas y prohibidas usando el fail2ban-client. Para ver el estado actual del servidor fail2ban, ejecute el siguiente comando.

# fail2ban-client status

Para monitorear la cárcel sshd, ejecute.

# fail2ban-client status sshd

Para desbloquear una dirección IP en fail2ban (en todas las cárceles y bases de datos), ejecute el siguiente comando.

# fail2ban-client unban 192.168.56.1

Para obtener más información sobre fail2ban, lea las siguientes páginas de manual.

# man jail.conf
# man fail2ban-client

¡Eso resume esta guía! Si tiene alguna pregunta o pensamiento que desee compartir sobre este tema, no dude en comunicarse con nosotros a través del formulario de comentarios a continuación.