Para proteger WordPress contra ataques debes combinar actualizaciones constantes, configuración segura del servidor, autenticación robusta y un plugin de seguridad que actúe como firewall de aplicaciones web. Ninguna medida aislada es suficiente: la seguridad real es un sistema de capas.
Esta guía cubre las medidas más efectivas, ordenadas de mayor a menor impacto, con instrucciones concretas que puedes aplicar hoy mismo en tu instalación.
1. Mantén todo actualizado: el paso que más vidas salva
La mayoría de los hackeos exitosos explotan vulnerabilidades conocidas en versiones desactualizadas de WordPress, plugins o temas. Las correcciones de seguridad están públicas en los changelogs — los atacantes las leen y automatizan exploits en horas.
- WordPress core: activa las actualizaciones automáticas de seguridad menores en
wp-config.php:define('WP_AUTO_UPDATE_CORE', 'minor'); - Plugins: activa las actualizaciones automáticas desde Plugins > Plugins instalados (columna "Actualizaciones automáticas").
- Temas: haz lo mismo desde Apariencia > Temas. Elimina los temas que no uses, incluyendo los temas por defecto de Twenty Twenty-X si no son tu tema activo.
- PHP: usa PHP 8.2 o superior. PHP 7.4 ya no recibe parches de seguridad.
Regla de oro: si un plugin o tema lleva más de 12 meses sin actualizarse y tiene vulnerabilidades reportadas en WPScan, desinstaló.
2. Endurece la autenticación
Los ataques de fuerza bruta contra /wp-login.php y xmlrpc.php son continuos y automatizados. Son la segunda causa más común de hackeo en WordPress.
Contraseñas fuertes y únicas
Usa el generador de contraseñas de WordPress (mínimo 20 caracteres, alfanumérico + símbolos). Nunca reutilices contraseñas entre el admin de WordPress, cPanel y el correo asociado.
Autenticación de dos factores (2FA)
Instala un plugin de 2FA como WP 2FA o Two Factor (ambos gratuitos en el repositorio oficial). Con 2FA activo, robar la contraseña no es suficiente para acceder.
Limitar intentos de inicio de sesión
Wordfence, iThemes Security y Limit Login Attempts Reloaded bloquean IPs tras N intentos fallidos. Configura: máximo 5 intentos, bloqueo de 30 minutos, y notificación por correo.
Bloquear o mover wp-login.php
Puedes renombrar la URL de login con plugins como WPS Hide Login. Esto reduce el ruido de bots automatizados, aunque no reemplaza 2FA ni la limitación de intentos.
Deshabilitar XML-RPC si no lo usas
Añade esto a tu .htaccess si no necesitas XML-RPC (Jetpack y algunos plugins de terceros sí lo usan):
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
3. Permisos de archivos y configuración del servidor
Los permisos incorrectos son una puerta trasera pasiva: si un atacante puede escribir en carpetas que no debería, el daño escala rápidamente.
| Archivo / carpeta | Permiso correcto | Por qué |
|---|---|---|
| Directorios | 755 | Solo el propietario escribe; el servidor puede leer |
| Archivos PHP | 644 | Solo el propietario escribe; todo el mundo puede leer |
| wp-config.php | 640 o 600 | Solo el propietario accede; ningún proceso externo |
| .htaccess | 644 | Lectura permitida, escritura solo para el propietario |
| Carpeta uploads | 755 + bloqueo PHP | Escritura necesaria, pero nunca debe ejecutar PHP |
Bloquea la ejecución de PHP en la carpeta de uploads añadiendo un archivo .htaccess dentro de wp-content/uploads/ con este contenido:
<Files "*.php">
Deny from all
</Files>
Protege también wp-config.php directamente desde el .htaccess raíz:
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
4. Instala un firewall de aplicaciones web (WAF)
Un WAF filtra el tráfico malicioso antes de que llegue a tu código PHP. Para WordPress hay dos enfoques principales:
WAF a nivel de plugin (Wordfence, iThemes Security Pro)
Wordfence es la opción más popular y su versión gratuita incluye:
- Firewall que bloquea exploits conocidos.
- Escáner de malware que compara tus archivos con los originales del repositorio.
- Protección de fuerza bruta con bloqueo automático de IPs.
- Monitor de tráfico en tiempo real.
La versión premium añade actualizaciones de reglas en tiempo real (la gratuita tiene 30 días de retraso) y bloqueo por reputación de IP.
WAF externo (Cloudflare, Sucuri)
Cloudflare Free ofrece protección DDoS y algunas reglas WAF básicas. El plan Pro (20 USD/mes) activa el WAF completo con miles de reglas. Esta opción protege antes de que el tráfico llegue a tu servidor, lo que supone una ventaja significativa.
Un servicio de seguridad web gestionado puede configurar y mantener el WAF por ti, asegurando que las reglas estén siempre al día y ajustadas a tu sitio específico.
5. Protege la base de datos
La base de datos contiene todo el contenido de tu sitio y las credenciales de los usuarios. Aplicar estas medidas reduce el impacto de una posible vulnerabilidad en el código:
- Cambia el prefijo de las tablas. Por defecto es
wp_, que los atacantes conocen. Cambiarlo a algo aleatorio (por ejemplo,hx7k_) complica los ataques de inyección SQL automatizados. Haz esto en una instalación nueva o con un plugin como iThemes Security. - Usa un usuario de base de datos con privilegios mínimos. El usuario que usa WordPress solo necesita SELECT, INSERT, UPDATE, DELETE. No le des GRANT, DROP ni ALTER.
- Haz respaldos automáticos de la base de datos. Plugins como UpdraftPlus permiten programar respaldos diarios y enviarlos a Google Drive o Dropbox.
- Configura WP_DEBUG en false en producción. Los mensajes de error de PHP y MySQL no deben exponerse al navegador.
6. Cabeceras de seguridad HTTP
Las cabeceras HTTP de seguridad protegen a tus visitantes de ataques como XSS y clickjacking sin ningún costo adicional. Añádelas en .htaccess:
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Verifica el resultado en securityheaders.com — apunta a obtener una calificación A o A+.
7. Respaldos y plan de recuperación
La seguridad perfecta no existe: los respaldos son tu red de seguridad cuando falla todo lo demás.
- Programa respaldos automáticos diarios de archivos y base de datos.
- Guarda al menos 30 días de histórico.
- Almacena las copias fuera del mismo servidor (Google Drive, S3, Dropbox).
- Prueba la restauración una vez al mes — un backup que no restauras es un backup que no existe.
Explora más medidas de protección en nuestra sección de seguridad web y SSL.
Conclusiones clave
- Mantener WordPress, plugins y temas actualizados elimina la mayoría de los vectores de ataque.
- El 2FA hace que robar la contraseña ya no sea suficiente para acceder al panel.
- Los permisos de archivo correctos y el bloqueo de PHP en uploads cortan vías de infección frecuentes.
- Un WAF (Wordfence o Cloudflare) filtra el tráfico malicioso antes de que llegue a tu código.
- Cambiar el prefijo de tablas y limitar privilegios del usuario de BD reduce el impacto de una inyección SQL.
- Las cabeceras HTTP de seguridad protegen a los visitantes sin costos adicionales.
- Los respaldos automáticos fuera del servidor son el último recurso si todo lo demás falla.
Si prefieres que un equipo especializado configure y mantenga la seguridad de tu WordPress, en elenlace.com ofrecemos planes de mantenimiento y seguridad web con monitoreo continuo. Contáctanos y blindamos tu sitio desde hoy.
Preguntas frecuentes
¿Wordfence gratuito es suficiente para proteger mi WordPress?
Para la mayoría de los sitios pequeños y medianos, sí. La versión gratuita incluye firewall, escaneo de malware y protección de fuerza bruta. La limitación principal es que las reglas del firewall tienen 30 días de retraso respecto a la versión premium. Si manejas datos sensibles o procesas pagos, la versión premium o un WAF externo como Cloudflare Pro valen la inversión.
¿Cambiar la URL de wp-login.php realmente mejora la seguridad?
Reduce el ruido: los bots automatizados que atacan la URL por defecto dejarán de intentarlo. Pero un atacante determinado puede encontrar la nueva URL, por lo que no reemplaza al 2FA ni a la limitación de intentos de login. Úsalo como medida complementaria, no como protección principal.
¿Debo usar un tema hijo para no perder mis cambios en las actualizaciones?
Sí, siempre. Modificar el tema padre directamente hace que cualquier actualización del tema borre tus cambios. Con un tema hijo, las personalizaciones son tuyas y el tema padre puede actualizarse con seguridad, incorporando los parches de seguridad que publique el desarrollador.
¿Con qué frecuencia debo revisar la seguridad de mi WordPress?
Revisa el panel de actualizaciones semanalmente. Revisa los logs del plugin de seguridad mensualmente. Haz un escaneo completo con Sucuri SiteCheck o el escáner de Wordfence cada trimestre. Y prueba la restauración de tu backup al menos una vez cada 30 días.
Para saber más
Otros proveedores y guías que vale la pena comparar: