Fail2ban es un demonio del sistema para proteger servidores de inicios de sesión maliciosos y ataques de fuerza bruta. Fail2ban es un marco IPS (Software de prevención de intrusiones) de código abierto escrito en Python y es extremadamente configurable. Funciona como un servicio de demonio que monitoreará los archivos de diario y registro de SystemD y luego buscará cualquier intento fallido de autenticación. Cuando la autenticación fallida alcanza el número máximo de X, fail2ban bloqueará automáticamente la dirección IP utilizando el software de firewall.
Si es VPS (servidor privado virtual) o propietario de un servidor dedicado, debería considerar instalar fail2ban en todos sus servidores. Le ayudará a proteger algunos servicios básicos como SSH y FTP de ataques maliciosos de fuerza bruta. Además, fail2ban es muy útil, fácil de configurar y flexible.
En esta guía, aprenderá cómo instalar fail2ban en Rocky Linux, configurar fail2ban con firewalld y proteger el servicio SSH contra ataques de fuerza bruta.
Requisitos
- Un usuario con privilegios de sudo root.
Configuración del cortafuegos
Firewalld es el software de firewall predeterminado en Rocky Linux. Se instala automáticamente durante la instalación de Rocky Linux, pero no está activado de forma predeterminada.
1. Ejecute el siguiente comando para asegurarse de que el paquete firewalld esté disponible en su sistema.
sudo dnf info firewalld
Obtendrá un resultado similar al siguiente.
Como se ve en la captura de pantalla, el paquete firewalld aparece como "Paquetes instalados ".
2. Luego, inicie el servicio firewalld usando el siguiente comando.
sudo systemctl start firewalld
3. Ahora habilite el servicio firewalld para que se ejecute automáticamente en cada arranque del sistema.
sudo systemctl enable firewalld
Y obtendrá el siguiente resultado.
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
4. Después de eso, verifique el estado del servicio de firewalld usando el siguiente comando.
sudo systemctl status firewalld
Y obtendrá el siguiente resultado.
Como se ve, el servicio firewalld está activo y ejecutándose.
5. Opcionalmente, puede verificar el estado del servicio firewalld usando el comando firewall-cmd. El firewall-cmd es la interfaz principal para interactuar con firewalld. El comando firewall-cmd es una utilidad para administrar reglas de firewalld, le permite agregar reglas, eliminar reglas, verificar el estado, etc.
Ejecute el comando firewall-cmd a continuación para verificar el estado del servicio firewalld.
sudo firewall-cmd --state
Si su firewalld está activo, obtendrá el resultado como "en ejecución ". De lo contrario, obtendrá el resultado como "no se está ejecutando ".
Ahora ejecute el siguiente comando firewall-cmd para comprobar todas las reglas de firewall que se están aplicando actualmente.
sudo firewall-cmd --list-all
Obtendrá un resultado similar al siguiente.
Agregando repositorio EPEL a Rocky Linux
Antes de instalar fail2ban, debe agregar EPEL (Paquetes adicionales para Enterprise Linux ) repositorio a su sistema.
1. Ahora ejecute el siguiente comando para instalar el repositorio EPEL.
sudo dnf install epel-release
Escribe "y" para instalar y continuar.
2. Cuando se complete la instalación, verifique todos los repositorios disponibles en su sistema usando el siguiente comando.
sudo dnf repolist
Ahora verá el resultado como se muestra a continuación.
Como se ve, el repositorio EPEL está disponible y activo en el sistema. Ahora, continuemos con la instalación de fail2ban.
Instalando Fail2ban en Rocky Linux
1. Para instalar fail2ban, ejecute el siguiente comando.
sudo dnf install fail2ban fail2ban-firewalld
Escribe "y" para confirmar la instalación y presione "Enter " para continuar.
Como en la línea de comandos, también está instalando el paquete adicional "fail2ban-firewalld". Permitirá que fail2ban manipule las reglas del cortafuegos.
2. Cuando se complete la instalación, inicie el servicio fail2ban usando el siguiente comando.
sudo systemctl start fail2ban
3. Después de eso, ejecute el siguiente comando para permitir que el servicio fail2ban se inicie automáticamente en cada arranque del sistema.
sudo systemctl enable fail2ban
4. Ahora, verifique los servicios de estado de fail2ban ejecutando el siguiente comando.
sudo systemctl status fail2ban
Y obtendrá el servicio fail2ban activo y ejecutándose con la configuración predeterminada que se muestra a continuación.
Configuración de Fail2ban
Ahora configurará fail2ban y habilitará fail2ban para que funcione con el firewalld.
1. Copie la configuración predeterminada de fail2ban de "jail.conf" a "jail.local " usando el siguiente comando.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2. Luego, edite la configuración de fail2ban usando el comando del editor nano a continuación.
sudo nano /etc/fail2ban/jail.local
Debajo de "[DEFAULT] " sección, verifique las configuraciones a continuación.
[DEFAULT]
....
bantime = 1h
findtime = 1h
maxretry = 5
Opciones que debes conocer.
- [DEFAULT] =Todas las configuraciones de esta sección se aplicarán como configuración predeterminada global.
- bantime =Número de veces que x dirección IP será baneada. Admite el formato de día, minuto u horas. Para este ejemplo, el host o la dirección IP se prohibirán durante "1 hora" después de los intentos fallidos de autenticación máxima.
- findtime =La dirección IP será bloqueada si falla la autenticación máxima durante el último "findtime".
- maxretry =Cuando la dirección IP tiene el número X de error de inicio de sesión maxrtry, entonces la IP será prohibida. Para este ejemplo, la dirección IP será bloqueada después de 5 intentos fallidos de autenticación.
Ajuste bantime, findtime y maxrety según sus necesidades, luego presione "Ctrl+x" y escriba "y", luego presione "Enter" para guardar la configuración.
3. La configuración predeterminada de fail2ban utiliza iptables para el bloqueo. Para permitir que fail2ban use firewalld para bloquear, copie la configuración "00-firewalld.conf " a "00-firewalld.local " usando el siguiente comando.
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Esta configuración "00-firewalld.conf " es parte de "fail2ban-firewalld " paquete.
4. Ahora reinicie el servicio fail2ban para aplicar nuevas configuraciones usando el siguiente comando.
sudo systemctl restart fail2ban
Protección del servicio SSH con Fail2ban
De forma predeterminada, fail2ban no bloquea ninguna dirección IP, hasta que habilite la configuración de la cárcel para cada servicio que desee proteger. Además, la configuración de la cárcel anulará la configuración predeterminada en "jail.local". La configuración de la cárcel estará disponible en el directorio "/etc/fail2ban/jail.d".
1. Cree una nueva configuración de cárcel para el servicio SSH usando el siguiente comando.
sudo nano /etc/fail2ban/jail.d/sshd.local
Ahora pegue la siguiente configuración.
[sshd]
enabled = true
# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3
Como se ve, la configuración anula el "bantime " y "reintento máximo " opciones para la cárcel "sshd ".
Presiona "Ctrl+x" y escriba "Y " luego presione "Entrar " para guardar la nueva configuración de la cárcel.
2. Para aplicar la nueva configuración, reinicie el servicio fail2ban con el siguiente comando.
sudo systemctl restart fail2ban
3. Después de eso, verifique el estado de fail2ban usando el comando fail2ban-client. El fail2ban-cliente es una línea de comando para administrar el servidor de control fail2ban.
Ahora ejecute el siguiente comando fail2ban-client para verificar la configuración de la cárcel.
sudo fail2ban-client status
Y obtendrá un resultado similar al siguiente.
El fail2ban se está ejecutando con 1 jail nombre activo "sshd ".
Para verificar la configuración de una cárcel específica, puede usar el botón "get " opción seguida del nombre de la cárcel, luego las opciones que desea verificar.
Verifique la configuración "maxretry" para jail "sshd" usando el siguiente comando.
sudo fail2ban-client get sshd maxretry
Y verá que la salida es "3 ", haga coincidir el valor en la configuración "sshd.local".
A continuación, verifique la acción de prohibición predeterminada para la cárcel "sshd" usando el siguiente comando.
sudo fail2ban-client get sshd actions
Y verá que el resultado es "firewallcmd-rich-rules ", haga coincidir la configuración global de fail2ban en "00-firewalld.local".
Verificar la instalación de Fail2ban y Firewalld
Para verificar la instalación de fail2ban, verifique el estado completo de la cárcel (para esta guía es sshd jail) y verifique las reglas de firewalld generadas por fail2ban.
A modo de prueba, a continuación se muestra la captura de pantalla después de intentar conectarse a un servidor SSH con una contraseña incorrecta. Después de alcanzar el maxretry "3 " veces, el servidor interrumpe la conexión.
1. Ejecute el siguiente comando para verificar el estado de una cárcel específica (este ejemplo, sshd jail).
sudo fail2ban-client status sshd
Y obtendrá un resultado similar al siguiente.
Como se ve, la cárcel sshd tiene 1 dirección IP prohibida. Si está en un VPS activo o en un servidor dedicado, verá muchas más direcciones IP.
2. El fail2ban generará reglas enriquecidas de cortafuegos para bloquear direcciones IP. Las reglas enriquecidas de firewalld son una capacidad de filtrado avanzada en firewalld.
Ejecute el siguiente comando para mostrar las reglas enriquecidas de firewall generadas por fail2ban.
firewall-cmd --list-rich-rules
Y obtendrá un resultado similar al siguiente.
Dirección IP de Uban en Fail2ban
Para desbanear la dirección IP de fail2ban, puede usar el comando fail2ban-client.
1. Ejecute el siguiente comando fail2ban-client para desbanear la dirección IP "192.168.1.10 ".
sudo fail2ban-client unban 192.168.1.10
Y la dirección IP se eliminará de la lista prohibida en fail2ban.
A continuación, ejecute el siguiente comando para asegurarse de que la dirección IP se elimine de la base de datos fail2ban (para este ejemplo, jail sshd).
sudo fail2ban-client status sshd
Y obtendrá que la dirección IP se elimine de la "Lista de IP prohibidas " sección.
Conclusión
¡Felicidades! ha instalado con éxito el marco IPS fail2ban en Rocky Linux 8.4. Y para el siguiente paso, puede buscar otra configuración de cárcel para asegurar otros servicios como el servidor FTP, phpMyAdmin, WordPress, etc.