Cómo blindar tu WordPress deshabilitando instalaciones y nuevos administradores
La seguridad en WordPress no consiste en instalar diez plugins de protección, sino en reducir la superficie de ataque. Una vez que un sitio web entra a producción y el diseño está consolidado, mantener abiertas las opciones para editar código, instalar plugins o crear usuarios de máximo nivel representa un riesgo innecesario.

La seguridad en WordPress no consiste en instalar diez plugins de protección, sino en reducir la superficie de ataque. Una vez que un sitio web entra a producción y el diseño está consolidado, mantener abiertas las opciones para editar código, instalar plugins o crear usuarios de máximo nivel representa un riesgo innecesario.
A continuación, analizamos cómo aplicar dos técnicas clave de hardening (fortalecimiento) en WordPress, por qué son indispensables y cómo implementarlas paso a paso.
1. Deshabilitar la instalación de plugins y temas mediante wp-config.php
El riesgo
Uno de los vectores de ataque más comunes tras el robo o adivinación de credenciales administrativas es la subida de un plugin o tema malicioso con una web shell. Una vez subido este archivo PHP, el atacante obtiene control total sobre los archivos del servidor y la base de datos.
La solución
Agregando dos constantes al archivo de configuración de WordPress (wp-config.php), puedes desactivar por completo la instalación, actualización y edición de código desde el panel de control.
Abre tu archivo wp-config.php mediante FTP, SSH o el Administrador de Archivos de tu cPanel y añade las siguientes líneas antes de la frase /* That's all, stop editing! Happy publishing. */:
// Bloquea la instalación, actualización y eliminación de plugins y temas define( 'DISALLOW_FILE_MODS', true ); // Desactiva el editor de código de plugins y temas desde el panel define( 'DISALLOW_FILE_EDIT', true );
¿Qué se logra con esto?
- Desaparecen los botones de "Añadir nuevo" en las secciones de Plugins y Temas.
- Se inhabilita la pestaña Editor de archivos.
- Si un atacante vulnera una cuenta de usuario, no podrá subir archivos
.zipni modificar archivos existentes desde el escritorio de administración.
2. Bloquear la creación de nuevos usuarios Administradores con un Must-Use Plugin
El riesgo
Los atacantes suelen crear usuarios adicionales con el rol de Administrador para asegurar persistencia (un acceso de respaldo) en el sistema por si descubres la intrusión original y cambias tu clave.
La solución
Dado que WordPress no cuenta con una constante nativa en wp-config.php para restringir la asignación de roles, la mejor alternativa es crear un Must-Use Plugin (mu-plugin). Estos scripts se ejecutan de forma automática y ningún usuario puede desactivarlos desde el panel.
- Ve al directorio
wp-content/de tu servidor. - Si no existe la carpeta
mu-plugins, créala. - Dentro de
wp-content/mu-plugins/, crea un archivo llamadobloquear-admin.phpe inserta el siguiente código:
<?php
/*
Plugin Name: Bloquear creación de Administradores
Description: Evita que se creen o asignen nuevos usuarios con el rol de Administrador desde el panel.
*/
add_action('user_profile_update_errors', function ($errors, $update, $user) {
if (isset($_POST['role']) && $_POST['role'] === 'administrator') {
// Solo un Super Admin (en red Multisite) podría omitir esta regla
if (!current_user_can('manage_network')) {
$errors->add(
'role_error',
__('<strong>ERROR</strong>: Por políticas de seguridad, la creación o asignación del rol Administrador está deshabilitada.')
);
}
}
}, 10, 3);
Matriz de Impacto en la Seguridad
| Capa de Seguridad | Ataque Mitigado | Nivel de Riesgo Tras Aplicarlo |
DISALLOW_FILE_MODS | Subida de Web Shells y Backdoors por .zip | Muy Bajo |
DISALLOW_FILE_EDIT | Inyección de código malicioso en el código activo | Bajo |
mu-plugin de Roles | Escalada de privilegios y persistencia de usuarios atacantes | Bajo |
Mejores Prácticas al Implementar estas Reglas
Atención con las actualizaciones: Al activar DISALLOW_FILE_MODS, el panel de WordPress ya no mostrará notificaciones para actualizar plugins con un solo clic.Para mantener la web segura sin descuidar el mantenimiento:
- Gestión vía CLI o Git: Aplica actualizaciones de seguridad conectándote por SSH mediante WP-CLI (
wp plugin update --all) o realizando despliegues automatizados desde un repositorio de código. - Entorno de pruebas (Staging): Cuando necesites probar e instalar un plugin nuevo, hazlo primero en una copia de desarrollo de tu sitio. Una vez verificado, sube los archivos al servidor de producción por SFTP/Git.
- Bloqueo de PHP en
uploads: Complementa esta configuración agregando reglas en tu servidor (.htaccesso Nginx) para prohibir la ejecución de archivos.phpdentro de la carpetawp-content/uploads/.


