Skip to main contentSkip to footer
Guías de plugins

Lista para endurecer la seguridad de WordPress: 12 pasos ordenados por datos reales de ataques

Patrick Schlesinger
ReportedIP Hive plugin guide banner for the WordPress security hardening checklist

Esta lista de comprobación para endurecer la seguridad de WordPress tiene doce pasos, y su orden sale de lo que de verdad golpeó a los sitios WordPress de la red ReportedIP entre el 4 de julio y el 1 de octubre de 2026: 36.548 eventos de ataque desde 18.378 direcciones. Los escáneres en busca de archivos de configuración, plugins y números de versión supusieron más de la mitad, la adivinación de contraseñas quedó en segundo lugar, y los exploits de los que todo el mundo escribe fueron unos cientos de eventos al final de la lista.

Cada paso indica qué cierra, qué puede romper y dónde está el interruptor en ReportedIP Hive. El núcleo de detección y bloqueo del plugin es gratuito; los pasos que necesitan el plan Professional lo dicen. La interfaz del plugin está en inglés, y las etiquetas se citan tal cual. Para la mayor parte no hace falta ser desarrollador: ocho de los doce pasos son interruptores en un único plugin gratuito, y el plugin te muestra cuáles siguen apagados.

Si solo tienes diez minutos: la versión corta

La versión corta lleva unos diez minutos y cubre los pasos que frenan la mayor parte del tráfico de la tabla de abajo.

  1. Descarga ReportedIP Hive e instálalo como cualquier otro plugin: Plugins, Añadir nuevo, Subir plugin, elige el archivo zip, Activar.
  2. Ejecuta el Quickstart que el plugin abre tras la activación. Elige el modo, pega tu clave si tienes una, activa la protección. Sensores, cortafuegos y bloqueo progresivo vienen preajustados para tu plan.
  3. Abre el panel y repasa el Hardening Score. Cada elemento que todavía dice Enable enlaza con su interruptor. El segundo factor para tu propia cuenta es el primero que debes activar.

El plugin es gratuito y de código abierto. Professional añade después las partes gestionadas, desde la misma pantalla.

Qué atacó a los sitios WordPress en los últimos 90 días

Las cifras de abajo son los eventos de ataque que sitios y servidores WordPress notificaron a la red ReportedIP a través de su API en esos 90 días, contados por categoría. El tráfico de los honeypots queda fuera, y un evento con varias categorías se cuenta una vez en cada una de ellas. El paso de la lista que cierra cada vector está en la última columna.

Tipo de ataqueEventosDireccionesLo cierra el paso
Búsqueda de archivos de configuración y copias de seguridad16.5487.5492 y 3
Escaneo de plugins16.3087.5151 y 3
Escaneo de versiones16.1847.4803
Fuerza bruta en el inicio de sesión11.2358.0104, 5 y 8
Enumeración de usuarios6.1303.0266
Falsos bots de buscadores1.97838211
Fuerza bruta por XML-RPC6812377
Intentos de explotar plugins5741491 y 11
Abuso de la API REST3571287

De la tabla salen dos conclusiones. El grueso del tráfico es reconocimiento, así que un sitio que no revela nada recibe menos ataques de seguimiento. Y el pequeño número de intentos de explotación es la única fila que acaba en una intrusión, por eso las actualizaciones siguen arriba aunque las filas de escaneo sean casi treinta veces mayores.

La lista de endurecimiento de un vistazo

