¿Alguna vez creó un servidor web, abrió la terminal y notó la cantidad de intentos de inicio de sesión mientras estaba desconectado? Los atacantes utilizan un método llamado "fuerza bruta". La fuerza bruta es un método para obtener acceso a un servidor web ingresando contraseñas aleatorias, utilizando un script, con la esperanza de obtener acceso.
Para ayudar a prevenir esto, usamos una herramienta llamada Fail2Ban.
¿Qué es Fail2Ban?
Fail2Ban es un marco de software de prevención de intrusiones que protege los servidores informáticos de los ataques de fuerza bruta. Escrito en el lenguaje de programación Python, puede ejecutarse en sistemas POSIX que tengan una interfaz para un sistema de control de paquetes o un firewall instalado localmente, por ejemplo, iptables o TCP Wrapper. — Wikipedia
Instalando Fail2Ban
En esta guía, cubriremos la instalación y configuración de Fail2Ban en un servidor web Ubuntu 20.04.
Paso 1:actualice el sistema e instale Fail2Ban
Ejecutemos nuestro comando de actualización.
$ sudo apt update && sudo apt upgrade -y
Ahora instalemos Fail2Ban.
$ sudo apt install fail2ban
Una vez instalado, Fail2Ban debería iniciarse automáticamente. Por si acaso, verifiquemos su estado usando el siguiente comando para estar seguros.
$ sudo systemctl status fail2ban
Nuestra instalación de Fail2Ban está instalada y activa. :)
Paso 2:configurar Fail2Ban
Al instalar Fail2Ban, el script crea dos archivos de configuración, /etc/fail2ban/fail.conf
y /etc/fail2ban/fail.d/defaults-debian.conf
. Cualquier cambio en estos archivos tiene la posibilidad de sobrescribirse durante las actualizaciones del paquete.
Fail2ban lee los archivos de configuración en este orden. El .local
archivo anula la configuración de .cong
archivo.
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
La forma más eficiente de configurar Fail2Ban será copiando el contenido de jail.conf
a jail.local
luego modifique el archivo local.
Paso 2.1 — Crear nuestro archivo local y configurar el servidor
Ahora copiemos nuestro jail.conf
archivo a nuestro jail.local
archivo.
$ sudo cp /etc/fail2ban/jail.{conf,local}
Después de ingresar este comando, la terminal abrirá inmediatamente una nueva línea.*
Configure el servidor Fail2Ban abriendo el jail.local
archivo con nano o su editor de texto favorito.
$ sudo nano /etc/fail2ban/jail.local
Ahora deberías estar en jail.local
y vea los comentarios que describen lo que hace cada configuración.
Paso 2.2:Lista blanca de direcciones IP
Las direcciones IP, los rangos y los hosts que desea excluir de la prohibición deben agregarse a ignoreip
directiva.
Descomente (elimine el símbolo #) la línea ignoreip y agregue sus direcciones IP separadas por un espacio.
Paso 2.3:configuración de reglas de prohibición
Unas pocas líneas debajo del comentario ignoreip, encontrará bantime
, findtime
y maxretry
.
bantime
es el período de tiempo que la IP está prohibida. El tiempo de prohibición predeterminado es de 10 minutos. Lo más probable es que desee un bantime
más prolongado. . Puede prohibir a un usuario de forma permanente mediante el uso de un número negativo. Si no usa un sufijo (es decir, 10 en lugar de 10d), el tiempo será en segundos. Puede configurar este tiempo para la duración que desee, usaremos 10d.
bantime = 10d
findtime
es el tiempo que transcurre entre el número de fallas antes de que se prohíba la IP. Esto es diferente de maxretry
ya que esto no bloquea en función de la cantidad de intentos de inicio de sesión, en lugar de la cantidad sucesiva.
finetime = 5m
maxretry
es el número de inicios de sesión fallidos antes de que se prohíba la IP. Nuevamente, puede configurar esto a su gusto.
maxretry = 5
Paso 2.4:Notificaciones por correo electrónico
Fail2Ban se puede configurar para enviar alertas por correo electrónico cuando se ha prohibido una IP. Debe tener SMTP configurado en su servidor web. El primer paso es que necesitamos cambiar el comentario de acción.
action = %(action_MW)s
Esto prohíbe la IP y envía una alerta por correo electrónico con un informe whois. Si desea incluir registros en el correo electrónico, use %(action_MWl)s
en su lugar.
También deberá ajustar las direcciones de correo electrónico de envío y recepción para que el sistema le avise correctamente.
destemail = [email protected]
sender = [email protected]
Paso 2.5:cárceles
Una cárcel en Fail2Ban es una combinación de un filtro y una o varias acciones. Un filtro define una expresión regular que coincide con un patrón correspondiente a un intento de inicio de sesión fallido u otra actividad sospechosa. Las acciones definen comandos que se ejecutan cuando el filtro detecta una dirección IP abusiva. — Plesk
Fail2Ban viene con una variedad de cárceles para diferentes servicios. Incluyendo la opción de crear los tuyos propios.
Una instalación predeterminada de Fail2Ban tiene una cárcel ssh habilitada. Para habilitar una cárcel, deberá agregar enabled = true
después del título de la cárcel. Usando OpenWebMail como ejemplo:
[openwebmail]
enabled = true
port = http,https
logpath = /var/log/openwemail.log
Si desea establecer reglas de prohibición para un servicio, puede hacerlo en el servicio.
[sshd]
enabled = true
maxretry = 5
findtime = 5m
bantime = 10d
ignoreip = 192.169.0.1/8 12.34.56.78
Puede editar filtros en /etc/fail2ban/filter.d
directorio.
Paso 3:Reiniciar Fail2Ban
Después de cada instalación y configuración finalizadas, es mejor reiniciar el servicio para que los cambios surtan efecto.
$ sudo systemctl restart fail2ban
Paso 4:línea de comando Fail2ban
Usando la herramienta fail2ban-client
puede realizar cambios con el script Fail2Ban. Para usar la línea de comando, use:
$ sudo fail2ban-client
[seguido de tu comando]
Para ver las opciones disponibles, use:
$ sudo fail2ban-client -h
Aquí hay algunos comandos útiles:
Desbloquear dirección IP:
$ sudo fail2ban-client set sshd unbanip 12.34.56.789
Prohibir una dirección IP:
$ sudo fail2ban-client set sddh banip 12.34.56.789