← Blog

Cómo proteger WordPress de ataques de fuerza bruta

Como proteger WordPress y paneles de administracion de ataques por fuerza bruta

Para evitar ataques de fuerza bruta en WordPress necesitas aplicar estas medidas de forma combinada: limitar intentos de login con Wordfence o Limit Login Attempts Reloaded, cambiar la URL de acceso con WPS Hide Login, activar autenticacion en dos factores (2FA), usar contrasenas de minimo 12 caracteres, desplegar un WAF como Cloudflare o Wordfence, desactivar XML-RPC, proteger wp-config.php y establecer permisos de archivo correctos (644 para archivos, 755 para directorios). Estas acciones combinadas bloquean mas del 99 % de los ataques automatizados.

Los ataques por fuerza bruta son intentos masivos y automatizados de adivinar credenciales de acceso probando combinaciones de usuario y contrasena a gran velocidad. WordPress es el CMS mas atacado del mundo por su cuota de mercado: mas del 43 % de los sitios web lo utilizan, lo que lo convierte en el objetivo principal para botnets automatizadas (W3Techs, Usage Statistics of Content Management Systems 2025). Segun Wordfence, se registran mas de 90.000 ataques de fuerza bruta por minuto contra sitios WordPress a nivel global (Wordfence, WordPress Threat Intelligence Report 2024). El informe anual de Sucuri anade que el 49 % de los sitios WordPress hackeados tenian versiones desactualizadas y carecian de medidas basicas de proteccion contra fuerza bruta (Sucuri, Website Threat Research Report 2024).

Para PYMEs, un ataque exitoso significa tiempos de inactividad que afectan a ventas y operaciones, perdida de datos de clientes, dano reputacional por inyeccion de malware o phishing, y posibles sanciones por incumplimiento del RGPD si se filtran datos personales. Los ciberatacantes priorizan objetivos vulnerables con medidas basicas de seguridad, por lo que implementar estas protecciones reduce drasticamente la probabilidad de ser comprometido.

Limitar intentos de login

La primera linea de defensa es impedir que un atacante pueda probar miles de combinaciones de credenciales. Por defecto, WordPress no limita los intentos de login, lo que permite ataques de fuerza bruta ilimitados.

Con Wordfence Security

Wordfence es el plugin de seguridad mas instalado de WordPress con mas de 4 millones de instalaciones activas. Incluye limitacion de intentos de login, firewall de aplicaciones web y escaner de malware en una sola herramienta.

Configuracion recomendada en Wordfence > All Options > Brute Force Protection:

  • Lock out after how many login failures: 5 intentos.
  • Lock out after how many forgot password attempts: 3 intentos.
  • Count failures over what time period: 4 horas.
  • Amount of time a user is locked out: 4 horas.
  • Immediately lock out invalid usernames: activar. Esto bloquea inmediatamente intentos con usuarios que no existen, como “admin” si ya lo has renombrado.

Con Limit Login Attempts Reloaded

Si prefieres un plugin mas ligero y especifico, Limit Login Attempts Reloaded consume menos recursos y se centra exclusivamente en la limitacion de intentos:

  • Allowed retries: 4.
  • Minutes lockout: 20 minutos tras superar los intentos.
  • Lockouts increase lockout time to: 24 horas tras 3 bloqueos consecutivos.
  • Hours until retries are reset: 12 horas.

Cambiar la URL de login

La URL por defecto de acceso a WordPress (/wp-admin y /wp-login.php) es conocida por todos los atacantes y bots. Cambiarla no es una medida de seguridad fuerte por si sola, pero elimina una gran cantidad de ataques automatizados que apuntan directamente a esas rutas.

Instala el plugin WPS Hide Login y cambia la URL de acceso a una ruta personalizada, por ejemplo /acceso-empresa-2026. Evita rutas predecibles como /login, /acceder o /entrada.

Importante: tras cambiar la URL, asegurate de que todos los administradores conocen la nueva direccion. Si la olvidas, puedes desactivar el plugin renombrando su carpeta via FTP o panel de archivos:

# Renombrar la carpeta del plugin para desactivarlo
mv wp-content/plugins/wps-hide-login wp-content/plugins/wps-hide-login-disabled

Autenticacion en dos factores (2FA)

La autenticacion en dos factores anade una capa de seguridad que hace practicamente imposible el acceso no autorizado incluso si el atacante obtiene la contrasena. Segun Google, la implementacion de 2FA bloquea el 100 % de los ataques automatizados de bots y el 99 % de los ataques de phishing masivo (Google Security Blog, New Research on How Effective Basic Account Hygiene is at Preventing Hijacking).

