fail2ban es un paquete de archivos de cliente, servidor y configuración que se usa para proteger el sistema de varios ataques maliciosos. También protege los servicios del servidor Linux contra la denegación de servicio (DoS). Mientras que otras funciones básicas son monitorear archivos de registro, buscar patrones predefinidos y bloquear temporalmente direcciones IP. Se publica bajo la Licencia Pública General GNU Versión 2 y está basado en Python.
Puede ejecutarse en segundo plano (como un demonio) así como en primer plano. El programa es útil, por ejemplo, en el servidor ssh que desea limitar el número de intentos de inicio de sesión. El programa fail2ban examina los archivos de registro del sistema en busca de intentos fallidos de inicio de sesión y luego bloquea la dirección de Internet (IP) del atacante durante un cierto período de tiempo.
Aquí aprendemos los pasos para instalar Fail2ban en Debian 11 Bulleyes y su proceso de configuración.
Instalación de Fail2ban en Debian 11
Los paquetes para instalar y configurar Fail2ban están disponibles en el repositorio oficial de Debian 11, por lo que solo necesitamos usar el comando apt para su instalación.
Primero, ejecute el comando de actualización para reconstruir el caché del repositorio-
sudo apt update
Y luego el comando principal para obtener esta herramienta de seguridad-
sudo apt install fail2ban
Con la ejecución del comando anterior, los siguientes programas estarán disponibles después de la instalación:
- fail2ban-server:el servidor
- fail2ban-client – Programa cliente para configuración y evaluación del servidor
- fail2ban-regex- Programa para probar expresiones regulares
Habilitar y comprobar el estado de sus servicios-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Configuración en Debian 10/11
fail2ban lee tipos de archivos de configuración con las extensiones .conf
y .local
. Archivos con la extensión .conf
se crean durante la instalación y se sobrescribirán durante la actualización del paquete, por lo que todos los cambios deben realizarse en el .local
correspondiente archivos Por lo tanto, solo agregue o cambie los valores en este archivo que sean diferentes de la configuración predeterminada o global.
Fail2ban tiene tres tipos de archivos de configuración:
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Acciones.d
Los archivos en el directorio /etc/fail2ban/action.d/ contienen los comandos para (desbloquear) direcciones IP. Los archivos de acción contienen dos secciones: [Definition]
y [Init]
. Las entradas en [Init]
La sección se utiliza para sobrescribir las reglas definidas en la cárcel. Los ejemplos de la siguiente tabla están tomados de iptables-multiport-conf acción. Todos los comandos se ejecutan con los derechos de usuario de fail2ban.
Resumen de las opciones | ||
entrada | descripción | ejemplo |
[Definition] | ||
actionstart | Comandos que se ejecutan cuando se inicia fail2ban. | actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> |
actionstop | Comandos que se ejecutan al salir de fail2ban. | actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name> |
actioncheck | Comandos que se ejecutan antes de cada actionban. Se utilizan para comprobar la funcionalidad del entorno actual. | actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]' |
actionban | Comandos que se ejecutan cuando se prohíbe una IP. La condición siempre es maxretry debe superarse y encontrar el tiempo caído por debajo de. | actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> |
actionunban | Comandos que se utilizarán para desbanear. | actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype> |
[Init] | ||
name | El nombre predeterminado de la cadena | name = default |
port | puerto | port = ssh |
protocol | Es utilizado internamente por el lector de configuración. Valores posibles: tcp , udp , icmp , all . | protocol = tcp |
chain | La cadena de iptables a la que se deben agregar las reglas de fail2ban. El estándar es INPUT . | cadena =ENTRADA |
Etiquetas de acción | Las etiquetas de acción son marcadores de posición que se pueden usar en actionban , actionunban y actioncheck . | |
ip | La dirección IPv4 que se prohibirá. | |
failures | El número de intentos fallidos contados. | |
time | La marca de tiempo de Unix (segundos) de la prohibición. | |
matches | Las entradas encadenadas de las líneas del archivo de registro que conducen a la prohibición. Muchos caracteres de shell se escapan. |
Resumen de las opciones | ||
entrada | descripción | ejemplo |
[Definition] | ||
failregex | Con la ayuda de esta expresión regular, se buscan aciertos en los archivos de registro. La etiqueta es HOST disponible aquí,que se usa como parte de la expresión regular y contiene el nombre de host o la dirección IP. Fail2ban determina automáticamente la distinción entre la dirección IP y el nombre de host. | failregex =^%(__prefix_line)sFAIL:\S+ dirección de= ^%(__prefix_line)sFAIL:\S+ libwrap from= |
ignoreregex | Aquí se pueden definir excepciones, incluso si fueran válidas para el error regular anterior. ignoreregex admite interpolación de cadenas para que pueda usar sus propias variables con %(variablenname)s . | ignoreregex = |
[INCLUDES] | ||
before | Usar para hacer que un archivo se lea antes que el establecido. Un ejemplo es common.conf | antes =común.conf |
after | El archivo se lee después del establecido | después =ejemplo_después.local |
ejemplo | Después de integrar common.conf es _daemon disponible.Consulte /etc/fail2ban/filter.d/common.conf para más detalles. | _daemon =xinetd |
Resumen de las opciones | ||
entrada | descripción | ejemplo |
[DEFAULT] | ||
ignoreip | Lista separada por espacios de direcciones IP o redes que se ignorarán. | ignoreip = 127.0.0.1/8 192.168.1.33 |
bantime | Tiempo de prohibición en segundos. Un valor negativo es una prohibición permanente. | bantime = 86400 |
findtime | El número de segundos después de los cuales el contador de maxretry es restablecer. | findtime = 660 |
maxretry | El número máximo de intentos fallidos antes de que fail2ban prohíba la IP. | maxretry = 2 |
backend | El backend, como systemd, se puede configurar aquí. El valor predeterminado es auto (recomendado). | backend = systemd |
usedns | Configuración para el comportamiento de búsqueda inversa de fail2ban. Los valores posibles son yes , no y warn .Esto último significa que las entradas con nombres de host dan una advertencia en el archivo de registro, lo que puede generar una gran cantidad de entradas. | usedns = warn |
[myJail] | El nombre de la cárcel se puede asignar aquí. | [ssh] |
enabled | (De-) activa la cárcel | enabled = true |
port | Definición de puerto, puede ser numérica. Los valores múltiples están separados por comas. | port = ssh |
filter = sshd | Nombre del archivo de filtro | /etc/fail2ban/filter.d/sshd.conf |
logpath | El archivo de registro a monitorear, que se verifica para el filtro. | logpath = /var/log/auth.log |
maxretry, bantime,... | También se pueden definir diferentes valores para las opciones predeterminadas. | maxretry = 3 |