Saltar al contenido

CyberSkills – Tutoriales de Seguridad y Servidores

Tutorial de Instalación y Configuración de Fail2Ban en Ubuntu Server 24.04.3 LTS

Tutorial de Instalación y Configuración de Fail2Ban en Ubuntu Server 24.04.3 LTS

En este tutorial, aprenderemos a instalar y configurar Fail2Ban en un servidor Ubuntu Server 24.04.3 LTS. Fail2Ban es una herramienta esencial para proteger tu servidor de ataques de fuerza bruta, escaneos de puertos y otros intentos de intrusión, bloqueando automáticamente las direcciones IP de los atacantes.

1. ¿Qué es Fail2Ban?

Fail2Ban es un marco de prevención de intrusiones que protege los servidores de ataques de fuerza bruta. Escanea los archivos de registro (logs) de servicios como SSH, Apache, Nginx, etc., en busca de patrones de intentos de autenticación fallidos. Si detecta un número predefinido de fallos desde una misma IP en un período de tiempo determinado, Fail2Ban actualiza las reglas del firewall para bloquear temporalmente (o permanentemente) esa dirección IP.

2. Instalación de Fail2Ban

Fail2Ban está disponible en los repositorios predeterminados de Ubuntu. Para instalarlo, abre una terminal y ejecuta los siguientes comandos:
sudo apt update
sudo apt install fail2ban
Una vez instalado, el servicio Fail2Ban se iniciará automáticamente. Puedes verificar su estado con:
sudo systemctl status fail2ban

3. Configuración Básica de Fail2Ban

La configuración principal de Fail2Ban se encuentra en el archivo /etc/fail2ban/jail.conf. Sin embargo, no se recomienda modificar este archivo directamente, ya que las actualizaciones del paquete podrían sobrescribir tus cambios. En su lugar, crea un archivo de configuración local llamado jail.local que anulará las configuraciones predeterminadas.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Dentro de jail.local, encontrarás una sección [DEFAULT] donde puedes establecer configuraciones globales.

3.1. Configuración Global

Modifica los siguientes parámetros en la sección [DEFAULT]:
  • bantime: Duración del bloqueo (en segundos). Por defecto es 10 minutos (600s).
    • bantime = 1h (Bloquea por 1 hora)
    • bantime = 1d (Bloquea por 1 día)
    • bantime = -1 (Bloqueo permanente)
  • findtime: Período de tiempo en el que se cuentan los intentos fallidos (en segundos).
    • findtime = 10m (10 minutos)
  • maxretry: Número de intentos fallidos antes de que se bloquee la IP.
    • maxretry = 5 (5 intentos)
  • destemail: Dirección de correo electrónico para recibir notificaciones.
  • sendername: Nombre del remitente de las notificaciones.
  • mta: Agente de transferencia de correo (ej. sendmail, postfix).
  • banaction: Acción a tomar cuando se bloquea una IP. Para nftables, usaremos nftables-multiport.
Ejemplo de configuración [DEFAULT]:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 # IPs a ignorar (tu red local, etc.)
bantime  = 1h
findtime = 10m
maxretry = 5
destemail = tu_correo@example.com
sendername = Fail2Ban
mta = sendmail
banaction = nftables-multiport
Nota: Asegúrate de reemplazar tu_correo@example.com con tu dirección de correo electrónico real y ajusta ignoreip con las direcciones IP que no deseas que sean bloqueadas (por ejemplo, tu propia IP o la de tu red local).

3.2. Protección SSH (Puerto 1422)

Para proteger el servicio SSH que configuramos en el puerto 1422, busca la sección [sshd] y asegúrate de que esté habilitada y configurada para el puerto correcto:
[sshd]
enabled = true
port = 1422
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Si tu servicio SSH está escuchando en un puerto diferente al 22 (como el 1422 en nuestro caso), es crucial especificarlo aquí.

3.3. Otras Jails Comunes

Fail2Ban viene con varias «jails» preconfiguradas para diferentes servicios. Puedes habilitarlas o configurarlas según tus necesidades. Algunas comunes incluyen:
  • [sshd] (ya configurado)
  • [apache-auth] (para proteger directorios con autenticación HTTP)
  • [apache-noscript] (para bloquear escaneos de scripts)
  • [nginx-http-auth] (para Nginx)
  • [postfix] (para servidores de correo)
  • [dovecot] (para servidores IMAP/POP3)
Para habilitar una jail, simplemente cambia enabled = false a enabled = true en la sección correspondiente.

4. Reiniciar Fail2Ban

Después de realizar cualquier cambio en el archivo jail.local, debes reiniciar el servicio Fail2Ban para que los cambios surtan efecto:
sudo systemctl restart fail2ban

5. Verificación del Estado de Fail2Ban

Puedes verificar el estado general de Fail2Ban y las jails activas con el siguiente comando:
sudo fail2ban-client status
Para ver el estado de una jail específica (por ejemplo, sshd), usa:
sudo fail2ban-client status sshd
Esto te mostrará las IPs bloqueadas, el número de intentos fallidos, etc.

6. Desbloquear una IP

Si necesitas desbloquear manualmente una dirección IP, puedes hacerlo con el siguiente comando (reemplaza XXX.XXX.XXX.XXX con la IP a desbloquear):
sudo fail2ban-client set sshd unbanip XXX.XXX.XXX.XXX

7. Hardening Adicional

  • Monitoreo de Logs: Revisa regularmente los logs de Fail2Ban (/var/log/fail2ban.log) para asegurarte de que está funcionando correctamente y para identificar posibles patrones de ataque.
  • Actualizaciones: Mantén Fail2Ban y tu sistema operativo actualizados para beneficiarte de las últimas correcciones de seguridad.
  • Reglas de Firewall: Asegúrate de que tu firewall (nftables) esté configurado para permitir solo el tráfico necesario y que Fail2Ban pueda interactuar con él.

Conclusión

Fail2Ban es una herramienta poderosa y fácil de configurar que añade una capa crucial de seguridad a tu servidor Ubuntu. Al automatizar el bloqueo de atacantes, reduce significativamente el riesgo de ataques de fuerza bruta y mejora la postura de seguridad general de tu sistema.

Únete a la conversación

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *