Cómo instalar y configurar Fail2Ban

¿Qué es Fail2Ban?

Fail2Ban es una aplicación para la prevención de intrusos en un sistema, permite bloquear conexiones remotas que intentan acceder por fuerza bruta.

Instalar Fail2Ban

En CentOS

yum update
yum install fail2ban

Configurar Fail2Ban

Hacemos una copia del archivo /etc/fail2ban/jail.conf.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Algunas opciones principales:

ignoreip

Aquí ponemos las IPs que queremos que fail2ban no banee. Por defecto nos trae la 127.0.0.1 que es la interfaz lo del servidor Linux (para evitar banearse a si mismo). Añadimos la IP o red que queramos.

ignoreip = 127.0.0.1 192.168.1.0/24

bantime

Tiempo que queremos que banee la IP que ha intentado acceder erróneamente. El tiempo esta en segundos.

bantime = 86400

maxretry

Número máximo de intentos que queremos que fail2ban pase por alto.

maxretry = 5

action

Acciones que se van a ejecutar.

action = %(action_)s

filter

Expresión regular para buscar en la bitácora lineas que coincidan.

filter = sshd

Configurar el archivo jail.local

nano /etc/fail2ban/jail.local

Editamos o Agregamos al final.

Para SSH

[sshd]
enabled = true
port    = ssh
logpath = /var/log/auth.log
maxretry = 5

Para WordPress

[wp-login]
enabled = true
port = http,https
filter = wp-login
action   = iptables[name=WordPressLogin, port=http, protocol=tcp]
logpath = /var/log/httpd/dominio.com-access_log
bantime = 6000
maxretry = 5
[wp-xmlrpc]
enabled  = true
port     = http,https
filter   = wp-xmlrpc
action   = iptables[name=WordPressXMLRPC, port=http, protocol=tcp]
logpath  = /var/log/httpd/dominio.com-access_log
bantime = 6000
maxretry = 5

Crear Filtros

Creamos los siguientes filtros para proteger el WordPress.

vim /etc/fail2ban/filter.d/wp-xmlrpc.conf
[Definition]
failregex = ^<HOST> .*POST .*xmlrpc\.php.*
ignoreregex =
vim /etc/fail2ban/filter.d/wp-login.conf
[Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
ignoreregex =

Finalizar

Una vez configurado Fail2Ban reiniciamos el servicio Fail2Ban

systemctl fail2ban restart
(Visited 254 times, 1 visits today)
Puedes saltar al final y dejar una respuesta. Hacer ping no está permitido actualmente.
  • Muy buena explicación, estoy muy interesado en esta herramienta y he creado varias entradas en mi blog al respecto. Me gustaría que le echaras un vistazo a la siguiente entrada donde explico como registrar los ataques en una base de datos, incluyendo la geolocalización de los equipos baneados. Me gustaría recibir ideas para mejorar este script y que pudiera ayudar a la comunidad.

    https://elayo.mx/registrar-ataques-fail2ban-con-geolocalizacion-en-mysql/

    • Guillermo

      Muy buen aporte, sería bueno también que le agregaras la opción de ingresar los datos que se envían, como usuario y contraseña. Saludos.