GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar y configurar Fail2Ban en CentOS 8 y Fedora 33

Fail2Ban es una utilidad de análisis de registro que analiza los archivos de registro de varios procesos y prohíbe las direcciones IP que generan demasiadas fallas de contraseña. Cuando se encuentra un intento de inicio de sesión, Fail2Ban agregará una nueva regla a iptables para bloquear la dirección IP del atacante, ya sea de manera temporal o permanente. También puede alertarlo por correo electrónico sobre lo mismo.

Se centra principalmente en la detección de intrusiones a través de SSH, pero se puede configurar para que funcione con cualquier servicio que utilice archivos de registro.

Requisitos

  1. Un servidor basado en Fedora 33 o CentOS 8 con un usuario no root con privilegios sudo.

  2. Instale el editor Nano porque eso es lo que usaremos.

    $ sudo dnf install nano -y
    

Instalar Fail2Ban

Para instalar Fail2Ban en CentOS 8, primero debe instalar el repositorio EPEL Yum.

$ sudo dnf install epel-release

Fedora 33 viene con Fail2Ban.

Ejecute el siguiente comando para instalar Fail2Ban tanto en Fedora 33 como en CentOS 8.

$ sudo dnf install fail2ban

Una vez instalado, debemos habilitar el servicio.

$ sudo systemctl enable fail2ban

A continuación, inicie el servicio fail2ban.

$ sudo systemctl start fail2ban

Ahora puede comprobar el estado del servicio para ver si funciona correctamente.

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Configurar Fail2Ban

El servicio Fail2Ban mantiene sus archivos de configuración en el /etc/fail2ban directorio. Encontrará un archivo jail.conf en eso. Este archivo generalmente se anula durante las actualizaciones de paquetes, por lo que no debe editarse.

En su lugar, todas las configuraciones deben hacerse en un nuevo archivo al que llamaremos jail.local . La configuración en estos 2 archivos se puede anular aún más a través de archivos de /etc/fail2ban/jail.d/ directorio.

Las configuraciones se aplican en el siguiente orden:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , Alfabéticamente
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local , Alfabéticamente

jail.conf contiene un [DEFAULT] sección seguida de secciones para servicios individuales. Cualquiera de estas secciones se puede anular definiéndolas en .local archivos.

Configurar jail.local

Crearemos un nuevo jail.local archivo.

$ sudo nano /etc/fail2ban/jail.local

