Hoy vamos a instalar Fail2ban en nuestro servidor, es una herramienta de prevención de intrusiones gratuita, de código abierto y ampliamente utilizada para protegernos contra ataques de fuerza bruta, y muchas cosas más. Hoy lo vamos a instalar para proteger la conexión SSH a nuestro servidor.

Instalación de Fail2ban en CentOS / RHEL 8

El paquete fail2ban no está en los repositorios oficiales pero está disponible en el repositorio EPEL. Los cargamos haciendo:

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

Luego, instalamos 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 /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 esta en /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 del 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/. Cuidado con esto porque 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 ubicado en la carpeta /etc/fail2ban/

nano /etc/fail2ban/jail.local

Ahora copiamos y pegamos la siguiente configuración en la sección [DEFAULT] que contiene opciones globales y [sshd] que contiene parámetros para la «cárcel» de sshd.

[DEFAULT] 
ignoreip = 192.168.23.139/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 : especifica la lista de direcciones IP o nombres de host que no se prohibirán.
  • bantime : especificó el número de segundos que un host está prohibido (es decir, la duración efectiva de la prohibición).
  • maxretry : especifica el número de fallas antes de que se bloquee un host.
  • findtime : fail2ban prohibirá un host si ha generado » maxretry » durante los últimos segundos » findtime «.
  • banaction : acción de prohibición.
  • backend : especifica el backend utilizado para obtener la modificación del archivo de registro.

La configuración anterior, por lo tanto, significa que si una IP ha intentado conectarse por ssh y ha fallado 3 veces en los últimos 5 minutos, la va a prohibir por 6 horas e ignore la dirección IP 192.168.23.139.

A continuación, podemos iniciar, habilitar o saber el estatus del servicio fail2ban usando el clásico comando systemctl.

systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban

Probando fail2ban-client

Después de configurar fail2ban para asegurar sshd, vamos a simular loguearnos y fallar.

Para ver el estado actual del servidor fail2ban, ejecute el siguiente comando.

fail2ban-client status

Para monitorear la «cárcel» sshd hacemos

fail2ban-client status sshd

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

fail2ban-client unban 192.168.23.1

Para obtener más información sobre fail2ban, podemos hacer uso del manual.

man jail.conf
man fail2ban-client

Deja un comentario