El servicio Fail2Ban ayuda a bloquear las direcciones IP de los robots que adivinan las contraseñas de su sitio. Recientemente, se ha utilizado a menudo para realizar ataques, ya que una gran cantidad de solicitudes de publicación crea una carga significativa en el servidor web. En nuestros ejemplos, veremos el bloqueo de direcciones IP utilizando el ejemplo del popular CMS: Wordpress, así como el servicio ssh.
1. Instale el servicio Fail2Ban
1.1 Conectar el repositorio de Epel
yum install epel-release
luego en /etc/yum.repos.d/epel.repo necesitas habilitarlo, enable=1
yum install fail2ban
2. Configuraciones generales
El servicio Fail2ban almacena sus archivos de configuración en el directorio /etc/fail2ban. Existe un archivo con valores predeterminados llamado jail.conf. Dado que este archivo puede sobrescribirse con actualizaciones de paquetes, no debemos usarlo. En su lugar, escribiremos un nuevo archivo llamado jail.local. Cualquier valor definido en jail.local anula los valores en jail.conf.
jail.conf contiene una sección [DEFAULT], seguida de secciones para servicios individuales. jail.local puede anular cualquiera de estos valores. Además, los archivos en /etc/fail2ban/jail.d/ se pueden usar para anular la configuración en ambos archivos. Los archivos se aplican en el siguiente orden:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf, alphabetically
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local, alphabetically
Comprobemos y agreguemos configuraciones predeterminadas al archivo /etc/fail2ban/jail.local
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Reiniciemos el servicio.
service fail2ban restart
Comprobemos el estado con el comando.
fail2ban-client status
3. Filtro de WordPress
Agreguemos un filtro y una regla (cárcel) para bloquear las direcciones IP que accedieron a la dirección /wp-login.php (administrador de WordPress) más de 10 veces desde la misma dirección IP en 10 minutos.
3.1 Filtro
/etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =
Usando este filtro buscaremos direcciones IP.
3.2 Agregar cárcel
/etc/fail2ban/jail.d/wordpress.conf
[wordpress]
action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
Si está utilizando otro servidor web, debe cambiar el filtro de acuerdo con cómo genera el registro y especificar la ruta correcta al archivo de registro (access_log). Después de realizar cambios, debe reiniciar el servicio.