Pegue el siguiente código en él.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Presiona Ctrl + X para cerrar el editor y presiona Y cuando se le solicite guardar el archivo. Esto establece un nuevo bantime predeterminado para todos los servicios, cambia el backend a systemd y habilita el `sshd cárcel.

Reinicie Fail2ban para implementar los nuevos cambios.

$ sudo systemctl restart fail2ban

Podemos confirmar la configuración recién aplicada usando fail2ban-client utilidad.

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

También podemos obtener el estado detallado de cada cárcel específicamente de la siguiente manera.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Más configuraciones

jail.conf proporciona muchas más configuraciones que se pueden personalizar usando /jail.local expediente. A continuación, repasaremos algunos ajustes.

IP de lista blanca

Puede incluir en la lista blanca/ignorar las direcciones IP para que no sean bloqueadas por Fail2ban usando el siguiente código.

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Si desea incluir IP en la lista blanca solo para ciertas cárceles, puede hacerlo a través de fail2ban-client .

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Reemplazar JAIL en el comando anterior con el nombre de la cárcel, desea editar la configuración.

Tiempo de bloqueo y cantidad de reintentos

Hay 3 configuraciones que pueden establecer el tiempo y la cantidad de reintentos para una prohibición.

bantime - es el tiempo en segundos durante el cual una IP está prohibida. Para establecer una prohibición permanente, establezca este valor en un número negativo. El valor predeterminado es 10 minutos o 600 segundos.

findtime - es el tiempo que transcurre entre los intentos de inicio de sesión antes de que se establezca una prohibición. Este valor es siempre un número de segundos. Por ejemplo, si Fail2ban está configurado para prohibir una IP después de 5 intentos fallidos de inicio de sesión, esos 5 intentos deben ocurrir dentro del bantime de 10 minutos establecido. límite.

maxretry - es el número de reintentos desde una sola dirección IP antes de que se imponga una prohibición. El valor predeterminado es 3.

Para personalizar esta configuración, pegue las siguientes líneas en \etc\fail2ban\jail.local archivo bajo el [DEFAULT] sección.

bantime = 3600
findtime = 300
maxretry = 4

Alertas por correo electrónico

Para enviar alertas por correo electrónico, primero deberá instalar un Agente de transferencia de correo (MTA). Para nuestro propósito, instalaremos sendmail .

$ sudo dnf install sendmail

Para recibir el correo electrónico, agregue el siguiente código en \etc\fail2ban\jail.local archivo bajo [DEFAULT] sección.

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemail se refiere a la identificación del correo electrónico de destino, que es la identificación en la que desea recibir los correos electrónicos, sendername se refiere al nombre del remitente, por lo que estamos usando Fail2Ban para ello. mta se refiere al Agente de transferencia de correo que se está utilizando, que es sendmail aquí. Si está utilizando Postfix , luego usa el valor mail para el mta variables.

action se refiere a la acción predeterminada que se lleva a cabo una vez que se detecta una intrusión. El valor predeterminado es %(action_)s que solo banea al usuario. %(action_mw)s prohibirá y enviará un correo electrónico con un informe de Whois; mientras que %(action_mwl)s prohibirá y enviará un correo electrónico con el informe Whois junto con la información de los archivos de registro relevantes. Esto también se puede cambiar según la cárcel.

Configuraciones para cárceles individuales

Como ya sabemos, [DEFAULT] se aplica a todas las Cárceles, es hora de examinar algunas Cárceles específicas y sus configuraciones.

Cárcel SSHD

Ya hemos definido [sshd] anteriormente en nuestro jail.local expediente. Podemos personalizarlo un poco más con el siguiente código.

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

En este caso, estamos usando una variable predefinida ssh para el puerto que es el puerto SSH predeterminado. Si está utilizando un puerto SSH diferente, debe cambiarlo. logpath se refiere a la ubicación del archivo de registro a monitorear. %(ssh_log)s utiliza un valor definido en el archivo de configuración estándar de Fail2ban (/etc/fail2ban/paths-common.conf ).

Cárcel de Nginx

Nginx tiene varios Jails que se pueden usar en Fail2Ban. Por ejemplo, si una parte de su sitio protegida por contraseña es atacada repetidamente, puede usar una sección [nginx-http-auth] en jail.local archivo para eso.

[nginx-http-auth]
enabled = true

También podemos agregar una sección llamada [nginx-botsearch] para detener las solicitudes a carpetas o ubicaciones que no existen.

[nginx-badbots]
enabled  = true

También hay otras cárceles de Nginx, pero no vienen preconfiguradas con Fail2Ban. Deben crearse manualmente y la mayoría de ellos pueden basarse en los de Apache con los que se envía Fail2Ban.

Filtros Fail2Ban y Failregexs

Hay otra configuración en la configuración de Fail2Ban llamada filtros. Los filtros deciden si una línea en el archivo de registro indica una autenticación fallida.

El valor del filtro en el archivo de configuración es una referencia a un archivo ubicado en /etc/fail2ban/filter.d directorio con su .conf extensión eliminada.

Puede ver qué tipo de filtros están disponibles consultando el directorio.

$ ls /etc/fail2ban/filter.d

Verá 2 archivos de registro para Nginx en él; nginx-badbots.conf y nginx-http-auth.conf .

Estos archivos de configuración usan expresiones regulares (regex) para analizar archivos de registro. Estos se llaman Failregexs. Puede personalizar o crear nuevos filtros escribiendo sus propias expresiones regulares. No cubriremos estas expresiones regulares en profundidad porque están fuera del alcance de este tutorial.

Supervisión de registros y firewall de Fail2Ban

Puede verificar el estado de Fail2Ban usando systemctl como se indicó anteriormente.

$ sudo systemctl status fail2ban

Para obtener un poco más de detalles, puede usar journalctl comando.

$ sudo journalctl -b -u fail2ban

También puede usar fail2ban-client para consultar el estado de fail2ban-server o y cárcel individual.

$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name

También puede consultar el archivo de registro de Fail2ban.

$ sudo tail -F /var/log/fail2ban.log

Puede enumerar las reglas actuales configuradas para iptables.

$ sudo iptables -L

También puede enumerar las reglas de iptables en un formato que refleje los comandos necesarios para habilitar esas reglas.

$ sudo iptables -S

Conclusión

Esto concluye nuestro tutorial sobre la instalación y configuración de Fail2Ban en un servidor basado en Fedora 33 o CentOS 8. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar y configurar Fail2ban en CentOS 8

  3. Cómo instalar y configurar Redis 6 en Fedora 34

  4. ¿Cómo instalar y configurar Fail2ban en CentOS 8?

  5. Cómo instalar y configurar CyberPanel en CentOS 8

Cómo instalar y configurar Nagios 4.0.7 en CentOS 7

Cómo instalar y configurar ISPConfig CP en CentOS 7

Cómo instalar y configurar ownCloud en CentOS 7

Cómo instalar y configurar Samba en CentOS 8

Cómo instalar y configurar Fail2ban en CentOS 8

Cómo instalar y configurar HAproxy en CentOS 6