PasoEsfuerzoPuede romperEn ReportedIP Hive
1. Actualizar y eliminar pluginsRecurrenteUn tema o plugin tras una actualización mayorNo es tarea del plugin
2. Bloquear los archivosUna vezPlugins que escriben en su propia carpetaBlock PHP execution in uploads
3. Ocultar las huellas de versiónUna vezNadaHide software fingerprints
4. Endurecer el inicio de sesiónUna vezDirecciones compartidas de una oficinaBloqueo progresivo, política de contraseñas
5. Exigir el segundo factorUna vez por rolUsuarios sin teléfonoTwo-Factor Authentication
6. Frenar la enumeración de usuariosUna vezPáginas de autor públicasDefensa contra la enumeración
7. Cerrar XML-RPC y RESTUna vezJetpack, la app móvil, montajes headlessAccess Lockdown
8. Ocultar la página de inicio de sesiónUna vezLos marcadores de tus editoresHide Login
9. Enviar cabeceras de seguridadUna vezIncrustaciones y una CSP estrictaSecurity Headers
10. HTTPS, PHP y proxiesUna vezPlugins viejos sobre un PHP nuevoFuentes de proxy de confianza
11. Poner un cortafuegos delanteUna vezFormularios que envían códigoWeb Application Firewall
12. Copias de seguridad y supervisiónRecurrenteNadaSystem Status

1. Actualizar el núcleo, los plugins y los temas, y eliminar lo que no usas

El escaneo de plugins fue la segunda fila más grande de la tabla por una razón: un escáner que sabe qué plugins y versiones corre un sitio puede cruzarlos con las vulnerabilidades publicadas y volver con el único exploit que encaja. Los 574 intentos de explotación son el final de esa cadena. Una instalación con los plugins al día no tiene nada en lo que esa cadena pueda terminar.

  • Activa las actualizaciones automáticas del núcleo de WordPress, al menos para las versiones menores, que traen las correcciones de seguridad.
  • Actualiza plugins y temas con un calendario, cada semana en la mayoría de los sitios, el mismo día para un plugin con una vulnerabilidad publicada.
  • Elimina los plugins y temas inactivos. Un plugin inactivo sigue teniendo archivos en disco, y un escáner lee archivos, no el estado de activación.
  • Prueba las actualizaciones grandes en una copia de staging antes de que lleguen al sitio en producción, sobre todo WooCommerce y los maquetadores.

Si nadie en la empresa se hace cargo de ese calendario, dáselo a alguien que lo cumpla cada semana. El mantenimiento WordPress de CMS ADMINS, el equipo de Múnich detrás de ReportedIP, aplica las actualizaciones a un ritmo fijo, con un entorno de staging en los planes mayores, hace copias de seguridad diarias, supervisa el sitio las 24 horas y aloja en servidores alemanes para los clientes que quieren mantenimiento y alojamiento con un solo interlocutor.

2. Bloquear wp-config.php, los permisos de archivos y el editor de archivos

La fila más grande de la tabla, 16.548 eventos, son escáneres pidiendo copias de seguridad y archivos de configuración que nunca deberían poder leerse desde fuera. Tres ajustes cierran la mayor parte de esa superficie.

Añade estas dos líneas a wp-config.php por encima de la línea que dice que la edición termina ahí. La primera quita el editor de temas y plugins de wp-admin, así que una sesión de administrador robada no puede pegar PHP en tu tema. La segunda detiene el instalador de plugins y temas, que solo quieres en un sitio donde cada cambio pasa de todos modos por un despliegue.

define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true ); // solo si despliegas los plugins tú mismo

Aplica los permisos de archivos que recomienda la guía de endurecimiento de WordPress: directorios en 755, archivos en 644, y wp-config.php en 600 para que solo el usuario del servidor web pueda leerlo. Nunca dejes al lado una copia llamada wp-config.php.bak o wp-config.old; un servidor web la sirve en texto plano, y eso es exactamente lo que pedían las 16.548 peticiones.

find /ruta/del/sitio -type d -exec chmod 755 {} \;
find /ruta/del/sitio -type f -exec chmod 644 {} \;
chmod 600 /ruta/del/sitio/wp-config.php

La carpeta de subidas es el único lugar donde un visitante puede dejar un archivo en tu servidor. Hive añade una regla que se niega a ejecutar PHP dentro de ella, así que un script que entre por un formulario de subida roto no puede ejecutarse. En Apache el plugin escribe la regla él mismo en el .htaccess de las subidas; en nginx muestra un fragmento para pegar. El interruptor es Block PHP execution in uploads bajo Protection, Firewall & Bots, Access Lockdown.

Si editar archivos en el servidor no es lo tuyo, quédate solo con el último interruptor y pide a tu proveedor de alojamiento las dos líneas y los permisos. Para un proveedor es cosa de cinco minutos.

3. Dejar de entregar tus números de versión a los escáneres

WordPress escribe su versión en el código fuente de la página, en los feeds y en las URL de scripts y estilos, y 16.184 eventos en 90 días fueron escáneres leyendo exactamente eso. Quitar las huellas no arregla nada por sí solo. Deja de entregar al escáner la lista de lo que probar a continuación, y por eso este paso va tan pronto para lo poco que cuesta.

En Hive el interruptor es Hide software fingerprints, en la misma sección Access Lockdown. Dos cosas más atrapan a los escáneres a la entrada: el detector de escaneos cuenta las rutas fallidas por dirección y bloquea tras una ráfaga, y las rutas señuelo responden a una petición de un archivo que no existe en ningún sitio real con un bloqueo y un aviso a la red. Ambos son gratuitos y vienen activados; la guía de rutas señuelo explica qué hacen y qué no.

Sección Access Lockdown de ReportedIP Hive con los interruptores para el acceso a la API REST, XML-RPC, los feeds, wp-admin para visitantes, PHP en las subidas y las huellas de software
La sección Access Lockdown cubre los pasos 2, 3 y 7 de esta lista. Cada interruptor está apagado hasta que tú lo ajustas.

4. Encarecer el inicio de sesión: nombres únicos, contraseñas fuertes, bloqueos progresivos

La fuerza bruta en el inicio de sesión fueron 11.235 eventos desde 8.010 direcciones, la dispersión más amplia de todas las filas: la mayoría de esas direcciones probó unas pocas veces y siguió adelante. Ese patrón decide la defensa. Bloquear solo por dirección no escala frente a 8.010 de ellas, así que la contraseña tiene que ser imposible de adivinar y los intentos tienen que costarle algo al atacante.

  • Ninguna cuenta llamada admin. Crea un administrador nuevo con un nombre que nadie pueda adivinar, inicia sesión con él, borra el antiguo y asigna su contenido a la cuenta nueva.
  • Contraseñas fuertes y únicas, con comprobación de filtraciones. La política de contraseñas de Hive fija una longitud mínima y clases de caracteres y puede cotejar una contraseña nueva con las filtraciones conocidas sin enviar la contraseña a ninguna parte.
  • Bloqueo progresivo en vez de un veto plano. Hive cuenta los inicios de sesión fallidos por dirección y bloquea unos minutos en la primera infracción y días en las reincidencias, así que un compañero con un error de tecleo no se queda fuera un día entero. La guía de bloqueo por fuerza bruta recorre la escalera.
  • Comparte lo que aprendes. En el modo Community Network, una dirección que otros sitios ya han notificado se rechaza antes de comprobar la contraseña, y tus propios bloqueos ayudan al siguiente sitio.

5. Exigir la autenticación en dos pasos a cada rol que pueda editar

Un segundo factor es el único paso que deja sin valor una contraseña robada o adivinada, y por eso es el elemento de más peso en la puntuación de endurecimiento. Hive trae cuatro métodos: una app de autenticación, passkeys y llaves físicas, un código por correo, y SMS en el plan Professional a través del relé gestionado. Los tres primeros son gratuitos en todos los planes, incluido el modo Local Shield totalmente sin conexión.

Exigirlo a un rol es lo que cuenta. Bajo Protection, Core protection, Two-Factor Authentication, elige los roles que deben usar un segundo factor, administradores y editores como mínimo. Los usuarios tienen un periodo de gracia para configurarlo, los códigos de recuperación cubren la pérdida de un teléfono, y el flujo de restablecimiento de contraseña pide también el segundo factor, así que un buzón robado no puede saltárselo. La guía de autenticación en dos pasos compara los cuatro métodos.

Professional añade la escalada adaptativa: un inicio de sesión desde un país nuevo, una red nueva o un dispositivo nuevo vuelve a pedir el segundo factor, incluso en un dispositivo de confianza. Para una tienda, la variante de escaparate muestra el desafío dentro del tema de WooCommerce en Mi cuenta y en el pago.

6. Frenar la enumeración de usuarios

Antes de adivinar contraseñas, un bot quiere nombres de usuario, y WordPress los reparte en cuatro sitios: la redirección ?author=1, el endpoint de usuarios de la API REST, la respuesta oEmbed y el error de inicio de sesión que dice si lo incorrecto era el nombre o la contraseña. Los 6.130 eventos de enumeración son bots recogiendo nombres para los 11.235 intentos de inicio de sesión de arriba.

La defensa contra la enumeración de Hive cierra los cuatro de golpe y cuenta las sondas por dirección, así que un bot que insiste queda bloqueado. Los sitios que enlazan a sus páginas de autor pueden dejarlas públicas; las otras tres siguen cerradas. El interruptor viene activado bajo Protection, Core protection.

7. Cerrar XML-RPC, la API REST y las demás puertas que no usas

La fuerza bruta por XML-RPC y el abuso de la API REST sumaron juntos cerca de mil eventos, mucho menos que la página de inicio de sesión, y son los dos interruptores con más probabilidad de romper algo. Así que prueba antes de confiar en ellos. XML-RPC lo necesitan la app de Jetpack, la app móvil de WordPress y algunas herramientas de publicación; la API REST la usan el editor de bloques, la mayoría de los plugins de formularios y de tienda y cualquier front-end headless.

El Access Lockdown de Hive ofrece los interruptores con el término medio ya incorporado. Disable XML-RPC apaga del todo el endpoint y los pingbacks; si lo necesitas, un segundo interruptor quita solo el método multicall que mete cientos de intentos de contraseña en una única petición. REST API access puede quedar abierto, limitarse a usuarios con sesión o restringirse a roles elegidos, con una lista de espacios de nombres que siguen siempre accesibles para un banner de cookies o un plugin de tienda. Disable RSS and Atom feeds es para sitios a los que nadie está suscrito.

Cada interruptor es gratuito, viene apagado y se revierte desde la misma pantalla. La lista completa está en la documentación de Access Lockdown.

8. Ocultar la página de inicio de sesión y cerrar wp-admin a los visitantes

Mover la página de inicio de sesión fuera de wp-login.php no detiene a un atacante dirigido, pero saca el sitio de cada barrido automatizado que prueba la dirección por defecto, que es donde empieza la mayor parte de la adivinación de contraseñas. El Hide Login de Hive fija un slug propio, decide qué responde la dirección antigua y registra lo que todavía la pide. Close wp-admin for visitors aparta a los visitantes sin sesión del área de administración en vez de mostrarles el formulario.

Avisa a tus editores de la nueva dirección antes de cambiar, y ten presente la lista blanca del plugin para la red de la oficina: una dirección que está en ella nunca se bloquea, haga lo que haga.

9. Enviar cabeceras de seguridad

Las cabeceras de respuesta le dicen al navegador qué debe rechazar: adivinar un tipo de archivo, enmarcar tus páginas en un sitio ajeno, filtrar la dirección completa cuando un visitante sigue un enlace, o volver a HTTP. Las tres básicas, X-Content-Type-Options, X-Frame-Options y Referrer-Policy, son gratuitas en Hive y seguras en casi cualquier sitio. HSTS, Permissions-Policy, una Content-Security-Policy que arranca en modo solo informe y el trío cross-origin vienen con Professional.

Dos advertencias sacadas de la propia pantalla de ajustes: nunca actives HSTS antes de que HTTPS funcione en todas partes, porque los navegadores lo recuerdan durante el periodo que fijes, y ejecuta siempre una Content-Security-Policy primero en modo solo informe, porque una política impuesta demasiado estricta hace que una página parezca rota. Las cabeceras que tu servidor ya envía se detectan y se dejan en paz. Comprueba el resultado desde fuera con el Security Header Check.

