Seamos sinceros: WordPress es el rey de la web. Mueve más del 40% de Internet. Eso es genial por la comunidad y los recursos, pero también significa que es el objetivo favorito de cualquier ciberdelincuente con tiempo libre (o sea, todos).
Instalar WordPress y no securizarlo es como comprarte un Ferrari y dejarlo aparcado en el peor barrio de la ciudad, con las llaves puestas y un cartel de «róbame» en el parabrisas.
Hoy vamos a hablar de hardening (endurecimiento), o el noble arte de reducir la superficie de ataque (attack surface) hasta que los hackers se aburran y se vayan a molestar a otro.
Índice de contenidos
Lo básico: Si no haces esto, ni sigas leyendo
Empecemos por lo obvio, que curiosamente es lo que más gente ignora. No vamos a entrar en detalle, pero te damos la orientación para que amplíes la información (Holi Chatgpt!, Holi Gemini!).
Actualizaciones: La dieta de tu web
El software desactualizado es la vía de entrada número uno. Tanto el núcleo (core) de WordPress, como los temas y plugins, deben estar al día. Las actualizaciones no son solo nuevas funcionalidades molestas; suelen incluir parches de seguridad (security patches) críticos.
Si ves una notificación de actualización y la ignoras durante meses, básicamente estás diciendo: «Hola, sé que tengo una vulnerabilidad conocida, venid a mí».
Copias de seguridad (Backups)
La regla de oro de la informática: Si no tienes tres copias, no tienes datos. Necesitas un sistema de copias de seguridad automatizado y, lo más importante, externo al servidor. Si tu servidor explota (metafóricamente o porque un ransomware decidió encriptarlo todo), tener el backup en el mismo disco duro es tan útil como un cenicero en una moto.
Identidad y Acceso: Cierra la puerta principal
La mayoría de los ataques son automatizados. Son bots probando llaves en todas las puertas que encuentran.
Mata al usuario ‘admin’
Si tu usuario administrador se llama «admin», «administrator» o el nombre de tu dominio, enhorabuena: ya le has hecho el 50% del trabajo al atacante. Lo primero que intenta un ataque de fuerza bruta (brute force attack) es el usuario «admin».
- Solución: Crea un usuario nuevo con permisos de administrador, un nombre difícil de adivinar y borra el antiguo.
Contraseñas y Autenticación Multifactor (MFA)
«Contraseña123» no es una contraseña, es un chiste de mal gusto. Usa gestores de contraseñas y longitudes absurdas. Pero, sobre todo, activa la autenticación multifactor (MFA). Es esa capa extra que pide un código de tu móvil. Incluso si un atacante consigue tu contraseña (quizás porque la usaste en ese foro de cocina que fue hackeado en 2015), sin el segundo factor, se queda fuera.
Implementar MFA es molesto, sí. Pero es más molesto explicarle a tu jefe por qué la web de la empresa ahora redirige a un sitio de apuestas ruso. Y si, el MFA no lo es todo «ÑEÑEÑE» pero es una capa más.
Limita los intentos de login
Por defecto, WordPress te deja intentar loguearte infinitas veces. Instala un plugin para limitar los intentos de inicio de sesión (login attempts). Después de 3 fallos, bloquea la IP. Que se vayan a adivinar la contraseña de su abuela.
Plugins y Temas: El Caballo de Troya
Aquí es donde entra el desastre. La gente instala plugins para todo: un plugin para que nieve en la web, otro para cambiar el color del scroll…
Minimización
Cada plugin es una puerta potencial. Cuantos más tengas, mayor es tu superficie de ataque. Desactiva y borra lo que no uses. El código inactivo también puede ser explotado si está en el servidor.
Cuidado con lo «Nulled»
¿Te has bajado un tema premium gratis de una web rusa sospechosa? Sorpresa: probablemente viene con «regalo». El software pirata (nulled software) suele estar infectado con puertas traseras (backdoors) o scripts de minería de criptomonedas. Lo barato sale caro, y en ciberseguridad, sale carísimo.
Hardening Técnico: Bajo el capó
Ahora nos ponemos los guantes de látex. Vamos a tocar configuraciones del servidor.
Prefijo de la Base de Datos
Por defecto, las tablas de WordPress empiezan por wp_. Esto hace la vida muy fácil a los ataques de inyección SQL (SQL Injection) automatizados, porque ya saben cómo se llaman tus tablas. Cámbialo durante la instalación o usa un plugin de seguridad para renombrarlo a algo tipo x7z_. No es infalible (seguridad por oscuridad), pero ayuda a despistar a los bots tontos.
Permisos de Archivos (File Permissions)
En Linux/Unix, los permisos importan.
- Directorios:
755 - Archivos:
644 wp-config.php:400o440(nadie más que el servidor debería leer esto).
Si pones permisos 777 (lectura, escritura y ejecución para todo el mundo) a algo, básicamente estás gritando «¡Barra libre!». Nunca, bajo ninguna circunstancia, uses 777.
Desactiva la edición de archivos
WordPress permite editar los archivos .php de temas y plugins desde el panel de administración. Si un hacker entra en tu panel, puede insertar código malicioso directamente desde ahí. Añade esto a tu wp-config.php: define( 'DISALLOW_FILE_EDIT', true );
XML-RPC: El zombi del pasado
XML-RPC es una API antigua que se usaba para conectar apps externas. Hoy en día, la API REST es mejor. XML-RPC es famoso por ser usado para ataques de amplificación DDoS y fuerza bruta. Si no lo usas (y probablemente no lo hagas), bloquéalo en tu .htaccess o con un plugin.
El Escudo Exterior: WAF y HTTPS
SSL/TLS (HTTPS)
A estas alturas, si tu web sigue en HTTP, Google te penaliza y los navegadores te marcan como «No seguro». Pero más allá de eso, necesitas cifrado (encryption) en tránsito para que nadie intercepte tus credenciales cuando te logueas en la cafetería. Usa Let’s Encrypt, es gratis. No tienes excusa.
Web Application Firewall (WAF)
Un cortafuegos de aplicación web (WAF) se coloca delante de tu sitio y filtra el tráfico malicioso antes de que llegue a tu servidor. Servicios como Cloudflare (que tiene capa gratuita) o plugins como Wordfence son vitales. Bloquean bots, escaneos de vulnerabilidades y ataques conocidos.
Checklist de Supervivencia (Resumen para vagos)
Si te has saltado todo el texto porque «mucho texto», al menos haz esto:
- Backup diario externo (fuera de tu servidor).
- Actualiza todo (Core, temas, plugins) religiosamente.
- Elimina el usuario
adminy pon contraseñas de más de 12 caracteres. - Activa MFA (2FA). Es innegociable.
- Instala un plugin de seguridad (WAF) y limita intentos de login.
- Deshabilita la edición de archivos en el dashboard.
- Ponle HTTPS con certificado SSL.
Ejemplo práctico con htaccess
Vamos a profundizar un poco, aunque ya haremos una cybernote más avanzada de hardening en WordPress.
Si tu servidor usa Apache (o LiteSpeed), el archivo .htaccess es importante. Puede bloquear, redirigir y proteger. Aquí van los snippets (fragmentos de código) que separan a los niños de los adultos.
Nota: Añade esto antes de las reglas de WordPress (# BEGIN WordPress).
A. Protege el archivo de configuración (wp-config.php)
El wp-config.php tiene tus claves de base de datos. Si alguien lo lee, game over.
<files wp-config.php>
order allow,deny
deny from all
</files>
#Traducción: "Nadie, absolutamente nadie, puede cargar este archivo desde el navegador".B. Evita el listado de directorios (Directory Browsing)
Si no hay un index.php en una carpeta, el servidor suele mostrar una lista de todos los archivos. Es como dejar que un ladrón vea el plano de tu casa.
Options All -Indexes
#Efecto: Si intentan ver /wp-content/uploads/, verán un "403 Forbidden" en lugar de tus archivos.
C. Bloquea la ejecución de PHP en carpetas de subida
Este es vital. Si un atacante logra subir un archivo llamado malware.php a tu carpeta de imágenes (/uploads), intentará ejecutarlo para tomar el control. Vamos a impedir que se ejecuten scripts ahí.
Crea un archivo .htaccess nuevo DENTRO de /wp-content/uploads/ y pon esto:
<Files *.php>
deny from all
</Files>
#Resultado: Aunque suban el virus, no podrán "detonarlo". Se queda ahí como un archivo inerte.
D. Bloqueo de XML-RPC
Como dijimos antes, si no usas Jetpack o la app móvil de WP, cierra esto. Es un coladero.
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
Conclusión
La seguridad en WordPress no es un producto que compras y te olvidas; es un proceso continuo. Es como limpiar la casa: si dejas de hacerlo, eventualmente la basura te comerá.
Aplicar este hardening no te garantiza una seguridad del 100% (eso no existe, ni desenchufando el servidor), pero elevará la barra lo suficiente como para que los atacantes pasen de largo y se vayan a por la web de tu competencia, que seguro sigue usando «admin/123456».
