Tutorial para instalar y configurar el servidor, el cliente y los servicios de Fail2ban en el servidor Ubuntu 20.04 o 18.04 LTS Linux.
Los bloggers y desarrolladores que ejecutan y administran sus propios servidores, por supuesto, también son responsables de su seguridad. Si en el mundo de hoy no prestamos atención a la seguridad, existe la posibilidad de que nuestro servidor se convierta en el objetivo de los atacantes y cause daños. Bueno, aunque hay varios WAF en línea, sin embargo, para fortalecer el servidor, hay disponible un programa de código abierto llamado Fail2Ban. Garantiza que la dirección IP de un atacante se bloquee durante un cierto período de tiempo después de varios intentos fallidos y, por lo tanto, evita un número ilimitado de intentos que luego podrían conducir a la búsqueda de la contraseña.
Fail2Ban puede monitorear varios servicios. Esto por supuesto incluye acceso SSH, FTP, correo, etc. Aquí aprendemos los pasos para instalar Fail2ban en Ubuntu 20.04 o 18.04 LTS y su proceso de configuración.
Instalación de Fail2ban en Ubuntu 20.04 o 18.04 LTS
Los paquetes para instalar y configurar Fail2ban están disponibles en el repositorio oficial de Ubuntu 20.04/18.04, por lo que solo necesitamos usar el apt comando 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 de Fail2ban en Ubuntu
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 utiliza 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 |