Configuracion con Google Authenticator

  1. Instala el plugin WP 2FA o Google Authenticator desde el repositorio de WordPress.
  2. Activa 2FA para todas las cuentas con rol de administrador y editor.
  3. Cada usuario escanea el codigo QR con la app Google Authenticator o Authy en su movil.
  4. Genera codigos de recuperacion de emergencia y guardalos en un lugar seguro fuera del servidor.
  5. Establece 2FA como obligatorio para cuentas administrativas en Ajustes del plugin > Politicas > Forzar 2FA para roles seleccionados.

Contrasenas robustas y gestion de usuarios

Politica de contrasenas

Establece una politica de contrasenas minima para todas las cuentas de WordPress:

  • Longitud minima: 12 caracteres (el NIST recomienda un minimo de 8, pero 12 es el estandar actual para cuentas privilegiadas, segun NIST SP 800-63B, Digital Identity Guidelines).
  • Complejidad: combinacion de mayusculas, minusculas, numeros y simbolos.
  • Prohibicion: no usar palabras del diccionario, nombres de la empresa, fechas de nacimiento ni secuencias predecibles.
  • Rotacion: cambiar contrasenas cada 90 dias para cuentas administrativas.

Usa un gestor de contrasenas como Bitwarden o 1Password para generar y almacenar contrasenas unicas para cada servicio.

Renombrar el usuario admin

El usuario “admin” es el primer nombre que prueban los atacantes. Si tu WordPress tiene un usuario con ese nombre, crealo nuevo y elimina el antiguo:

  1. Crea un nuevo usuario con rol de administrador y un nombre personalizado (evita “administrator”, “webmaster” o el nombre de la empresa).
  2. Inicia sesion con el nuevo usuario.
  3. Elimina el usuario “admin” y reasigna todo su contenido al nuevo usuario cuando WordPress te lo solicite.
  4. Verifica que el ID del nuevo usuario no sea 1 (el ID 1 es otro dato que los atacantes prueban por defecto).

Proteccion con .htaccess

El archivo .htaccess permite anadir reglas de seguridad a nivel de servidor Apache que se ejecutan antes de que WordPress procese la peticion.

Proteger wp-login.php por IP

Si accedes siempre desde la misma IP (oficina con IP fija), restringe el acceso al login:

<Files wp-login.php>
    Order Deny,Allow
    Deny from all
    Allow from 83.XX.XX.XX
    Allow from 90.XX.XX.XX
</Files>

Proteger wp-includes y wp-config.php

# Bloquear acceso directo a wp-includes
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

# Bloquear acceso a wp-config.php
<Files wp-config.php>
    Order Allow,Deny
    Deny from all
</Files>

Limitar ejecucion de PHP en uploads

Impide que un atacante ejecute archivos PHP subidos a la carpeta de medios. Crea un archivo .htaccess en wp-content/uploads/:

<Files "*.php">
    Order Allow,Deny
    Deny from all
</Files>

Desactivar XML-RPC

XML-RPC (xmlrpc.php) es una interfaz que permite interacciones remotas con WordPress. Los atacantes la utilizan para ataques de fuerza bruta amplificados porque permite probar cientos de combinaciones de contrasena en una sola peticion HTTP mediante el metodo system.multicall.

Si no usas la app movil de WordPress ni servicios que dependan de XML-RPC (como Jetpack), desactivalo:

Via .htaccess

<Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
</Files>

Via functions.php o plugin

// Desactivar XML-RPC completamente
add_filter('xmlrpc_enabled', '__return_false');

Con Wordfence

En Wordfence > All Options > Brute Force Protection, activa la opcion Disable WordPress XML-RPC authentication.

Web Application Firewall (WAF)

Un WAF filtra el trafico malicioso antes de que llegue al servidor, bloqueando ataques de fuerza bruta, inyecciones SQL, cross-site scripting (XSS) y otras amenazas.

Wordfence WAF

Wordfence incluye un WAF a nivel de aplicacion que se ejecuta dentro de WordPress. Configura el modo Extended Protection para que el firewall se cargue antes que WordPress y los plugins:

  1. Navega a Wordfence > Firewall > Manage Firewall.
  2. Cambia el nivel de proteccion a Extended Protection.
  3. Wordfence modificara el archivo .user.ini o .htaccess para precargarse.
  4. Activa Rate Limiting para bloquear IPs que realicen mas de 240 peticiones por minuto.

Cloudflare WAF

