Fail2Ban es una herramienta de seguridad crucial para proteger los sistemas Linux contra ataques de fuerza bruta. Funciona monitoreando los archivos de registro en busca de actividad sospechosa, como repetidos intentos fallidos de inicio de sesión, y prohíbe automáticamente las direcciones IP infractoras actualizando las reglas del firewall. Fail2Ban es altamente configurable, lo que permite a los administradores definir filtros personalizados, tiempos de prohibición y acciones, lo que lo convierte en un componente esencial para mantener la seguridad del servidor.
En Ubuntu 24.04, 22.04 o 20.04, Fail2Ban se puede instalar fácilmente a través del repositorio predeterminado de Ubuntu. Este método garantiza un proceso de instalación sencillo, con Fail2Ban integrado en su sistema, lo que proporciona una defensa confiable contra intentos de acceso no autorizados. Esta guía lo guiará a través del proceso de instalación utilizando la terminal de línea de comandos.
Actualice Ubuntu antes de la instalación de Fail2ban
Antes de comenzar el proceso de instalación, debe actualizar su sistema para garantizar una instalación sin problemas y evitar posibles conflictos. Para hacer esto, ejecute el siguiente comando en su terminal:
sudo apt update && sudo apt upgrade
Instale Fail2ban a través del comando de terminal
Fail2Ban está disponible en el repositorio predeterminado de Ubuntu, lo que simplifica el proceso de instalación. Ejecute el siguiente comando para comenzar la instalación:
sudo apt install fail2ban
Habilitar y activar Fail2ban
De forma predeterminada, Fail2Ban no está habilitado ni activado después de la instalación. Para iniciar el servicio y permitir que se ejecute al iniciar el sistema, utilice el siguiente comando:
sudo systemctl enable fail2ban --now
Verificar el estado del servicio Fail2Ban
Una vez que haya instalado Fail2Ban con éxito, es esencial verificar el estado de su servicio. Tras la instalación, el servicio Fail2Ban debería habilitarse e iniciarse de forma predeterminada.
Ejecute el siguiente comando para verificar el estado:
sudo systemctl status fail2ban
Configuración de copia de seguridad de Fail2ban
Después de instalar Fail2Ban, es importante instalarlo y configurarlo para que se adapte al entorno de su servidor. Fail2Ban viene con dos archivos de configuración predeterminados ubicados en /etc/fail2ban/jail.conf y /etc/fail2ban/jail.d/defaults-debian.conf.
Para conservar su configuración personalizada, cree copias de los archivos de configuración con la extensión .local. Fail2Ban dará prioridad a la lectura de archivos .local sobre archivos .conf. Al crear archivos .local, se asegura de que su configuración no se pierda durante las actualizaciones y siempre tendrá una copia nueva a la que volver en caso de una mala configuración.
Ejecute el siguiente comando para crear una copia del archivo jail.conf:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ahora tiene una copia de seguridad de su archivo de configuración original y puede personalizar de forma segura la configuración de Fail2Ban editando el archivo jail.local sin preocuparse por perder sus modificaciones durante futuras actualizaciones.
Resumen de ejemplo: configurar Fail2ban
Ahora, veremos cómo editar el archivo de configuración después de crear una copia de seguridad del archivo de configuración original. Estos ejemplos y discusión son solo ejemplos en jail.local y deberán personalizarse y probarse según los requisitos de su sistema.
Editar el archivo de configuración de Fail2ban
Para editar el archivo jail.local usando el editor nano, ejecute el siguiente comando:
sudo nano /etc/fail2ban/jail.local
Incrementos del tiempo de prohibición con Fail2ban
Habilite la configuración Incremento del tiempo de prohibición para aumentar la duración de la prohibición para los infractores reincidentes. Por ejemplo, si el tiempo de prohibición predeterminado es una hora, puedes aumentarlo a cinco horas después de cinco prohibiciones repetidas.
Para hacer esto, necesitas establecer un multiplicador para la lógica de aumento de la prohibición.
Ejemplo:
## Ban Time Multipliers
# bantime.increment = true
# bantime.factor = 2
# bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
Lista blanca de IP en Fail2ban
Para incluir direcciones IP específicas en la lista blanca, descomente la línea ignoreip y agregue las direcciones IP deseadas, separadas por espacios o comas. Los rangos de IP también se pueden incluir en la lista blanca.
Ejemplo:
ignoreip = 127.0.0.1/8 ::1 180.53.31.33 (example IP address)
Configuración predeterminada del tiempo de prohibición
De forma predeterminada, Fail2Ban prohíbe a un atacante durante 10 minutos después de cinco intentos fallidos dentro de un período de 10 minutos. Puedes ajustar estas configuraciones predeterminadas, pero se recomienda establecer tiempos de prohibición personalizados y límites de reintento para diferentes cárceles.
Ejemplo:
[DEFAULT]
# "bantime" is the number of seconds that a host is banned.
bantime = 10m
# A host is banned if it has generated "maxretry" during the last "findtime" seconds.
findtime = 10m
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
Alertas/notificaciones por correo electrónico con Fail2ban
Configure Fail2Ban para enviar notificaciones por correo electrónico con informes whois a una dirección de correo electrónico específica. También puede configurar diferentes opciones de informes, como enviar correos electrónicos a proveedores de la lista negra o al ISP del atacante.
Ejemplo:
destemail = admin@example.com
sender = fail2ban@example.com
Cárceles Fail2ban
Las cárceles contienen filtros y acciones predefinidos para varias aplicaciones de servidor. Puede habilitar, deshabilitar o personalizar cárceles según las necesidades de su servidor.
Para habilitar una cárcel, agregue "enabled = true" en la sección de cárcel correspondiente.
Ejemplo:
[apache-badbots]
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
También puede agregar cárceles Fail2ban personalizadas o usar acciones del action.d
directorio actualizando el banaction
fila en la sección de la cárcel.
Ejemplo:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = action_mw
cloudflare
bantime = 72h
maxretry = 1
Una vez que haya terminado de configurar Fail2Ban, reinicie el servicio para aplicar los cambios:
sudo systemctl restart fail2ban
Prohibir o desbloquear mediante comandos Fail2Ban
Una vez que Fail2Ban esté configurado, los comandos de Fail2ban más comunes que necesitarás usar serán el comando de prohibir o desbancar. Puede gestionar las prohibiciones de IP utilizando el comando fail2ban-client. Es posible que necesite privilegios sudo, según su configuración.
Prohibir una dirección IP a través del comando CLI Fail2ban
Para prohibir una dirección IP manualmente para una cárcel específica (por ejemplo, apache-botsearch), use el siguiente comando:
sudo fail2ban-client set apache-botsearch banip <ip address>
Desbanear una dirección IP a través del comando CLI Fail2ban
Para desbloquear una dirección IP para una cárcel específica (por ejemplo, apache-botsearch), use el siguiente comando:
sudo fail2ban-client set apache-botsearch unbanip <ip address>
Accediendo al menú de ayuda
Para acceder al menú de ayuda y ver configuraciones o comandos adicionales, use el siguiente comando:
sudo fail2ban-client -h
Ejemplos adicionales de comandos Fail2ban
Verifique el estado de una cárcel específica:
sudo fail2ban-client status apache-botsearch
Vuelva a cargar la configuración sin reiniciar el servicio Fail2Ban:
sudo fail2ban-client reload
Consulte la lista de direcciones IP actualmente prohibidas para una cárcel específica:
sudo fail2ban-client get apache-botsearch banned
Establezca un tiempo de prohibición personalizado para una dirección IP específica en una cárcel:
sudo fail2ban-client set apache-botsearch bantime <time_in_seconds> --banip <ip_address>
Estos comandos proporcionan las herramientas para gestionar las prohibiciones de IP utilizando Fail2Ban de forma eficaz. Recuerde reemplazar con la dirección IP real que desea prohibir o desbancar, y reemplace apache-botsearch con el nombre de cárcel apropiado según su configuración.
Verificar o monitorear los registros de Fail2Ban
Es fundamental monitorear y revisar los registros de Fail2Ban para garantizar que sus cárceles funcionen correctamente. De forma predeterminada, los registros de Fail2Ban se pueden encontrar en /var/log/fail2ban.log.
Monitorear registros en tiempo real para Fail2ban
Para ver los registros en vivo y detectar cualquier problema mientras trabaja en su servidor, use el comando "tail -f":
tail -f /var/log/fail2ban.log
Este comando le permite monitorear los cambios de registro en tiempo real.
Buscar registros para información específica de Fail2ban
También puede utilizar el comando grep para buscar información específica dentro de los registros, como direcciones IP, agentes de usuario o errores.
Ejemplo de usuario-agente:
grep "Bing" /var/log/fail2ban.log
Ejemplo de error:
grep "error" /var/log/fail2ban.log
Dirección IP Ejemplo:
grep "123.123.123.1" /var/log/fail2ban.log
Estos ejemplos demuestran varias formas de filtrar y buscar registros mediante comandos de terminal. Revisar sus registros de Fail2Ban ayudará a mantener la seguridad de su servidor y garantizará que sus cárceles funcionen según lo previsto.
Aprendizaje adicional: eliminar Fail2Ban
En caso de que decida eliminar Fail2Ban de su sistema, puede desinstalarlo fácilmente siguiendo estos pasos:
Desactivar el servicio Fail2Ban
Si el servicio Fail2Ban todavía está activo, primero debe desactivarlo:
sudo systemctl disable fail2ban --now
Este comando deshabilitará el servicio Fail2Ban y detendrá su ejecución.
Quitar Fail2Ban
Después de deshabilitar el servicio, puede desinstalar Fail2Ban usando el siguiente comando:
sudo apt remove fail2ban
Este comando eliminará Fail2Ban junto con sus dependencias del sistema y datos asociados.
Conclusión
Con Fail2Ban instalado en su sistema Ubuntu, mejora la seguridad de su servidor mitigando automáticamente los ataques de fuerza bruta y otras actividades sospechosas. La instalación de Fail2Ban a través del repositorio predeterminado de Ubuntu garantiza una configuración rápida y estable, con acceso a actualizaciones periódicas proporcionadas por la comunidad de Ubuntu. Revisar y actualizar periódicamente sus configuraciones de Fail2Ban ayudará a mantener una protección óptima para su servidor, garantizando que su sistema permanezca seguro y resistente contra posibles amenazas.