Si nada de esto te dice algo: activa las tres cabeceras básicas y deja el resto apagado. Solo eso ya es más de lo que envía la mayoría de los sitios.

Sección Security Headers de ReportedIP Hive con las cabeceras básicas gratuitas y los ajustes de HSTS, Permissions-Policy, Content-Security-Policy y cross-origin marcados como incluidos en Professional
La sección Security Headers. El trío básico es gratuito; las cabeceras marcadas Professional necesitan el plan.

10. HTTPS, una versión de PHP al día y la dirección real del cliente

Tres cosas pertenecen a la capa de alojamiento y ningún plugin puede hacerlas por ti. HTTPS con un certificado válido en cada subdominio, porque cada paso de arriba da por hecho que la cookie de sesión viaja cifrada. Una versión de PHP que todavía recibe correcciones de seguridad, porque un PHP sin soporte es una vulnerabilidad a la que no le llegará ningún parche. Y, detrás de Cloudflare o de cualquier proxy inverso, la cabecera que lleva la dirección real del visitante.

El último punto decide si funcionan todos los demás pasos. Si el plugin ve la dirección del proxy en vez de la del visitante, bloquea al proxy y deja pasar al atacante. El ajuste de proxy de confianza de Hive toma la cabecera y los rangos del proxy; la página System Status avisa cuando hay una cabecera configurada sin rangos. Si prefieres no cargar en absoluto con la capa de alojamiento, los planes de mantenimiento de CMS ADMINS incluyen alojamiento en servidores alemanes con la versión de PHP mantenida al día.

11. Poner un cortafuegos delante de PHP, y dejar que se endurezca bajo ataque

Los 574 intentos de explotación y los 1.978 falsos bots de buscadores son para lo que sirve un cortafuegos de aplicaciones web. El cortafuegos de Hive inspecciona cada petición en busca de inyección SQL, cross-site scripting, salto de directorios, inyección de comandos y herramientas de escaneo, y el motor con su conjunto de reglas base OWASP es gratuito en todos los planes. Un drop-in opcional bloquea antes de que cargue WordPress, con la configuración de Apache y nginx generada para ti. La detección de bots verificados confirma a Googlebot y Bingbot por sus rangos de direcciones oficiales y marca o bloquea a los impostores.

Professional añade dos cosas. Los conjuntos de reglas más profundos llegan firmados por Priority Sync según se publican, y el Hardening Mode reacciona a un ataque coordinado: cuando muchas direcciones golpean el inicio de sesión en una ventana corta, el plugin aprieta sus umbrales en todo el sitio durante una hora y después los suelta. La fuerza bruta distribuida de una botnet se detiene a medio vuelo en vez de colarse por debajo del límite por dirección. La guía del cortafuegos y la guía del Hardening Mode cubren ambos en detalle.

12. Copias de seguridad que has restaurado, supervisión y una comprobación de preparación

Una copia de seguridad solo cuenta cuando la has restaurado. Guarda copias diarias fuera del servidor web, consérvalas el tiempo suficiente para llegar antes de una intrusión que notaste tarde, y restaura una en un sitio de staging al menos una vez al trimestre para que el procedimiento se conozca antes de hacer falta.

La supervisión es la otra mitad. La página System Status de Hive lista lo que suele fallar en silencio: un cron parado, una cabecera de proxy de confianza sin rangos, un envío de correo que falla, un administrador sin segundo factor propio. Cada hallazgo lleva una gravedad, la hora en que se vio por primera vez y un enlace al ajuste responsable. En el plan Business, el registro de auditoría anota quién cambió qué ajuste, plugin, archivo o cuenta, con el valor antiguo y el nuevo, que es lo que necesitas la mañana siguiente a un incidente.

Medir el resultado: la puntuación de endurecimiento

