Fail2ban es una solución de software de prevención de intrusiones gratuita y de código abierto que protege los servidores de ataques de inicio de sesión de fuerza bruta. Supervisa varios archivos de registro de SSH y otras aplicaciones web, y cada vez que se detecta una autenticación fallida y alcanza los números máximos, Fail2Ban bloqueará automáticamente la dirección IP utilizando las iptables de Firewalld. Fail2Ban es simple, práctico, fácil de configurar y flexible.
En esta guía, le mostraremos cómo instalar Fail2Ban con firewalld en Rocky Linux 8.
Requisitos
- Un servidor que ejecuta Rocky Linux 8 en Atlantic.Net Cloud Platform
- Una contraseña de root configurada en su servidor
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Rocky Linux 8 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:configurar el cortafuegos
dnf info firewalld
Si está instalado, obtendrá el siguiente resultado:
Last metadata expiration check: 0:34:46 ago on Wednesday 17 November 2021 09:52:51 AM UTC. Installed Packages Name : firewalld Version : 0.8.2 Release : 7.el8_4 Architecture : noarch Size : 1.9 M Source : firewalld-0.8.2-7.el8_4.src.rpm Repository : @System From repo : baseos Summary : A firewall daemon with D-Bus interface providing a dynamic firewall URL : http://www.firewalld.org License : GPLv2+ Description : firewalld is a firewall service daemon that provides a dynamic customizable : firewall with a D-Bus interface. Available Packages Name : firewalld Version : 0.9.3 Release : 7.el8 Architecture : noarch Size : 501 k Source : firewalld-0.9.3-7.el8.src.rpm Repository : baseos Summary : A firewall daemon with D-Bus interface providing a dynamic firewall URL : http://www.firewalld.org License : GPLv2+ Description : firewalld is a firewall service daemon that provides a dynamic customizable : firewall with a D-Bus interface.
A continuación, verifique si Firewalld se está ejecutando o no.
systemctl status firewalld
Debería ver que el servicio Firewalld está enmascarado:
● firewalld.service Loaded: masked (Reason: Unit firewalld.service is masked.) Active: inactive (dead)
Por lo tanto, deberá desenmascarar el servicio Firewalld. Puede desenmascararlo usando el siguiente comando:
systemctl unmask firewalld
A continuación, inicie el servicio Firewalld y habilítelo para que se inicie al reiniciar el sistema:
systemctl start firewalld systemctl enable firewalld
En este punto, Firewalld está instalado y ejecutándose en su sistema. Ahora puede continuar con el siguiente paso.
Paso 3:Instalar Fail2Ban
dnf install epel-release -y
A continuación, instale el paquete Fail2Ban con el siguiente comando:
dnf install fail2ban fail2ban-firewalld -y
Una vez que Fail2Ban esté instalado, inicie y habilite el servicio Fail2Ban usando el siguiente comando:
systemctl start fail2ban systemctl enable fail2ban
Puede verificar la versión de Fail2Ban usando el siguiente comando:
fail2ban-client --version
Salida de muestra:
Fail2Ban v0.11.2
Paso 4:configurar Fail2Ban
Primero, cambie el nombre del archivo de configuración de Firewalld para Fail2Ban usando el siguiente comando:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
A continuación, copie el archivo de configuración predeterminado de Fail2Ban:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
A continuación, edite el archivo jail.local:
nano /etc/fail2ban/jail.local
Encuentra las siguientes líneas:
banaction = iptables-multiport banaction_allports = iptables-allports
Y reemplácelos con las siguientes líneas:
banaction = firewallcmd-rich-rules[actiontype=] banaction_allports = firewallcmd-rich-rules[actiontype=]
Guarde y cierre el archivo, luego reinicie Fail2Ban para aplicar los cambios:
systemctl restart fail2ban
En este punto, Fail2Ban está configurado para funcionar con Firewalld.
Paso 5:Servicio SSH seguro con Fail2Ban
Para proteger el servicio SSHD, edite el archivo jail.local:
nano /etc/fail2ban/jail.local
Busque la sección [sshd] y actívela agregando las siguientes líneas:
[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s bantime = 10m findtime = 10m maxretry = 5
Guarde y cierre el archivo, luego reinicie Fail2Ban para aplicar los cambios:
systemctl restart fail2ban
Ahora puede verificar el estado de Fail2Ban usando el siguiente comando:
systemctl status fail2ban
Obtendrá el siguiente resultado:
● fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-17 10:34:49 UTC; 2s ago Docs: man:fail2ban(1) Process: 21154 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS) Process: 21185 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 21186 (fail2ban-server) Tasks: 5 (limit: 11411) Memory: 14.6M CGroup: /system.slice/fail2ban.service └─21186 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Nov 17 10:34:49 rockylinux systemd[1]: Starting Fail2Ban Service... Nov 17 10:34:49 rockylinux systemd[1]: Started Fail2Ban Service. Nov 17 10:34:49 rockylinux fail2ban-server[21186]: Server ready
Paso 6:verificar el cortafuegos Fail2Ban
En este punto, Fail2Ban está configurado para proteger el servicio SSH. Ahora es el momento de comprobar si Fail2Ban está funcionando.
Primero, verifique la configuración de la cárcel usando el siguiente comando:
fail2ban-client status
Debería ver el siguiente resultado:
Status |- Number of jail: 1 `- Jail list: sshd
Ahora, vaya a la máquina remota e intente conectarse al servidor SSH con una contraseña incorrecta. Después de alcanzar el número máximo de reintentos (5 veces), Fail2Ban bloqueará su dirección IP.
Ahora, verifique la dirección IP bloqueada por Fail2Ban usando el siguiente comando:
fail2ban-client status sshd
Deberías obtener el siguiente resultado:
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 6 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 27.61.171.115
Puede verificar las reglas agregadas por Firewalld con el siguiente comando:
firewall-cmd --list-rich-rules
Obtendrá el siguiente resultado:
rule family="ipv4" source address="27.61.171.115" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
También puede consultar los registros de Fail2Ban para obtener más información:
tail -f /var/log/fail2ban.log
Salida de muestra:
2021-11-17 10:37:21,837 fail2ban.filter [21186]: INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:21 2021-11-17 10:37:21,859 fail2ban.actions [21186]: NOTICE [sshd] Ban 27.61.171.115 2021-11-17 10:37:27,220 fail2ban.filter [21186]: INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:27
Conclusión
¡Felicidades! Ha instalado correctamente Fail2Ban con Firewalld. Ahora puede implementar Fail2Ban en su servidor para protegerlo contra ataques de inicio de sesión de fuerza bruta. ¡Pruébelo en su cuenta de alojamiento VPS de Atlantic.Net!