Para bloquear múltiples intentos fallidos de inicio de sesión en WordPress utilizando iptables, puedes usar el módulo recent
en combinación con las reglas de iptables
. El módulo recent
ayuda a realizar un seguimiento del número de intentos de inicio de sesión fallidos recientes y toma medidas en función de un umbral especificado. Aquí tienes un ejemplo básico de cómo puedes lograrlo:
- Carga los módulos necesarios:
sudo modprobe ipt_recent
- Crea una cadena de iptables para hacer un seguimiento de los intentos de inicio de sesión fallidos:
sudo iptables -N LOGINVALID
sudo iptables -N LOGXMLRPC
- Configura reglas para la cadena LOGINVALID:
sudo iptables -A LOGINVALID -m recent --name wplogin --update --seconds 600 --hitcount 4 -j DROP
sudo iptables -A LOGINVALID -m recent --name wplogin --set -j ACCEPT
sudo iptables -A LOGXMLRPC -m recent --name xmlrpc --update --seconds 600 --hitcount 4 -j DROP
sudo iptables -A LOGXMLRPC -m recent --name xmlrpc --set -j ACCEPT
En este ejemplo, los intentos fallidos se rastrean durante 600 segundos (10 minutos) y, si hay más de 4 intentos fallidos dentro de ese período, se bloqueará la dirección IP de origen.
- Redirige el tráfico a la cadena LOGINVALID para los intentos de inicio de sesión en WordPress:
sudo iptables -A INPUT -p tcp --dport 80 -m string --string "wp-login.php" --algo bm -j LOGINVALID
sudo iptables -A INPUT -p tcp --dport 443 -m string --string "wp-login.php" --algo bm -j LOGINVALID
sudo iptables -A INPUT -p tcp --dport 80 -m string --string "xmlrpc.php" --algo bm -j LOGXMLRPC
sudo iptables -A INPUT -p tcp --dport 443 -m string --string "xmlrpc.php" --algo bm -j LOGXMLRPC
Esto asume que tu página de inicio de sesión de WordPress es accesible a través de HTTP (puerto 80) y HTTPS (puerto 443). Ajusta los números de puerto si tu configuración es diferente.
Bloqueo de todos los ataques no de deseados contra xmlrpc
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -N xmlrpc
iptables -I INPUT 2 -p tcp --dport 80 -j xmlrpc
iptables -I xmlrpc 1 -m recent -p tcp --syn --set
iptables -I xmlrpc 2 -m recent -p tcp --tcp-flags PSH,SYN,ACK ACK --update
iptables -I xmlrpc 3 -m recent -p tcp --tcp-flags PSH,ACK PSH,ACK --remove -m string --to 70 --algo bm --string "POST /xmlrpc.php" -j DROP
- Guarda las reglas de iptables:
sudo service iptables save
Este comando variará según tu distribución de Linux. En algunos sistemas, puede ser sudo iptables-save
o sudo systemctl save iptables
( iptables-save > /etc/iptables/rules.v4 )
Es importante tener en cuenta que, aunque las reglas de iptables pueden ayudar a mitigar los ataques de fuerza bruta, también se recomienda implementar medidas de seguridad adicionales, como contraseñas fuertes, autenticación de dos factores y mantener actualizada la instalación de WordPress y sus complementos. Además, considera el uso de complementos de seguridad específicos para WordPress que estén diseñados para manejar estos escenarios de manera más efectiva.