No hace falta convertir tu web en una fortaleza para que deje de ser un blanco fácil. La documentación oficial de WordPress señala dos ataques como los más habituales: los que aprovechan plugins o software desfasado, y los que prueban contraseñas en masa hasta acertar. Casi todo lo que sigue va contra esos dos, y está ordenado de más a menos importante.
1. Mantenlo todo actualizado
Es lo primero y lo que más protege. Las versiones antiguas de WordPress, de los plugins y de los temas no reciben parches, y los detalles de un fallo suelen publicarse cuando ya está corregido: a partir de ese momento, quien no ha actualizado es el más expuesto.
- Actualiza WordPress, plugins y tema, y borra los plugins y temas que no uses.
- Descarga WordPress sólo de wordpress.org, y los plugins y temas sólo del directorio oficial o de su fabricante. Nada de versiones «gratis» de plugins de pago sacadas de cualquier sitio.
- El servidor cuenta: WordPress recomienda PHP 8.3 o superior y MySQL 8.4 o MariaDB 10.11 o posteriores.
Cómo hacerlo sin sustos: Actualizar WordPress sin romper nada.
2. Cuida los accesos
Una cuenta de administrador robada puede servir para instalar código que comprometa no sólo la web, sino todo el servidor. Por eso:
- Contraseñas largas, únicas y generadas, guardadas en un gestor de contraseñas. WordPress trae un medidor de fortaleza: hazle caso.
- Nada de usuarios llamados «admin» o «webmaster»: son los primeros que se prueban. Si tienes uno, crea otro administrador con un nombre distinto y quítale el papel de administrador al antiguo, o bórralo.
- Pocos administradores. Cada persona, con el papel mínimo para su trabajo: quien sólo escribe entradas no necesita ser administrador.
- Limita los intentos de acceso, mejor en el servidor o en un cortafuegos que con un plugin: el plugin sigue gastando recursos del servidor durante el ataque. Cambiar la dirección del acceso reduce el ruido, pero no basta como única defensa.
3. Activa la verificación en dos pasos
Con la verificación en dos pasos, una contraseña robada no basta para entrar. WordPress no la trae de serie: hay que añadirla con un plugin de confianza del directorio oficial, y la documentación pide activarla al menos para todos los administradores. Como opción más resistente al phishing propone las passkeys, con al menos dos dispositivos por administrador para no quedarte fuera si pierdes uno.
4. Desactiva el editor de ficheros
El escritorio de WordPress trae un editor para cambiar el código de plugins y
temas. Es lo primero que usa un atacante que consigue entrar. Para quitarlo,
añade esta línea a wp-config.php:
define( 'DISALLOW_FILE_EDIT', true );
No es una protección completa (quien entre aún podría subir ficheros), pero
le quita la herramienta más cómoda. Si además quieres impedir que se instalen
o actualicen plugins y temas desde el escritorio, existe DISALLOW_FILE_MODS;
ojo, porque entonces las actualizaciones tendrás que hacerlas por otra vía, y
dejar de actualizar es peor que lo que evitas.
5. Usa HTTPS en todo, también en el escritorio
Tu web debería ir entera por HTTPS; WordPress pide que el hosting lo admita. Para obligar a que el acceso y el escritorio vayan siempre cifrados:
define( 'FORCE_SSL_ADMIN', true );
Tiene que ir en wp-config.php (en un plugin no sirve) y sólo cuando el
certificado ya funcione. Para subir ficheros, SFTP mejor que FTP: FTP
envía la contraseña sin cifrar.
6. Permisos de ficheros razonables
Los permisos dicen quién puede leer y escribir cada fichero en el servidor.
La documentación de WordPress propone 755 para las carpetas y 644 para
los ficheros. wp-config.php, que guarda la contraseña de la base de datos,
tiene que estar más cerrado: la guía de seguridad propone 400 o 440, y la de
permisos pone 600 en su ejemplo. Lo que encaje depende de cómo esté montado el
servidor, así que pregúntale a tu hosting.
Lo que no debe haber nunca de forma permanente es un 777: deja escribir a cualquier usuario o proceso del servidor.
7. Copias de seguridad que se puedan restaurar
Si todo lo demás falla, la copia es lo que te salva. Una copia completa tiene dos partes, los ficheros y la base de datos, y hacen falta las dos. La documentación recomienda:
- Copia semanal en webs con poco movimiento y diaria en las muy activas, y siempre antes de actualizar.
- Varias copias de fechas distintas, en sitios distintos (no sólo en el mismo servidor). Un ataque puede pasar semanas sin que se note, y una copia de antes del ataque sirve para reconstruir; una de después, para ver por dónde entraron.
- Al restaurar, primero los ficheros y luego la base de datos.
Y de vez en cuando, prueba a restaurar una. Es la única forma de saber que funciona.
8. Lo que ayuda, pero no es lo principal
- Un plugin de seguridad o un cortafuegos (en el servidor o como servicio delante de la web) puede frenar ataques conocidos y avisarte de cambios. No sustituye a nada de lo anterior.
- XML-RPC (
xmlrpc.php) es un objetivo frecuente para probar contraseñas. Si no lo usas (lo usan, por ejemplo, algunas aplicaciones móviles y Jetpack), desactívalo; si lo necesitas, limita las peticiones. - Cambiar el prefijo de las tablas (
wp_) frena algunos ataques automáticos, pero la documentación lo presenta como un complemento, no como una defensa. - Si tienes varias webs en el mismo servidor, cada una con su propia base de datos y su propio usuario. Así, si cae una, no arrastra a las demás.
Seguridad es mantenimiento
La documentación de WordPress lo resume bien: la seguridad no es algo que se hace una vez, sino vigilar y mantener, y tener un plan para cuando algo sale mal. Si ese momento llega, empieza por Mi WordPress ha sido hackeado. Y para saber si lo que tienes instalado tiene fallos conocidos, prueba Comprueba si te afecta.