Lo más importante en la lista de todos los equipos de operaciones de TI es garantizar que los servidores estén protegidos contra usuarios no autorizados o scripts maliciosos. Hay una serie de soluciones que puede aplicar para evitar ataques e infracciones. Entre ellos se encuentra la implementación de la herramienta informática Fail2ban.
Fail2ban es una medida de detección de intrusos de código abierto que mitiga los ataques de fuerza bruta dirigidos a varios servicios, como SSH y VSFTPD, por mencionar algunos. Viene con una variedad de filtros, incluido SSH, que puede personalizar para actualizar las reglas del firewall y bloquear los intentos de inicio de sesión SSH no autorizados.
La utilidad fail2ban supervisa los archivos de registro del servidor en busca de intentos de intrusión y bloquea la dirección IP del usuario después de un número predefinido de intentos fallidos durante un período específico. La IP del usuario se coloca en una ‘cárcel’ que se puede configurar, habilitar o deshabilitar en el archivo de configuración /etc/fail2ban/jail.conf. De esta manera, ayuda a proteger su servidor Linux de accesos no autorizados y, más específicamente, de botnets y scripts maliciosos.
¿Qué comprende una cárcel? Una cárcel se compone de los siguientes elementos clave:
- El archivo de registro que se va a analizar.
- Filtros que se aplicarán en el archivo de registro.
- La acción a tomar cuando el filtro coincide
- Parámetros adicionales para profundizar en el tipo de partidos. Por ejemplo, maxtry (intento máximo) y bantime (tiempo de prohibición), etc.
En este tutorial, lo guiaremos a través de la instalación y configuración de Fail2ban en RHEL 8/CentOS 8.
Paso 1) Instalar el Repositorio EPEL
Primero, inicie sesión en su servidor e instale el paquete EPEL (Extra Package for Enterprise Linux) de la siguiente manera.
Para CentOS 8
$ sudo dnf install -y epel-release
Para RHEL 8
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
Paso 2) Instalar Fail2ban
Para instalar Fail2ban, ejecute el comando simple a continuación:
$ sudo dnf install -y fail2ban
Paso 3) Configuración de Fail2ban
Por diseño, fail2ban analiza los archivos de registro e intenta hacer coincidir el failregex que se especifica en los filtros. Los filtros detectan intentos de autenticación fallidos para un servicio específico, por ejemplo, intentos de inicio de sesión SSH usando expresiones regulares: expresiones regulares. Cuando se alcanza el número máximo de veces ‘maxtry’ en las entradas del registro, se activa una acción.
De forma predeterminada, esto sucede después de 3 intentos fallidos de autenticación y el usuario es baneado o encarcelado durante 10 minutos. Estos parámetros se pueden configurar fácilmente en el archivo /etc/fail2ban/jail.conf, que es el archivo de configuración global.
Todos los archivos de configuración importantes se encuentran en el directorio /etc/fail2ban/.
Los filtros se almacenan en el directorio /etc/fail2ban/filter.d. Hay docenas de filtros para varios servicios, incluidos SSH, Webmin, postfix y mucho más.
/etc/fail2ban/jail.conf es el archivo de configuración principal. Sin embargo, no se recomienda modificar directamente este archivo porque, tal como se explica en el archivo, es probable que las configuraciones se sobrescriban o mejoren en una actualización de distribución posterior.
Una solución consiste en crear un archivo jail.local en el directorio /etc/fail2ban/jail.d y agregar sus configuraciones personalizadas para los servicios deseados que desea proteger.
NOTA: Los parámetros definidos en el archivo jail.local anularán el archivo jail.conf. Lo que hace que sea aún más preferible dejar intacto el archivo de configuración principal.
Para fines de demostración, vamos a crear un archivo jail que protegerá las conexiones SSH.
$ sudo vim /etc/fail2ban/jail.local
Aquí está el archivo de configuración de muestra.
[DEFAULT] ignoreip = 192.168.2.105 bantime = 86400 findtime = 300 maxretry = 3 banaction = iptables-multiport backend = systemd [sshd] enabled = true
Analicemos los parámetros y veamos qué representan.
- ignoreip: define una lista de direcciones IP o nombres de dominio que no deben prohibirse.
- bantime: como sugiere el nombre, esto especifica la duración del tiempo en que un host remoto queda prohibido en segundos.
- maxretry: este es el número de intentos de inicio de sesión fallidos antes de que el host sea bloqueado/prohibido.
- findtime: tiempo de duración en segundos durante el cual se bloqueará un host después de lograr los intentos máximos.
- banaction – La acción de prohibir.
- backend: el sistema utilizado para obtener archivos de registro
Nuestra configuración implica lo siguiente:
Cuando una dirección IP registra 3 intentos de autenticación fallidos en los últimos 5 minutos, se prohibirá durante 24 horas con la excepción de un host con IP 192.168.2.105.
Guarde y salga del archivo de configuración.
Paso 4) Inicie y habilite Fail2ban
Una vez finalizada la configuración del archivo jail para SSH, vamos a iniciar y habilitar fail2ban en el arranque. Por lo general, el servicio no se ejecuta en la instalación
Para iniciar y habilitar fail2ban, ejecute el comando:
$ sudo systemctl start fail2ban $ sudo systemctl enable fail2ban
Para revelar el estado de fail2ban, invoque el siguiente comando:
$ sudo systemctl status fail2ban
Esta vez, podemos observar que fail2ban se está ejecutando como se esperaba.
Ahora procedamos y veamos cómo funciona Fail2ban.
Paso 4) Fail2ban en acción
Vayamos ahora un paso más allá y veamos a Fail2ban en acción. Para vigilar las direcciones IP prohibidas, la utilidad fail2ban-client resulta útil. Por ejemplo, para obtener el estado de ssh jail, ejecute el comando:
$ sudo fail2ban-client status sshd
Por el momento, no hay entradas de IP prohibidas porque aún no hemos iniciado sesión de forma remota en el servidor.
Vamos a intentar iniciar sesión desde el cliente Putty SSH desde una PC con Windows con una IP diferente a la especificada en el archivo de configuración jail.local.
Desde la salida, podemos ver claramente que no podemos acceder al servidor. Cuando verificamos el estado nuevamente, encontramos que una IP ha sido prohibida como se muestra.
Para eliminar la IP de la lista prohibida, desbanéela de la siguiente manera.
$ sudo fail2ban-client unban 192.168.2.101
Para recopilar más información sobre las reglas y políticas de fail2ban, visite las páginas de manual de jail.conf como se muestra
$ man jail.conf
¿Algún comentario o comentario? No dude en contactarnos y nos comunicaremos con usted.
Leer también: 12 ejemplos de comandos IP para usuarios de Linux