Fail2ban es un sistema de prevención de intrusiones gratuito y de código abierto escrito en Python. Se utiliza para proteger su sistema contra ataques de fuerza bruta. Supervisa continuamente los archivos de registro SSH (y otros) para los intentos de autenticación, después de un número específico de intentos de contraseña incorrecta, Fail2Ban prohíbe la dirección IP del cliente. Se puede utilizar para proteger varios servicios, incluidos SSH, vsftpd, Apache y Webmin.
En este tutorial, le mostraré cómo instalar el firewall Fail2Ban en Alma Linux 8.
Requisitos
- Un servidor que ejecuta Alma Linux 8.
- Se configura una contraseña raíz en el servidor.
Verificar la instalación del cortafuegos
De forma predeterminada, el paquete Firewalld viene preinstalado en Alma Linux 8. Primero, deberá verificar si se está ejecutando o no. Puedes comprobarlo con el siguiente comando:
systemctl status firewalld
Si firewalld no se está ejecutando, obtendrá el siguiente resultado:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Ahora, inicie el servicio firewalld con el siguiente comando:
systemctl start firewalld
Puede verificar el estado del firewalld usando el siguiente comando:
systemctl status firewalld
Debería ver el siguiente resultado:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago Docs: man:firewalld(1) Main PID: 7214 (firewalld) Tasks: 2 (limit: 23696) Memory: 27.9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon... Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
Ahora, enumere todos los servicios configurados por firewalld usando el siguiente comando:
firewall-cmd --list-all
Debería ver el siguiente resultado:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Instalar Fail2Ban
De forma predeterminada, el paquete Fail2Ban no está disponible en el repositorio predeterminado de Alma Linux. Por lo tanto, deberá instalarlo desde el repositorio de EPEL. Puede instalar el repositorio EPEL con el siguiente comando:
dnf install epel-release -y
Una vez que se instala el repositorio EPEL, puede instalar el firewall Fail2Ban con el siguiente comando:
dnf install fail2ban fail2ban-firewalld -y
Una vez completada la instalación, inicie y habilite el servicio Fail2Ban con el siguiente comando:
systemctl start fail2ban
systemctl enable fail2ban
Puede verificar el estado del servicio fail2ban ejecutando el comando:
systemctl status fail2ban
Debería ver el siguiente resultado:
? fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago Docs: man:fail2ban(1) Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 7840 (fail2ban-server) Tasks: 3 (limit: 23696) Memory: 10.8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service... Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service. Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
Configurar Fail2Ban
El archivo de configuración principal de Fail2Ban se encuentra en /etc/fail2ban/jail.conf . Es una buena idea crear una copia del archivo de configuración principal. Puedes crearlo con el siguiente comando:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
De forma predeterminada, Fail2Ban utiliza el cortafuegos Iptables. Para habilitar la compatibilidad con firewalld, ejecute el siguiente comando:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
A continuación, reinicie el servicio Fail2Ban para aplicar los cambios:
systemctl restart fail2ban
SSH seguro con Fail2Ban
De forma predeterminada, Fail2Ban no está configurado para bloquear direcciones IP remotas. Deberá configurar el archivo de configuración de la cárcel Fail2Ban para cada servicio que desee proteger.
Para proteger el servicio SSH, cree un archivo de configuración de cárcel para SSH con el siguiente comando:
nano /etc/fail2ban/jail.d/sshd.local
Agregue las siguientes líneas:
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. [sshd] enabled = true bantime = 2h maxretry = 3
Guarde y cierre el archivo cuando haya terminado, luego reinicie el servicio SSH para aplicar los cambios:
systemctl restart fail2ban
Ahora puede verificar la configuración de la cárcel con el siguiente comando:
fail2ban-client status
Obtendrá la cárcel configurada en el siguiente resultado:
Status |- Number of jail: 1 `- Jail list: sshd
Para verificar la cárcel SSH en busca de cualquier IP prohibida, ejecute el siguiente comando:
fail2ban-client status sshd
Obtendrá toda la lista de IP prohibidas en el siguiente resultado:
Status for the jail: sshd |- Filter | |- Currently failed: 6 | |- Total failed: 15 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 96.9.67.48 43.154.142.8
Si desea desbanear la dirección IP manualmente, ejecute el siguiente comando:
fail2ban-client unban remote-ip-address
Conclusión
En la guía anterior, explicamos cómo instalar Fail2Ban en Alma Linux 8. También explicamos cómo usar Fail2Ban para proteger el servicio SSH. Ahora puede implementar Fail2Ban en el entorno de producción para proteger su sistema de ataques de fuerza bruta.