Instalar Fail2ban en CentOS, Fedora, y derivados

Instalar Fail2ban en CentOS, Fedora, y derivados.

Fail2ban es la herramienta de prevención de intrusiones por excelencia. De código abierto y totalmente configurable es la más utilizada en servidores y sistemas en red a nivel mundial.

Su forma de operar es bastante simple, ya que tan solo escanea los archivos de registro buscando direcciones IP con síntomas maliciosos, por ejemplo demasiados errores al introducir la contraseña.

Al detectar un dirección ip que incumple con su configuración, automáticamente actualiza las reglas del firewall (normalmente iptables o nftables) de manera que sea rechazada. Por defecto, ya viene con filtros preconfigurados para los servicios más comunes, incluido sshd.

En este artículo, vemos cómo instalar y configurar fail2ban en nuestro servidor o VPS. En este articulo usamos como plataforma un CentOS 8 minimal que hemos instalado con netinstall.

 

Instalar Fail2ban en CentOS o Fedora

El paquete fail2ban no está en los repositorios oficiales pero si en el repositorio EPEL, así que lo habilitamos.

dnf install epel-release

o

yum install epel-release

Ahora instalamos Fail2ban.
dnf install fail2ban

o

yum install fail2ban

Instalar Fail2ban

Instalar Fail2ban

 

Configurar Fail2ban

Bien, una vez instalado vamos a configurar fail2ban. Los archivos de configuración los puedes localizar en /etc/fail2ban/, y los filtros en /etc/fail2ban/filter.d/. También tenemos el archivo de configuración general en /etc/fail2ban/jail.conf, pero no te recomiendo que pierdas el tiempo con el, mejor filtro por filtro ya que cada servicio requiere de su propia seguridad.

Lo que te recomiendo encarecidamente es crear un archivo llamado jail.local, y definir o configurar los filtros que necesites. Por ejemplo:

nano /etc/fail2ban/jail.local

Ejemplo de jails de un servidor web en producción.

[DEFAULT]
ignoreip = 127.0.0.1/8
destemail = webmaster@midominio.es
bantime = 21600
maxretry = 2
findtime = 600

[apache]
maxretry = 4
enabled = true
logpath = /var/www/vhosts/system/*/logs/error_log
/var/log/httpd/*error_log
action = iptables-multiport[name=apache, port=»http,https,7080,7081″]

[apache-badbot]
enabled = true
action = iptables-multiport[name=BadBots, port=»http,https,7080,7081″]
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log

[dovecot]
enabled = true
action = iptables-multiport[name=»plesk-dovecot», port=»imap,imap3,imaps,pop3,pop3s,4190″]

[postfix]
enabled = true
action = iptables-multiport[name=»plesk-postfix», port=»smtp,smtps,submission»]

[proftpd]
maxretry = 1
enabled = true
action = iptables-multiport[name=»plesk-proftpd», port=»ftp,ftp-data,ftps,ftps-data»]

[roundcube]
enabled = true
action = iptables-multiport[name=»roundcube», port=»http,https,7080,7081″]

[wordpress]
enabled = true
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
action = iptables-multiport[name=»plesk-wordpress», port=»http,https,7080,7081″]

[ssh]
enabled = true
action = iptables[name=SSH, port=ssh, protocol=tcp]

Guarda el archivo y cierra el editor.

Iniciamos fail2ban y lo habilitamos para que inicie con el sistema.

systemctl start fail2ban

systemctl enable fail2ban

Podemos verificar que esta funcionando correctamente.
systemctl status fail2ban

ejemplo…

[root@host ~]# systemctl status fail2ban
fail2ban.service – Fail2Ban Service
        Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
        Active: active (running) since mié 2019-10-16 08:32:37 CEST; 1 day 1h ago
              Docs: man:fail2ban(1)
    Main PID: 3616 (fail2ban-server)
         Tasks: 21
         Memory: 25.3M
         CGroup: /system.slice/fail2ban.service
                        └─3616 /usr/bin/python /usr/bin/fail2ban-server -xf start

Podemos ver las direcciones ip bloqueadas de un servicio en particular con «status», en el ejemplo ssh.

fail2ban-client status ssh

ejemplo de salida…

[root@host ~]# fail2ban-client status ssh
Status for the jail: ssh
|- Filter
| |- Currently failed: 0
| |- Total failed: 385
| `- File list: /var/log/secure
`   – Actions
    |- Currently banned: 26
    |- Total banned: 200
    `- Banned IP list: 37.139.21.75 185.112.250.113 171.240.196.80…etc,etc…

 

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

6 Comentarios

  1. Marcelo Olcese
    17/10/2019
  2. Fco Jesus
    17/10/2019
    • sololinux
      17/10/2019
      • Fco Jesus
        21/10/2019
        • sololinux
          21/10/2019
  3. Carlos Nunes
    17/10/2019

Agregar comentario