Comando Linux fail2ban
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 install fail2ban
En sistemas basados en RHEL/CentOS:
Ejemplo
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 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
# 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:
-
Copiar el filtro SSH predeterminado:
sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
-
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
-
Edite el archivo jail.local:
sudo nano /etc/fail2ban/jail.local
-
Agregue o modifique el siguiente contenido:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 findtime = 600
-
Reinicie el servicio fail2ban:
sudo systemctl restart fail2ban
Proteger el servicio Apache
-
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
-
Reinicie el servicio para que la configuración surta efecto.
Uso avanzado de fail2ban
Usar fail2ban para proteger servicios personalizados
-
Crear un archivo de filtro personalizado:
sudo nano /etc/fail2ban/filter.d/myapp.conf
-
Agregar reglas de filtro (ejemplo):
[Definition] failregex = ^.* .* "POST /login.php.* 401 ignoreregex =
-
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
-
Edite el archivo jail.local:
[DEFAULT] destemail = admin@example.com sender = fail2ban@example.com mta = sendmail action = %(action_mwl)s
-
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.local
loglevel = DEBUG
Bloqueo incorrecto de IP
- Agregue las IP de confianza a la lista ignoreip
- Reduzca maxretry o aumente findtime
Mejores prácticas de fail2ban
-
Actualizaciones periódicas: mantenga fail2ban actualizado para obtener las últimas correcciones de seguridad y mejoras de funciones.
-
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
-
Monitoreo y revisión:
- Revise periódicamente la lista de IP bloqueadas
- Analice los registros para comprender los patrones de ataque
-
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
-
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.
Otras extensiones