Cloudflare actua como proxy inverso y filtra el trafico antes de que llegue al servidor de origen. Es especialmente eficaz contra ataques DDoS combinados con fuerza bruta:

  1. Configura tu dominio en Cloudflare (cambia los nameservers DNS).
  2. Activa el modo Under Attack temporalmente si estas sufriendo un ataque activo.
  3. Crea reglas de firewall personalizadas: bloquear paises desde los que no operas, limitar el acceso a /wp-admin por IP y desafiar con CAPTCHA las peticiones sospechosas a wp-login.php.
  4. Activa Bot Fight Mode para bloquear automaticamente bots maliciosos conocidos.

Segun Cloudflare, su red bloquea una media de 140.000 millones de ciberamenazas diarias, incluyendo ataques de fuerza bruta a gran escala (Cloudflare, Annual Threat Report 2024).

Hardening adicional de WordPress

Cambiar el prefijo de la base de datos

El prefijo por defecto de las tablas de WordPress es wp_. Los ataques de inyeccion SQL utilizan este prefijo conocido para apuntar a tablas criticas como wp_users. Cambialo durante la instalacion o con un plugin como Brozzme DB Prefix si WordPress ya esta instalado.

Permisos de archivos correctos

Establece los permisos recomendados por WordPress para evitar que un atacante modifique archivos criticos:

  • Directorios: 755 (drwxr-xr-x).
  • Archivos: 644 (-rw-r--r--).
  • wp-config.php: 440 o 400 para maximo restriccion.
# Aplicar permisos correctos de forma recursiva
find /ruta/wordpress/ -type d -exec chmod 755 {} \;
find /ruta/wordpress/ -type f -exec chmod 644 {} \;
chmod 400 /ruta/wordpress/wp-config.php

Desactivar el editor de archivos

WordPress incluye un editor de codigo en el panel de administracion que permite modificar archivos de temas y plugins. Si un atacante accede al panel, puede inyectar codigo malicioso a traves de este editor. Desactivalo anadiendo esta linea a wp-config.php:

define('DISALLOW_FILE_EDIT', true);

Proteccion de otros paneles de administracion

Los ataques de fuerza bruta no se limitan a WordPress. Cualquier panel de administracion con acceso web es un objetivo potencial.

cPanel y Plesk

  • Activa el bloqueo automatico por IP tras 5 intentos fallidos en cPanel > Security Center > cPHulk Brute Force Protection.
  • En Plesk, activa Fail2Ban en Tools & Settings > IP Address Banning y configura reglas para los servicios web, FTP y correo.
  • Cambia el puerto por defecto de acceso a cPanel (2083) y Plesk (8443) si tu proveedor de hosting lo permite.

SSH

  • Desactiva el login por root editando /etc/ssh/sshd_config: PermitRootLogin no.
  • Usa autenticacion por claves SSH en lugar de contrasenas: PasswordAuthentication no.
  • Cambia el puerto por defecto (22) a un puerto personalizado.
  • Instala Fail2Ban para bloquear IPs tras intentos fallidos de SSH:
# Configuracion basica de Fail2Ban para SSH
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 3
bantime = 3600
findtime = 600

phpMyAdmin

  • Restringe el acceso por IP en la configuracion de Apache o Nginx.
  • Cambia la URL por defecto (/phpmyadmin) a una ruta personalizada.
  • Activa autenticacion HTTP adicional como capa extra antes del login de phpMyAdmin.
  • Si no lo necesitas accesible via web, desactivalo y accede a MySQL solo por terminal SSH.

Monitorizacion de intentos fallidos

Configurar protecciones sin monitorizacion es como instalar una alarma y no conectarla a la central. Necesitas visibilidad sobre los ataques que recibe tu sitio para ajustar las defensas.

Con Wordfence, revisa semanalmente la seccion Wordfence > Tools > Live Traffic filtrando por intentos de login fallidos. Analiza:

  • IPs que generan mas intentos (bloqueales permanentemente si son recurrentes).
  • Nombres de usuario que prueban (si ves nombres de empleados reales, investiga una posible filtracion de credenciales).
  • Horarios de mayor actividad de ataques (refuerza las defensas en esos periodos).

Configura alertas por email en Wordfence > All Options > Email Alert Preferences para recibir notificaciones inmediatas ante bloqueos por fuerza bruta y logins exitosos de administradores.

