Comando Linux fail2ban

Linux 命令大全Guía completa de comandos Linux


fail2ban es una herramienta de prevención de intrusiones de código abierto que se utiliza para proteger los servidores Linux contra ataques de fuerza bruta. Detecta comportamientos maliciosos monitoreando archivos de registro del sistema (como /var/log/auth.log), como múltiples intentos fallidos de inicio de sesión SSH, y luego actualiza automáticamente las reglas del firewall para bloquear las direcciones IP de estos atacantes.


Funciones principales de fail2ban

Monitoreo de registros en tiempo real

fail2ban monitorea continuamente los archivos de registro especificados en busca de comportamientos maliciosos que coincidan con patrones predefinidos.

Bloqueo automático de IP

Cuando se detectan múltiples intentos fallidos desde la misma IP (umbral configurable), fail2ban agrega automáticamente esa IP a la lista de bloqueo del firewall.

Tiempo de bloqueo configurable

Los administradores pueden establecer el tiempo de bloqueo inicial y un tiempo de bloqueo creciente después de múltiples infracciones.

Soporte para múltiples servicios

No solo admite SSH, sino también la protección de múltiples servicios como Apache, Nginx, FTP, servicios de correo, entre otros.

Notificación por correo electrónico

Se puede configurar para enviar una notificación por correo electrónico al administrador cuando se bloquea una IP.


Instalación y configuración de fail2ban

Método de instalación

En sistemas basados en Debian/Ubuntu:

Ejemplo

sudo apt update
sudo apt install fail2ban

En sistemas basados en RHEL/CentOS:

Ejemplo

sudo yum install epel-release
sudo yum install fail2ban

Configuración básica

Los archivos de configuración principales de fail2ban se encuentran en:

  • /etc/fail2ban/jail.conf- Archivo de configuración principal (no se recomienda modificar directamente)
  • /etc/fail2ban/jail.local- Configuración personalizada del usuario (se recomienda modificar aquí)

Crear un archivo de configuración personalizado:

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

Comandos comunes de fail2ban

Iniciar/detener/reiniciar el servicio

Ejemplo

sudo systemctl start fail2ban    # Iniciar el servicio
sudo systemctl stop fail2ban     # Detener el servicio
sudo systemctl restart fail2ban  # Reiniciar el servicio
sudo systemctl enable fail2ban   # Habilitar inicio automático al arrancar

Ver el estado del servicio

sudo systemctl status fail2ban

Ver las IP bloqueadas

sudo fail2ban-client status sshd

Desbloquear una IP específica

sudo fail2ban-client set sshd unbanip 192.168.1.100

Bloquear IP manualmente

sudo fail2ban-client set sshd banip 192.168.1.100

Explicación detallada del archivo de configuración de fail2ban

Parámetros de configuración principales

Ejemplo

[DEFAULT]
# Direcciones IP ignoradas (lista blanca)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Tiempo de bloqueo (segundos)
bantime = 600

# Ventana de tiempo de detección (segundos)
findtime = 600

# Número máximo de intentos
maxretry = 3

# Backend de firewall utilizado
banaction = iptables-multiport

[sshd]
# Si se habilita la protección SSH
enabled = true

# Ruta del archivo de registro
logpath = %(sshd_log)s

# Nombre del filtro
filter = sshd

# Número de puerto
port = ssh

Filtros personalizados

Los filtros se definen en el directorio/etc/fail2ban/filter.d/Por ejemplo, para crear un filtro SSH personalizado:

  1. Copiar el filtro SSH predeterminado:

    sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
  2. Edite el filtro personalizado y modifique la expresión regular para que coincida con patrones de fallo específicos.


Ejemplos prácticos de fail2ban

Proteger el servicio SSH

  1. Edite el archivo jail.local:

    sudo nano /etc/fail2ban/jail.local
  2. Agregue o modifique el siguiente contenido:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    findtime = 600
  3. Reinicie el servicio fail2ban:

    sudo systemctl restart fail2ban

Proteger el servicio Apache

  1. Asegúrese de que jail.local contenga lo siguiente:

    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache2/error.log
    maxretry = 3
    bantime = 86400
  2. Reinicie el servicio para que la configuración surta efecto.


Uso avanzado de fail2ban

Usar fail2ban para proteger servicios personalizados

  1. Crear un archivo de filtro personalizado:

    sudo nano /etc/fail2ban/filter.d/myapp.conf
  2. Agregar reglas de filtro (ejemplo):

    [Definition]
    failregex = ^.*  .* "POST /login.php.* 401
    ignoreregex =
  3. Agregue el jail correspondiente en jail.local:

    enabled = true
    port = http,https
    filter = myapp
    logpath = /var/log/myapp/access.log
    maxretry = 5
    bantime = 3600

Configurar notificación por correo electrónico

  1. Edite el archivo jail.local:

    [DEFAULT]
    destemail = admin@example.com
    sender = fail2ban@example.com
    mta = sendmail
    action = %(action_mwl)s
  2. Asegúrese de que el sistema tenga instalada y configurada una herramienta de envío de correo (como sendmail o postfix).


Registros y solución de problemas de fail2ban

Ver los registros de fail2ban

sudo tail -f /var/log/fail2ban.log

Resolución de problemas comunes

fail2ban no funciona

  • Verifique si el servicio está en ejecución:sudo systemctl status fail2ban
  • Verifique si hay errores en los registros:sudo journalctl -u fail2ban

La IP no está bloqueada

  • Confirme que la ruta del registro sea correcta
  • Verifique si la expresión regular del filtro coincide con las entradas del registro
  • Aumente el nivel de registro para depuración: establezca en jail.localloglevel = DEBUG

Bloqueo incorrecto de IP

  • Agregue las IP de confianza a la lista ignoreip
  • Reduzca maxretry o aumente findtime

Mejores prácticas de fail2ban

  1. Actualizaciones periódicas: mantenga fail2ban actualizado para obtener las últimas correcciones de seguridad y mejoras de funciones.

  2. Configuración adecuada:

    • Establezca valores apropiados de maxretry y bantime
    • No configure bantime demasiado largo para evitar bloquear por error a usuarios legítimos
    • Tampoco lo configure demasiado corto, de lo contrario el efecto de protección será limitado
  3. Monitoreo y revisión:

    • Revise periódicamente la lista de IP bloqueadas
    • Analice los registros para comprender los patrones de ataque
  4. Protección en múltiples capas:

    • Combine fail2ban con otras medidas de seguridad (como firewall, políticas de contraseñas seguras)
    • Considere cambiar el puerto predeterminado de SSH
  5. Copia de seguridad de la configuración:

    • Realice copias de seguridad de los archivos de configuración personalizados y los filtros
    • Registre todos los cambios para facilitar la recuperación de fallos

Resumen

fail2ban es una herramienta importante para la seguridad de los sistemas Linux. Mediante la detección y el bloqueo automáticos de comportamientos maliciosos, previene eficazmente los ataques de fuerza bruta. Configurar y utilizar correctamente fail2ban puede mejorar significativamente la seguridad del servidor y, al mismo tiempo, reducir el trabajo de intervención manual del administrador. Con la introducción de este artículo, usted debería haber dominado los usos básicos y las técnicas de configuración avanzada de fail2ban, y poder personalizar sus propias estrategias de protección de seguridad según las necesidades reales.


Linux 命令大全Guía completa de comandos Linux

Otras extensiones