Los 5 esenciales: hazlos primero
- Mantén actualizados el núcleo de WordPress, los temas y los plugins. Los plugins vulnerables son el vector de ataque número 1. Activa las actualizaciones automáticas de versiones menores (WordPress 5.6+ lo hace por defecto). Para versiones mayores, actualiza dentro de los 7 días posteriores al lanzamiento. Para plugins, activa la actualización automática de los de confianza; revisa manualmente las notas de versión de los plugins críticos.
- Usa contraseñas fuertes y únicas para cada cuenta de WordPress. Especialmente las de administrador. Usa un gestor de contraseñas (1Password, Bitwarden). Desactiva el nombre de usuario «admin»: crea un nuevo administrador y elimina el antiguo.
- Activa la autenticación de dos factores. Usa Wordfence Login Security (gratis) o nuestro Generador de QR 2FA con cualquier app TOTP. El 2FA derrota más del 99 % de los ataques de relleno de credenciales.
- Instala un plugin de seguridad de confianza. Wordfence (la versión gratuita basta para la mayoría de sitios) o Solid Security. No apiles varios: entran en conflicto. El plugin gestiona el límite de intentos de inicio de sesión, la monitorización de integridad de archivos y el análisis de malware.
- Copias de seguridad diarias fuera del sitio. UpdraftPlus → Dropbox/Google Drive. Haz la copia antes de necesitarla. Prueba el proceso de restauración al menos una vez.
Las 10 siguientes: medidas adicionales de alto impacto
- Fuerza HTTPS. Let's Encrypt es gratis en todo alojamiento moderno. Redirige HTTP a HTTPS a nivel de servidor.
- Cambia el prefijo de las tablas de la base de datos. WordPress usa wp_ por defecto; cámbialo por algo personalizado durante la instalación. No evita ataques, pero dificulta algunos patrones de ataque.
- Desactiva XML-RPC si no lo usas. XML-RPC es un vector común de amplificación de fuerza bruta. Si no usas la app móvil de Jetpack ni la publicación remota, desactívalo mediante .htaccess o un plugin.
- Limita los intentos de inicio de sesión. Wordfence lo hace automáticamente. Evita el relleno de credenciales por fuerza bruta.
- Rota las claves/salts de autenticación de WordPress. Usa nuestro Generador de Salts de WordPress. Rótalas tras cualquier sospecha de compromiso, tras eliminar a un administrador comprometido y cada 6-12 meses de forma rutinaria.
- Usa SSH o SFTP para transferir archivos, nunca FTP plano. El FTP transmite las credenciales en texto plano.
- Restringe el acceso a wp-admin por IP si es posible. Si tu equipo usa IPs fijas (oficina, VPN), limita wp-admin solo a esas IPs. Mediante .htaccess o la configuración de Nginx.
- Desactiva la edición de archivos en wp-config.php. Añade:
define('DISALLOW_FILE_EDIT', true);Evita que los atacantes editen temas/plugins desde el panel si comprometen una cuenta. - Oculta el número de versión de WordPress. Elimina la etiqueta meta generator. No evita ataques, pero reduce el fingerprinting.
- Bloquea los permisos de archivos. Archivos 644, directorios 755, wp-config.php 600. La mayoría de los alojamientos gestionados lo hacen automáticamente; en un VPS, configúralo explícitamente.
Refinamiento: bueno pero no crítico
- URL de inicio de sesión personalizada (p. ej., WPS Hide Login). Sobre todo reduce el ruido del tráfico de bots; no es seguridad real.
- CAPTCHA en los formularios de inicio de sesión. Una leve fricción para los ataques automatizados.
- Desactiva la ejecución de PHP en /uploads/. Evita que se ejecuten shells PHP subidos.
- Usa el WAF de Cloudflare (nivel gratuito). Filtra el tráfico malicioso antes de que llegue a tu servidor.
- Configura una alerta por correo de administrador para las actualizaciones de plugins/núcleo.
- Usa la precarga HSTS para forzar HTTPS a nivel de navegador.
- Desactiva la enumeración de usuarios mediante la API REST (Solid Security o Wordfence lo gestionan).
- Usa cabeceras de Política de Seguridad de Contenido (CSP).
- Desactiva la navegación por directorios (la mayoría de los alojamientos lo hacen por defecto).
- Monitoriza el tiempo de actividad + la integridad con un servicio externo (nivel gratuito de UptimeRobot + Sucuri SiteCheck semanal).
- Limita los roles de usuario al mínimo privilegio. La mayoría de los colaboradores no necesitan acceso de nivel editor.
- Cifrado de copias de seguridad de la base de datos (UpdraftPlus Premium lo ofrece).
- Alojamiento de imágenes fuera del dominio mediante CDN (reduce la superficie de ataque).
- Revisión periódica del registro de auditoría de seguridad.
- Test de penetración anual si el sitio genera ingresos significativos.
Mitos de seguridad de WordPress: omítelos
Varias medidas de «seguridad» muy recomendadas ofrecen una protección real mínima: (1) «Ocultar la versión de WordPress»: conocer tu versión ayuda ligeramente a los ataques dirigidos, pero la solución real es actualizar, no ocultar. (2) «Mover wp-config.php por encima de public_html»: aporta esencialmente cero beneficio de seguridad; el archivo ya está protegido por .htaccess. (3) «Desactivar la API REST»: rompe muchos plugins y bloquea poco. Limita endpoints específicos en su lugar. (4) «Apilar varios plugins de seguridad»: entran en conflicto y se solapan. Un plugin de confianza (Wordfence o Solid Security) cubre lo que harían tres. (5) «Renombrar wp-login.php»: seguridad por oscuridad; los atacantes encuentran la nueva URL fácilmente mediante redirecciones.
Si te han hackeado: lista de recuperación
- No entres en pánico; no elimines cosas de inmediato. Toma primero una instantánea del estado actual para el análisis forense.
- Pon el sitio fuera de línea (plugin de modo mantenimiento o redirección .htaccess a una página estática).
- Cambia todas las contraseñas de administrador y rota los salts de WordPress.
- Audita las cuentas de usuario: elimina de inmediato las cuentas de administrador no reconocidas.
- Analiza en busca de malware con Wordfence Premium o Sucuri.
- Compara los archivos actuales con una descarga limpia de WordPress: el diff revela los archivos del núcleo modificados.
- Revisa la tabla wp_options de la base de datos en busca de entradas inesperadas (a menudo contiene JS inyectado).
- Restaura desde la copia de seguridad limpia más reciente (por esto importan las copias diarias).
- Una vez restaurado, audita cada plugin: elimina los no usados, actualiza todos y reemplaza cualquiera con CVEs públicas.
- Actualiza el núcleo de WordPress a la última versión.
- Vuelve a habilitar el sitio y vigila la reinfección durante 30 días.