Problemas frecuentes y solucion

  • Bloqueos legitimos de usuarios: anade las IPs de la oficina a la lista blanca en Wordfence (Wordfence > Firewall > Whitelisted IPs) o en Limit Login Attempts. Si usas Cloudflare, asegurate de que WordPress recibe la IP real del visitante y no la IP de Cloudflare (instala el plugin Cloudflare o configura $_SERVER['HTTP_CF_CONNECTING_IP']).
  • Error 403 tras proteger .htaccess: revisa la sintaxis de las reglas anadidas. Un error tipografico en una directiva Apache puede bloquear todo el sitio. Accede por FTP y corrige o elimina las reglas problematicas.
  • Incompatibilidad entre plugins de seguridad: no instales dos WAFs simultaneamente (por ejemplo, Wordfence y Sucuri firewall activos al mismo tiempo). Elige uno y desactiva el otro. Prueba los cambios en modo mantenimiento.
  • 2FA bloquea el acceso tras perder el movil: usa los codigos de recuperacion generados durante la configuracion. Si no los tienes, desactiva el plugin 2FA via FTP renombrando su carpeta o accede a la base de datos y elimina la configuracion 2FA del usuario en la tabla wp_usermeta.
  • Errores tras cambiar la URL de login: limpia la cache del navegador, la cache del servidor y la cache de CDN. Si no puedes acceder, desactiva WPS Hide Login renombrando su carpeta via FTP.
  • XML-RPC necesario para alguna integracion: en lugar de desactivarlo completamente, usa Wordfence para desactivar solo la autenticacion via XML-RPC manteniendo la funcionalidad de pingbacks si la necesitas.

Preguntas frecuentes

Como se si estoy sufriendo un ataque de fuerza bruta? Revisa los logs de acceso del servidor o el panel de Wordfence. Multiples intentos de login consecutivos desde una misma IP o con nombres de usuario comunes como “admin”, “administrator” o “root” son indicio claro. Un aumento repentino en el consumo de CPU y ancho de banda del servidor sin aumento de trafico legitimo tambien puede indicar un ataque en curso.

Es suficiente con cambiar la contrasena? No. Una contrasena robusta es solo una de las capas de defensa. Debes combinar varias medidas: 2FA, limitacion de intentos, cambio de URL de login, WAF y monitorizacion. La seguridad por capas es el unico enfoque eficaz, ya que si una capa falla, las demas siguen protegiendo el sistema.

Que hacer si mi WordPress ha sido hackeado? Aisla el sitio inmediatamente (pon una pagina de mantenimiento o desconectalo). Restaura desde un backup limpio verificado anterior al compromiso. Cambia todas las contrasenas (WordPress, base de datos, FTP, cPanel, correo). Actualiza WordPress, plugins y temas a la ultima version. Escanea con Wordfence o Sucuri para eliminar malware residual. Refuerza todas las medidas preventivas antes de volver a publicar. Notifica a la AEPD si se han filtrado datos personales, conforme al RGPD.

Con que frecuencia debo actualizar WordPress y los plugins? Aplica las actualizaciones de seguridad en las primeras 48 horas tras su publicacion. Las actualizaciones de funcionalidad pueden esperar una semana para comprobar que no generan incompatibilidades. Activa las actualizaciones automaticas menores de WordPress y revisa semanalmente las actualizaciones disponibles de plugins y temas.

Cloudflare gratuito es suficiente para proteger mi WordPress? El plan gratuito de Cloudflare incluye proteccion DDoS basica, certificado SSL y cache. Para reglas WAF personalizadas, bloqueo avanzado de bots y rate limiting granular necesitas el plan Pro (20 USD/mes) o Business. Para la mayoria de PYMEs, combinar Cloudflare gratuito con Wordfence premium ofrece una proteccion muy completa a un coste razonable.

En IBERSYA gestionamos la seguridad de sitios WordPress para PYMEs con un enfoque de proteccion por capas. Configuramos Wordfence como WAF y sistema de deteccion, implementamos 2FA obligatorio para cuentas administrativas, programamos backups automaticos verificados con restauracion de prueba mensual, desplegamos Cloudflare como primera linea de defensa y monitorizamos continuamente los accesos sospechosos con alertas en tiempo real. Si tu web es critica para tu negocio, contacta con nosotros para una auditoria de seguridad completa de tu WordPress y paneles de administracion.

Ver servicio relacionado →

¿Necesitas ayuda con esto?

Cuéntanos tu situación y te asesoramos sin compromiso.

Teléfono 665 87 93 46
Horario Lunes a Viernes: 8:00 - 20:00
¡Te llamamos!
¿Te llamamos?

Déjanos tu teléfono y te contactamos en menos de 1 hora.