Skip to content

Cómo proteger tu sitio WordPress contra hackers

Alejandro Frades | Actualizado en:
Cómo proteger tu sitio WordPress contra hackers

ener un sitio WordPress en marcha es la parte fácil. Mantenerlo en pie mientras media internet intenta entrar como admin ya es otra historia. Si vendes, publicas o gestionas trabajo de clientes sobre WordPress, antes o después los hackers llamarán a tu puerta, y la puerta que eligen casi siempre es la misma: un plugin olvidado, una contraseña débil o una página wp-admin que nadie se molestó en esconder.

No hace falta un máster en ciberseguridad para poner las cosas difíciles, y la mayoría de los consejos que vienen abajo se aplican en diez minutos cada uno, así que la lista entera es una tarde larga de trabajo, no un proyecto. Si quieres ver el cuadro completo más allá de las acciones concretas de este artículo, en nuestra guía completa de mantenimiento WordPress profundizamos en la lógica que hay detrás de estos controles.

La seguridad no es un proyecto que se hace una vez y se olvida, es mantenimiento. El código necesita cuidados, los plugins envejecen, y lo que el año pasado era seguro este año puede tener una CVE pública.

Consejos básicos

1. Mantén todo actualizado

El core de WordPress, los temas y los plugins son las tres piezas que tienes que tener al día, porque el software desactualizado es la vía más común para que un sitio acabe comprometido, y las vulnerabilidades públicas se convierten en escaneos automatizados a las pocas horas de hacerse oficiales.

El orden importa más de lo que la gente cree: copia de seguridad primero, luego actualizar y, por último, comprobar que el sitio sigue funcionando. Saltarte la copia es como una actualización de cinco minutos se transforma en cuatro horas de rollback, y saltarte la verificación es como tus clientes acaban descubriendo el checkout roto antes que tú. Activa las actualizaciones automáticas para versiones menores del core y plugins de confianza, pero deja las versiones mayores y los temas en manual para poder probarlos primero en staging.

2. Usa contraseñas seguras

Sí, es obvio, y sí, en 2026 sigue habiendo gente usando password123. Una contraseña segura es larga, mezcla mayúsculas y minúsculas, números y símbolos, y vive en un gestor como Bitwarden o 1Password en lugar de en tu cabeza. Reutilizar la misma contraseña entre WordPress, hosting y correo es la vía rápida al desastre, porque una brecha en cualquiera de los tres se contagia a los otros dos.

3. Elimina lo que no usas

Cada tema inactivo y cada plugin desactivado sigue ahí, en el servidor, con código que se puede explotar y sumando carga de mantenimiento. Si no lo estás usando, bórralo, no te limites a desactivarlo. Revisa la lista una vez al trimestre y poda todo aquello que no puedas justificar.

4. Cómo elegir un plugin seguro

Esta es la sección que casi nadie escribe, y es donde empiezan la mayoría de infecciones. Antes de instalar un plugin, dedica dos minutos a evaluarlo con cuatro señales.

Primero, la fecha de última actualización en el repositorio de WordPress.org. Un plugin que lleva doce meses sin tocarse o está terminado y estable, o está abandonado y es peligroso, y desde fuera no hay forma de saberlo, así que trata con sospecha cualquier cosa con más de un año a sus espaldas.

Segundo, las instalaciones activas. Un plugin con 3.000.000 de instalaciones activas tiene miles de ojos sobre el código y un incentivo real para parchear rápido, mientras que uno con 200 instalaciones puede estar perfectamente, pero si aparece una vulnerabilidad puede que seas tú quien la descubra por las malas.

Tercero, la valoración y las reseñas. Abre específicamente las reseñas de una estrella, porque ahí es donde te enteras de si el plugin rompe sitios, llama a casa o deja de funcionar después de una actualización reciente.

Cuarto, una búsqueda rápida en Google y en la base de datos de vulnerabilidades de WPScan poniendo el nombre del plugin más «CVE». Si en los últimos doce meses se ha publicado algo feo y no se ha parcheado, da media vuelta sin pensarlo.

Un plugin sano se parece más o menos a esto: 4,5 estrellas o más, cientos de miles de instalaciones activas, última actualización en los dos o tres últimos meses, y sin incidencias de seguridad abiertas en las bases de datos públicas.

5. Instala un plugin de seguridad