Cada paso de esta lista que el plugin puede ver se puntúa en el panel de Hive. La puntuación de endurecimiento pondera trece elementos, desde el segundo factor exigido hasta las huellas ocultas, da una nota de A+ a F y enlaza cada elemento con su ajuste. Una instalación recién hecha con los valores por defecto arranca baja a propósito: la puntuación mide lo que has activado, no lo que el plugin podría hacer.

Panel de ReportedIP Hive antes de la lista de endurecimiento de la seguridad de WordPress: puntuación de endurecimiento 18 de 100, nota F, con once de trece elementos aún por activar
Antes: una instalación recién hecha con los valores por defecto saca 18 de 100 en endurecimiento.
Panel de ReportedIP Hive después de la lista: puntuación de endurecimiento 90 de 100, nota A, con el segundo factor exigido, las cabeceras enviadas y los interruptores de bloqueo activos
Después de los pasos 3, 5, 7, 8 y 9 en la misma instalación de prueba: 90 de 100, nota A.

Los dos botones bajo los medidores abren Mozilla Observatory y securityheaders.com, para que puedas confirmar la parte de cabeceras de la puntuación con una herramienta que no es nuestra. Cómo se construye la puntuación está en la documentación de la puntuación.

Qué pasos necesitan Hive Professional

La mayor parte de esta lista funciona con el plugin gratuito. Professional, 14,90 euros al mes con IVA incluido para tres dominios, añade las piezas que necesitan infraestructura gestionada o un flujo de reglas.

Elemento de la listaFreeProfessional
Dieciséis sensores y bloqueo progresivoSíSí
Interruptores de Access Lockdown y Hide LoginSíSí
Segundo factor por app, passkey y correoSíSí
Segundo factor por SMSNoSí
Escalada adaptativa por rolNoSí
Cabeceras de seguridad básicasSíSí
HSTS, Permissions-Policy, CSP, cabeceras cross-originNoSí
Motor del cortafuegos y base OWASPSíSí
Conjuntos de reglas más profundos por Priority SyncNoSí
Hardening Mode ante ataques coordinadosNoSí
Puntuación de endurecimiento y System StatusSíSí

¿Listo para empezar? El plugin gratuito cubre de serie los pasos 3 a 9 y 11. Si prefieres dejar toda la lista en manos de alguien, CMS ADMINS la configura y la mantiene en marcha.

Preguntas sobre el endurecimiento de WordPress

¿Basta un plugin de seguridad para endurecer WordPress?

Un plugin de seguridad cubre ocho de los doce pasos de esta lista: el inicio de sesión, el segundo factor, la enumeración, los interruptores de bloqueo, la página de inicio de sesión oculta, las cabeceras, el cortafuegos y la puntuación. Las actualizaciones, los permisos de archivos, HTTPS y las copias de seguridad viven fuera del plugin, en el servidor y en una rutina, y ningún plugin puede asumirlos.

¿Desactivar XML-RPC rompe Jetpack o la app de WordPress?

Sí, ambos usan XML-RPC y dejan de funcionar cuando el endpoint se apaga. El segundo interruptor de Hive mantiene XML-RPC en marcha y quita solo el método multicall que mete cientos de intentos de contraseña en una única petición, que es la parte que usan los atacantes.

¿Cada cuánto debería repasar la lista?

El paso 1 se hace cada semana y el paso 12 cada trimestre. Los otros diez se ajustan una vez y se quedan ajustados; la puntuación de endurecimiento del panel muestra de un vistazo cuándo uno de ellos se ha vuelto a apagar, por ejemplo tras un conflicto de plugins.

¿Sigo necesitando un plugin cortafuegos detrás de Cloudflare?

Cloudflare filtra en el borde y nunca ve un inicio de sesión fallido de WordPress, un comentario o el envío de un formulario, que es donde ocurren la mayoría de los eventos de la tabla de arriba. Las dos capas se complementan, siempre que al plugin se le diga que confíe en la cabecera de Cloudflare para la dirección del visitante.

Sigue leyendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar