Fail2ban (Español)
Fail2ban escanea los archivos de registro (por ejemplo, /var/log/httpd/error_log
) y prohíbe las IP que muestran signos maliciosos así como la que muestren muchos errores de contraseña, búsqueda de vulnerabilidades, etc. Normalmente, Fail2ban se utiliza para actualizar las reglas del cortafuegos a fin de rechazar las direcciones IP durante un período de tiempo específico, aunque también permite configurar cualquier otra acción (por ejemplo, enviar un correo electrónico).
ignoreip
.Instalación
Utilización
Configure Fail2ban y active/inicie fail2ban.service
.
fail2ban-client
fail2ban-client permite monitorear un «conjunto de reglas encapsuladas» (en adelante, cápsulas) (recarga, reinicio, estado, etc.). Para ver todas las órdenes disponibles:
$ fail2ban-client
Para ver todas las cápsulas activadas:
# fail2ban-client status
Para verificar el estado de una cápsula, por ejemplo para sshd:
# fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 9 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 0.0.0.0
Configuración
Debido a la posibilidad de que el archivo /etc/fail2ban/jail.conf
se sobrescriba o actualice durante una puesta al día de la distribución, se recomienda crear un archivo local /etc/fail2ban/jail.local
. Por ejemplo, para cambiar el tiempo de prohibición predeterminado a 1 día:
/etc/fail2ban/jail.local
[DEFAULT] bantime = 1d
O cree archivos separados name.local en el directorio /etc/fail2ban/jail.d
, por ejemplo /etc/fail2ban/jail.d/sshd.local
.
Reinicie fail2ban.service
para aplicar los cambios de configuración.
Activar cápsulas
Por defecto, todas las cápsulas están desactivadas. Añada enabled = true
a la cápsula que desea usar, por ejemplo, para activar la cápsula OpenSSH:
/etc/fail2ban/jail.local
[sshd] enabled = true
Vea #Cápsula SSH personalizada.
Recibir un correo electrónico de alerta
Si desea recibir un correo electrónico cuando alguien ha sido baneado, debe configurar un cliente SMTP (por ejemplo, msmtp) y cambiar la acción predeterminada, como se indica a continuación.
/etc/fail2ban/jail.local
[DEFAULT] destemail = [email protected] sender = [email protected] # para prohibir y enviar un correo electrónico con un informe sobre «whois» al correo electrónico. action = %(action_mw)s # hace lo mismo que «action_mw» pero también envía líneas de registro relevantes. #action = %(action_mwl)s
Firewall y servicios
Por defecto, Fail2ban utiliza Iptables. Sin embargo, la configuración de la mayoría de cortafuegos y servicios es sencilla. Por ejemplo, para usar Nftables:
/etc/fail2ban/jail.local
[DEFAULT] banaction = nftables
Consulte /etc/fail2ban/action.d/
para ver otros ejemplos, por ejemplo ufw.conf.
Consejos y trucos
Cápsula SSH personalizada
Edite /etc/fail2ban/jail.d/sshd.local
, agregue esta sección y actualice la lista de direcciones IP confiables en ignoreip
:
/etc/fail2ban/jail.d/sshd.local
[sshd] enabled = true filter = sshd banaction = iptables backend = systemd maxretry = 5 findtime = 1d bantime = 2w ignoreip = 127.0.0.1/8
- Podría ser necesario configurar
LogLevel VERBOSE
en/etc/ssh/sshd_config
para permitir la monitorización completa por fail2ban, de lo contrario, los fallos de contraseña podrían no registrarse correctamente. - Fail2ban tiene soporte para IPv6 desde la versión 0.10. Adapte su cortafuegos en consecuencia, por ejemplo inicie/active
ip6tables.service
.
- Si utiliza un front-end para iptables como ufw, se puede usar
banaction = ufw
en lugar de iptables. - Si opta por Shorewall, se puede usar
banaction = shorewall
y también establecerBLACKLIST
enALL
en/etc/shorewall/shorewall.conf
, de lo contrario, la regla agregada para prohibir una dirección IP afectará solo a las conexiones nuevas.
Fortalecer el servicio
Actualmente, Fail2ban debe ejecutarse como root. Por lo tanto, es posible que desee considerar fortalecer el proceso con systemd (Español).
Cree un archivo de configuración drop-in para fail2ban.service
:
/etc/systemd/system/fail2ban.service.d/override.conf
[Service] PrivateDevices=yes PrivateTmp=yes ProtectHome=read-only ProtectSystem=strict NoNewPrivileges=yes ReadWritePaths=-/var/run/fail2ban ReadWritePaths=-/var/lib/fail2ban ReadWritePaths=-/var/log/fail2ban ReadWritePaths=-/var/spool/postfix/maildrop ReadWritePaths=-/run/xtables.lock CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
El parámetro CAP_DAC_READ_SEARCH
de CapabilityBoundingSet
permitirá a Fail2ban el acceso de lectura completa a cada directorio y archivo. Los parámetros CAP_NET_ADMIN
y CAP_NET_RAW
permitirán que Fail2ban funcione en cualquier cortafuegos que tenga una interfaz en línea de órdenes. Consulte capabilities(7) para obtener más información.
Al usar ProtectSystem=strict
la jerarquía del sistema de archivos será de «solo lectura», ReadWritePaths
permitirá que Fail2ban tenga acceso de escritura en las rutas que considere necesarias.
Cree /etc/fail2ban/fail2ban.local
con la ruta correcta logtarget
:
/etc/fail2ban/fail2ban.local
[Definition] logtarget = /var/log/fail2ban/fail2ban.log
Cree el directorio /var/log/fail2ban/
como root.
Finalmente, recargue el demonio de systemd para aplicar los cambios de la unidad y reinicie fail2ban.service
.