Un plugin de seguridad no va a salvar a un sitio mal mantenido, pero sí va a cazar el ruido (logins fallidos, cambios sospechosos en archivos, firmas de malware) y a sacarlo a la superficie antes de que la cosa escale. Wordfence, Sucuri y Solid Security (antes iThemes) son los sospechosos habituales, y cualquiera de ellos es mejor que nada. Activa las alertas para los logins de administrador, la creación de nuevos usuarios y los cambios en archivos del core, porque la mayoría de ataques dejan huella en alguno de esos tres sitios.

6. Cambia la URL de inicio de sesión

Por defecto todo el mundo sabe que tu login está en /wp-admin o /wp-login.php. Moverlo a algo que nadie pueda adivinar (por ejemplo /gestion-1729) reduce muchísimo el tráfico de fuerza bruta, simplemente porque los bots no encuentran la página. No es seguridad real por sí sola, pero es una capa barata que baja el ruido en los logs y la carga de CPU. WPS Hide Login lo hace en dos clics y sin complicaciones.

7. Limita los intentos de inicio de sesión

Si un script puede probar diez mil contraseñas contra tu formulario de login, antes o después una funcionará, sobre todo si tu equipo editorial tiene cariño a las contraseñas predecibles. Limitar los intentos bloquea la IP después de un puñado de fallos y obliga a los atacantes a ir más despacio o cambiar de objetivo. Cinco intentos fallidos en quince minutos y luego treinta minutos de bloqueo es un punto de partida razonable.

Sobre los CAPTCHAs, personalmente preferimos evitarlos por defecto, porque perjudican la accesibilidad, frustran a los usuarios legítimos y rara vez frenan a los bots modernos, que los resuelven mediante servicios de pago por fracciones de céntimo. Mete uno solo si estás viendo abuso real que la limitación de intentos no consigue contener.

8. Haz copias de seguridad regulares

Las copias son el cinturón de seguridad de WordPress. Esperas no necesitarlas nunca, y el día que las necesitas te alegras enormemente de tenerlas. Copias diarias para sitios activos, semanales para el resto, guardadas fuera del propio servidor en S3, Google Drive o Dropbox, nunca solamente en la misma máquina.

La parte que todo el mundo olvida es probar el restore. Un fichero de backup que no se puede restaurar no es un backup, es un fichero. Una vez al trimestre, escoge una copia al azar y restáurala en staging para asegurarte de que el proceso funciona de verdad. UpdraftPlus, BackWPup o el sistema de snapshots de tu hosting cumplen perfectamente, y si gestionas muchos sitios las copias centralizadas a través de Modular DS te ahorran el dolor de tener que entrar uno por uno.

9. Desactiva la edición de archivos desde el panel

WordPress permite a los administradores editar archivos de temas y plugins directamente desde el escritorio, lo cual es cómodo para los desarrolladores y catastrófico si un atacante entra, porque puede colocar una puerta trasera usando ese mismo editor. Desactívalo añadiendo una línea a wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Si necesitas tocar archivos del tema de verdad, hazlo por SFTP y olvídate del editor.

10. Usa la autenticación en dos pasos (2FA)

La autenticación en dos pasos frena en seco la inmensa mayoría de ataques de credential stuffing, porque una contraseña robada no sirve de nada sin el segundo factor. Plugins como Wordfence Login Security, Two Factor o WP 2FA funcionan bien con apps TOTP del tipo Google Authenticator, Authy o 1Password.

Hay un detalle que pilla a más de uno, y es que conviene no dejar un «periodo de gracia» en el que los administradores nuevos puedan entrar sin tener configurado el 2FA. Fuerza la configuración en el primer login, para todos los administradores, sin excepciones, y extiéndelo también a editores y a gestores de tienda, porque son objetivos igual de valiosos.

11. Aplica control de acceso por roles (RBAC)

WordPress viene con varios roles por algo. Administrador, Editor, Autor, Colaborador y Suscriptor tienen cada uno un conjunto específico de capacidades, y dar acceso de Administrador a todo el mundo es una costumbre que conviene quitarse cuanto antes.

