Endurecer WordPress: los ajustes que protegen sin sumar plugins
En pocas palabras
La mayoría de los WordPress atacados cae por tres causas: un plugin o tema con una vulnerabilidad conocida y sin actualizar, una cuenta de administrador con contraseña débil y sin segundo factor, o un formulario que deja subir archivos ejecutables. Se cierran con configuración, no con más plugins: actualizaciones automáticas, borrar lo que no usás, DISALLOW_FILE_EDIT en wp-config.php, PHP bloqueado en la carpeta de subidas y permisos 755 y 644. Un único plugin alcanza para el segundo factor y el límite de intentos de acceso.
Por dónde entran de verdad
- Una vulnerabilidad publicada en un plugin o un tema. A las pocas horas del anuncio empiezan los escaneos automáticos que buscan sitios con la versión vieja, sin importar si son grandes o chicos.
- Contraseñas filtradas en otro servicio y reutilizadas en WordPress. Los robots prueban listas enteras de usuarios y claves contra
wp-login.php. - Formularios que aceptan cualquier archivo. Si alguien logra subir un
.phpy ejecutarlo, tiene el sitio. - Plugins y temas pagos bajados gratis de sitios piratas. Muchos traen una puerta trasera de fábrica.
Actualizaciones: lo único que no se negocia
- WordPress aplica solo las actualizaciones menores del núcleo, que son las de seguridad. Dejalo así.
- Para los plugins y los temas, activá la actualización automática desde su pantalla, con el enlace que aparece en cada uno. Existe desde WordPress 5.5.
- Borrá los plugins y temas que no usás. Desactivado no alcanza: el código sigue en el servidor y se puede llamar directamente. Dejá solo un tema por defecto de repuesto.
- Desconfiá de los plugins que no se actualizan hace más de un año: en su página de wordpress.org figura la fecha de la última versión.
- Usá una versión de PHP con soporte vigente. El hosting tiene varias y se elige desde el panel; a fines de 2026, la 8.3 o una posterior.
Tres líneas en wp-config.php
Agregalas antes del comentario que indica que dejes de editar el archivo:
define( 'DISALLOW_FILE_EDIT', true );
define( 'FORCE_SSL_ADMIN', true );
define( 'WP_AUTO_UPDATE_CORE', 'minor' );DISALLOW_FILE_EDITsaca el editor de temas y plugins del escritorio. Si alguien entra con una cuenta de administrador, no puede pegar código desde ahí.FORCE_SSL_ADMINobliga a usar https en el acceso y en el escritorio.WP_AUTO_UPDATE_COREenminordeja explícito el comportamiento por omisión: seguridad automática, versiones mayores a mano.- No uses
DISALLOW_FILE_MODS: además del editor bloquea todas las actualizaciones, incluidas las automáticas. - Al archivo, permisos 600 o 640. Y si alguna vez sospechás que entraron, cambiá las claves secretas (
AUTH_KEYy sus compañeras) con el generador de wordpress.org: todas las sesiones abiertas se cierran en el acto.
Que nada se ejecute en la carpeta de subidas
En wp-content/uploads solo tendría que haber imágenes y documentos. Si ahí aparece un PHP, es casi seguro un intruso. Creá un .htaccess en esa carpeta con esto:
<FilesMatch "\.(php|phtml|phar|php[0-9])$">
Require all denied
</FilesMatch>- Subí un archivo de prueba llamado
prueba.phpawp-content/uploads. - Abrilo en el navegador: tiene que dar error 403, prohibido.
- Borralo. Si en lugar del 403 se ejecutó, revisá que el archivo esté dentro de
wp-content/uploadsy se llame exactamente.htaccess, con el punto adelante.
Cuentas: menos administradores y mejores claves
- Un usuario por persona, nunca compartido, y administrador solo quien lo necesita. Para escribir y publicar alcanza el rol de editor o de autor.
- Ningún usuario llamado
admin: es el primero que prueban los robots. - Contraseñas largas y únicas, generadas por un gestor de contraseñas.
- Segundo factor y límite de intentos de acceso, con un solo plugin mantenido y con buena reputación. Varios plugins de seguridad a la vez se pisan entre sí y cargan el sitio sin sumar protección.
- Revisá en tu perfil las contraseñas de aplicación, que usan las integraciones externas, y revocá las que no reconozcas.
Cerrar xmlrpc.php si no lo usás
xmlrpc.php es una interfaz vieja que permite probar cientos de contraseñas en un solo pedido. Si no usás la aplicación móvil de WordPress, Jetpack ni ningún servicio que publique a distancia, cerrala desde el .htaccess de la raíz, fuera del bloque que escribe WordPress:
<Files xmlrpc.php>
Require all denied
</Files>Una segunda puerta delante del escritorio
El panel permite proteger la carpeta wp-admin con usuario y clave del servidor, como se explica en proteger una carpeta con contraseña. Es una barrera que un robot no pasa aunque WordPress tenga una falla en alguna pantalla del escritorio.
Dos detalles. El formulario de acceso es wp-login.php, que está en la raíz y no queda cubierto: a ese lo protege el límite de intentos del plugin. Y muchos temas y plugins usan admin-ajax.php desde el sitio público, así que hay que dejarlo fuera de la protección con este bloque en el .htaccess de wp-admin:
<Files admin-ajax.php>
Require all granted
</Files>Lo que suena bien y protege poco
- Cambiar el prefijo de las tablas en un sitio que ya funciona: se arriesga la base entera por una ganancia mínima.
- Esconder la versión de WordPress: los escáneres la deducen por otros archivos.
- Mover la dirección de acceso: saca del registro a los robots más básicos, pero no frena a nadie que te busque a vos.
- Instalar tres plugins de seguridad "por las dudas": más consultas, más conflictos y la misma protección que uno bien configurado.
Lo que ya pone el hosting
En el hosting de InHosting hay reglas contra ataques y aislamiento entre sitios, SSL incluido y copias automáticas que te dejan volver atrás en pocos clics. El firewall del servidor bloquea la IP que falla varias veces la contraseña del panel, del correo o del FTP.
Lo que ninguna protección del servidor puede hacer es actualizar tus plugins ni saber cuáles de tus usuarios de WordPress son legítimos. Esa parte es tuya.
La revisión de cada mes
- Aplicá las actualizaciones pendientes, con una copia reciente a mano.
- Revisá la lista de usuarios con rol de administrador: que no haya ninguno que no reconozcas.
- Buscá archivos PHP en la carpeta de subidas desde el administrador de archivos del panel. En un VPS,
find wp-content/uploads -name "*.php"no debería devolver nada. - Si tenés WP-CLI,
wp core verify-checksumsywp plugin verify-checksums --allcomparan tus archivos con los originales y marcan los modificados. - Abrí "Herramientas" > "Salud del sitio" y resolvé lo que marque como crítico.
- Probá restaurar una copia de vez en cuando. Una copia que nunca se restauró es una suposición.
Preguntas frecuentes
¿Cómo saco el usuario admin sin perder lo que publicó?
Creá un administrador nuevo con otro nombre, entrá con él y borrá el viejo. WordPress te pregunta a quién asignarle el contenido: elegí el usuario nuevo y no se pierde nada.
¿Las actualizaciones automáticas pueden romper el sitio?
Las del núcleo, casi nunca. Las de plugins, a veces. Con las copias automáticas del hosting volvés atrás en minutos, y si el sitio es una tienda, probá antes las versiones grandes en una copia armada en un subdominio de prueba.
¿Qué hago con un plugin que dejó de actualizarse?
Buscale reemplazo. Cuando wordpress.org retira un plugin del directorio, su página muestra un aviso, y muchas veces el motivo es una falla de seguridad sin corregir.
¿Hace falta un plugin de seguridad si el hosting ya tiene firewall?
Para el segundo factor y el límite de intentos en WordPress, sí. El firewall del servidor cubre el panel, el correo y el FTP; no sabe quiénes son tus usuarios de WordPress ni cuántas veces fallaron en wp-login.php. Uno solo, liviano, alcanza.
Seguí leyendo
Me hackearon el sitio: qué hacer, en qué orden y qué no tocar
Cómo contener un sitio hackeado, encontrar por dónde entraron, restaurarlo o limpiarlo y evitar que vuelva a pasar, paso a paso y sin perder la evidencia.
6 min de lectura
Verificación en dos pasos en el panel: cómo activarla y qué protege
Con un segundo factor, una contraseña filtrada no alcanza para entrar. Cómo activarlo en DirectAdmin, qué app usar y qué hacer si cambiás de teléfono.
5 min de lectura
Permisos de archivos en tu hosting: 644, 755 y por qué nunca 777
Cómo leer los permisos de Linux, qué valor lleva cada archivo y carpeta, cómo cambiarlos desde DirectAdmin o FileZilla y qué hacer si el dueño no es tu usuario.
6 min de lectura
