Skip to main content

Con el presente instructivo podés agregar una capa más de optimización y seguridad a tu WordPress, en base a la interceptación de ataques de fuerza bruta hacia el administrador.

Es imperativo que, antes de que realices los pasos detallados en este instructivo, cambies el acceso del administrador (wp-admin) a una ruta diferente.

Para ello te puedes apoyar de este instructivo

La búsqueda de accesos hacia el administrador de WordPress se realizará en el archivo de log de Apache, que se encuentra en /var/log/httpd/access_log, por lo que será necesario que el mismo exista y esté funcionando correctamente.

A través de la utilización de un script provisto por Netuy, se podrá realizar una rápida implementación de fail2ban, creando una jail que bloquee una IP durante 5 minutos si esta intenta acceder al administrador de WordPress:

1. Cargar el script

Usando tu editor de texto preferido, creá, editá e insertá el script proporcionado más abajo


nano fail2ban.sh
#!/bin/bash

##
####
#### Script para realizar un setup inicial de fail2ban
####
##

# Captura errores

handle_error() {
    echo "An error occurred: $1"
}

trap 'handle_error "Something went wrong!"' ERR

## Instalación

if hostnamectl | grep -iEq "almalinux|centos"; then
    yum clean all; yum update -y
    yum install epel-release fail2ban -y
    systemctl enable fail2ban
elif hostnamectl | grep -iEq "ubuntu|debian"; then
    apt update -y
    apt install fail2ban -y
    systemctl enable fail2ban
fi

## Configuración

# Filtro básico para detener accesos a dominio.tld/wp-admin

touch /etc/fail2ban/filter.d/wordpress_admin.conf

if ! grep -qF "wp-admin" /etc/fail2ban/filter.d/wordpress_admin.conf; then
    echo "# filtro para intentos de acceso al admin de WordPress
# Se revisarán los request de tipo GET a /wp-admin
# Se capturarán los logs como el siguiente:
# 127.0.0.1 - - [09/Oct/2025:00:00:00 +0000] \"GET /favicon.ico HTTP/1.1\" 404 196 \"http://127.0.0.1/wp-admin\" \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36\"

[Definition]
failregex = ^ .* \"GET /wp-admin HTTP.*" | tee -a /etc/fail2ban/filter.d/wordpress_admin.conf
fi

# Se carga nueva jail en archivo de customización

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

if ! grep -qF "honeypot-wordpress_admin" /etc/fail2ban/jail.local; then
    echo -n "
[honeypot-wordpress_admin]
backend = auto
allowipv6 = auto
enabled = true
port = http,https
filter = wordpress_admin
logpath = /var/log/httpd/access_log
bantime = 5m
findtime = 1m 
maxretry = 1
" | tee -a /etc/fail2ban/jail.local
fi

# Se recarga servicio

systemctl reload fail2ban

2. Ejecutar el script

Para poder ejecutar el script primero debés darle permisos de ejecución:


chmod +x fail2ban.sh

Y ahora si, ejecutarlo:


./script.sh

3. Comprobación

Para comprobar que todo salió bien podés ejecutar el siguiente comando, el cuál te dirá si el servicio tiene una jail cargada:


fail2ban-client status

Una ejecución sin errores te devolverá algo similar a lo siguiente


Status
|- Number of jail:	1
`- Jail list:	honeypot-wordpress_admin

Si luego de seguir estos pasos aún tenés alguna consulta, no dudes en comunicarte con nuestro Equipo de Soporte por WhatsApp o mediante un ticket para recibir asistencia.