Antes de crear un usuario nuevo, dedica diez minutos a pensar qué necesita hacer realmente. Un redactor que escribe borradores necesita Colaborador o Autor, no Administrador, mientras que un cliente que revisa los posts antes de publicar necesita Editor. La persona de marketing que se instala plugins que ha leído en LinkedIn no necesita poder instalar plugins, lo que necesita es pasarte el enlace y dejarte a ti evaluarlo. Cuanto menor sea el radio de impacto por cuenta, un usuario comprometido es un problema, no una catástrofe.

Audita la lista de usuarios dos veces al año, porque los freelancers antiguos, los exempleados y las cuentas de demo se acumulan rápido y cada una de ellas es una superficie de ataque.

12. Monitoriza tu sitio web regularmente

Pon un recordatorio recurrente en el calendario, mensual como mínimo, para revisar usuarios desconocidos, archivos modificados, páginas inesperadas, enlaces salientes raros o cambios en archivos del core. Muchos sitios comprometidos siguen comprometidos durante meses porque nadie mira, y cinco minutos al mes cierran esa ventana de exposición.

Consejos avanzados

1. Usa un firewall de aplicaciones web (WAF)

Un WAF se coloca entre internet y tu servidor, filtra las peticiones maliciosas antes de que lleguen a WordPress y bloquea en el borde sondas de inyección SQL, payloads XSS, peticiones malformadas y tráfico procedente de rangos de IP conocidos por malos. La capa gratuita de Cloudflare cubre las reglas básicas de WAF y la protección frente a bots, Sucuri Firewall es una opción gestionada, y Wordfence trabaja a nivel de aplicación dentro de WordPress. Elijas el que elijas, asegúrate de que ve las IPs reales de los visitantes y no la IP del balanceador, o las reglas de rate limiting y geolocalización dejan de servir para nada.

2. Cambia el prefijo de la base de datos

WordPress pone por defecto wp_ a todas sus tablas, y los scripts automatizados de inyección SQL lo dan por hecho a ciegas. Cambiar el prefijo a algo personalizado, como mds_82a9_ por ejemplo, rompe esos ataques automatizados sin afectar a nada más. En sitios que ya están en producción, plugins como Brozzme DB Prefix and Tools lo hacen de forma segura, pero haz primero copia de la base de datos, porque un cambio de prefijo mal hecho te deja fuera del sitio por completo.

3. Desactiva XML-RPC (y plantéate desactivar también el WP-Cron externo)

XML-RPC tenía sentido en la época de las apps de publicación remota, pero en 2026 es sobre todo un amplificador de fuerza bruta y un vector de DDoS. Si no usas la app móvil de Jetpack ni publicación remota, mátalo sin contemplaciones. Añade esto a .htaccess:

# Block requests to XML-RPC
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

En esa misma línea, el cron interno de WordPress se ejecuta en cada carga de página, y atacantes externos pueden usarlo para amplificar la carga del servidor. Si tu hosting soporta cron real del sistema, desactiva WP-Cron en wp-config.php con define('DISABLE_WP_CRON', true); y configura una tarea cron de sistema que llame a wp-cron.php cada cinco minutos.

4. Configura cabeceras de seguridad HTTP

Las cabeceras de seguridad HTTP le indican al navegador cómo comportarse al cargar tu sitio, y cierran clases enteras de ataques (XSS, clickjacking, MIME sniffing, downgrade de protocolo) a cambio de unas pocas líneas de configuración en el servidor. Las que importan de verdad son Content-Security-PolicyStrict-Transport-SecurityX-Frame-OptionsX-Content-Type-Options y Referrer-Policy. Escanea tu dominio en securityheaders.com para ver qué nota tienes ahora mismo, y a continuación añade las que te falten desde la configuración del servidor o con un plugin como HTTP Headers. El objetivo es llegar a A o A+.

5. Fuerza HTTPS en todo el sitio

HTTPS es la base mínima en cada página, cada recurso y cada petición al panel de administración, porque los avisos de contenido mixto son molestos para los usuarios y suponen un riesgo real para las sesiones en tránsito. Saca un certificado gratis de Let’s Encrypt a través de tu hosting, fuerza HTTPS a nivel de servidor (o con Really Simple SSL si no puedes), y activa HSTS cuando estés seguro de que todo va por HTTPS para que el navegador no haga fallback ni siquiera si alguien escribe la URL a mano.

6. Usa autenticación por claves públicas/privadas (SSH)

Para el acceso SSH al servidor, deshazte directamente de las contraseñas. Genera un par de claves Ed25519 en tu máquina, pega la clave pública en ~/.ssh/authorized_keys del servidor y desactiva la autenticación por contraseña en sshd_config. La fuerza bruta contra tu puerto SSH deja de funcionar de la noche a la mañana. Guarda la clave privada cifrada con una passphrase y haz copia en tu gestor de contraseñas, porque perderla significa perder el acceso.

7. Audita tu sitio con WPScan

WPScan es la herramienta que usan los pentesters para enumerar instalaciones de WordPress, y puedes usarla en tu propio sitio para encontrar lo mismo que encontraría un atacante. Comprueba la versión del core, las versiones de plugins y temas, la enumeración de usuarios y las CVEs conocidas contra la base de datos de vulnerabilidades de WPScan. La forma más cómoda de lanzarlo es con Docker:

docker run --rm -it wpscan/wpscan --url https://tusitio.com --api-token TU_TOKEN

Un token API gratuito en wpscan.com te da 25 escaneos al día, más que suficiente para uso personal.

Dos avisos antes de pulsar el botón. Escanear sitios que no son tuyos no está bien, ni legal ni éticamente, así que céntrate en los propios. Y lanza el escaneo desde un VPS o un entorno dedicado, no desde tu IP de casa, porque si el objetivo está detrás de Cloudflare o un WAF similar el escaneo parece exactamente un ataque real, y Cloudflare puede marcar tu IP como maliciosa, lo cual se contagia luego a otros servicios que comparten inteligencia de amenazas. Una droplet de DigitalOcean de usar y tirar por cinco euros al mes resuelve el problema sin ensuciar nada.

8. Auditoría y monitorización continua

Un escaneo es una foto fija, pero la protección real necesita una monitorización continua que registre logins, cambios de archivos, cambios de rol, instalaciones de plugins y modificaciones de contenido, y que te avise cuando algo se salga del patrón. WP Activity Log y Stream son opciones gratuitas y sólidas, y plataformas gestionadas como Modular DS centralizan los logs de todos los sitios de tus clientes en un único panel. Reenvía las alertas críticas a un canal que mires de verdad, tipo Slack o Telegram, porque una alerta en una bandeja de entrada que no abres no es una alerta.

9. Suscríbete a boletines de seguridad

Las vulnerabilidades no se anuncian solas en tu escritorio. Se publican en listas de correo, en el blog de seguridad de WordPress.org, en avisos de vendors y en servicios como Patchstack y WPScan, y cuanto antes te enteres de una CVE crítica en un plugin que usas, antes podrás parchear.

Una dieta mínima útil sería más o menos esta: el blog de desarrollo del core de WordPress, la lista de correo de seguridad wp-hackers, y el changelog o cuenta social de cada plugin del que dependas para funcionalidad crítica (membership, ecommerce, formularios). Para el resto, el resumen semanal de Patchstack o el feed de WPScan recogen lo importante. Presta especial atención a los plugins que se quedan callados, porque si uno del que dependes lleva doce meses sin actualizarse conviene empezar a buscar alternativa ya, antes de que una CVE te obligue a migrar a la carrera.

Palabras finales

Endurecer un sitio WordPress no es un proyecto de fin de semana, es un hábito. Las actualizaciones se hacen cada semana, las auditorías de plugins cada pocos meses, las copias se prueban, WPScan se ejecuta de vez en cuando y el 2FA se queda activado para todo el mundo. Ninguno de estos puntos es difícil por sí solo, y juntos te colocan muy por delante de la enorme mayoría de sitios que acaban comprometidos por dejadez, no por la habilidad del atacante.

Si prefieres trabajar desde una lista imprimible en lugar de intentar acordarte de todo, mantenemos un checklist mensual de mantenimiento que puedes usar como rutina fija.

Trata el sitio como el activo que es, dale el mantenimiento que necesita, y pasarás mucho más tiempo haciéndolo crecer y mucho menos recuperándote de incidentes.

Autor
Alejandro Frades
Marketing Specialist
Siempre al tanto de las últimas tendencias para aprovecharlas y hacer que el mundo digital sea más ameno y entretenido.

No te pierdas nada

Suscríbete a nuestra newsletter para enterarte antes que nadie de todas las novedades y lanzamientos de Modular DS. Luego no digas que no avisamos 😉