Ajustes de seguridad de WordPress que debes conocer

Por qué la seguridad de WordPress es fundamental
El CMS más utilizado da vida a más del 43 % de todos los sitios de internet, lo que lo convierte en el objetivo más habitual de los hackers. Cada día se producen alrededor de 90.000 ataques contra sitios WordPress. Los hackers utilizan herramientas automatizadas que rastrean internet en busca de sitios con vulnerabilidades conocidas: no hace falta ser un objetivo destacado para sufrir un ataque. Basta con un plugin obsoleto o una contraseña débil.
La buena noticia es que puedes evitar la mayoría de los ataques aplicando ajustes de seguridad básicos. No necesitas ser programador ni experto en seguridad: lo único que tienes que hacer es seguir los pasos probados de esta guía y aplicarlos a tu sitio.
Protección del archivo wp-config.php
wp-config.php es el archivo más importante de tu sitio WordPress. Contiene las credenciales de la base de datos, las claves de seguridad, el prefijo de las tablas y otra configuración crítica. Si un atacante consigue acceso a este archivo, tiene el control total de tu sitio.
Mover wp-config.php
WordPress busca automáticamente wp-config.php un directorio por encima de la raíz web. Eso significa que puedes mover este archivo de public_html/ al directorio superior, donde no es accesible desde un navegador web. Es una de las medidas de protección más sencillas pero más eficaces. Si tu hosting no permite el acceso al directorio superior a public_html, ponte en contacto con el soporte de cPanel.
Claves de seguridad y salts
wp-config.php contiene 8 claves de seguridad (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY y sus pares SALT) que se utilizan para cifrar las cookies y las sesiones. Si estas claves están por defecto o vacías, las sesiones de los usuarios son vulnerables. Genera claves únicas en la página Secret Key API de WordPress.org y pégalas en wp-config.php. Rota estas claves periódicamente: eso cerrará automáticamente la sesión de todos los usuarios e invalidará las cookies existentes.
Desactivar la edición de archivos
WordPress tiene un editor integrado que permite editar los archivos PHP del tema y de los plugins directamente desde el panel de administración. Esto supone un enorme riesgo de seguridad: si un atacante consigue acceso a una cuenta de administrador, puede inyectar código malicioso directamente a través del editor. Desactívalo añadiendo la línea define('DISALLOW_FILE_EDIT', true); a wp-config.php. Esto no impide las actualizaciones de plugins ni de temas, solo desactiva la edición directa del código.
Modo de depuración en producción
Nunca dejes WP_DEBUG activado en un sitio en producción. El modo de depuración muestra los errores y avisos de PHP a los visitantes, lo que revela información sobre la estructura del sitio, las rutas de archivos y las versiones del software. Establece define('WP_DEBUG', false); en producción. Si necesitas información de depuración, usa define('WP_DEBUG_LOG', true); junto con define('WP_DEBUG_DISPLAY', false); para que los errores se registren en un archivo en lugar de mostrarse a los visitantes.
Permisos de archivos
Unos permisos de archivos correctos son la primera línea de defensa a nivel de servidor. Unos permisos incorrectos permiten a los atacantes leer, modificar o ejecutar archivos en tu servidor.
Permisos recomendados
WordPress recomienda los siguientes permisos: los directorios deberían tener 755 (el propietario puede leer, escribir y ejecutar; el grupo y los demás pueden leer y ejecutar), los archivos deberían tener 644 (el propietario puede leer y escribir; el grupo y los demás solo pueden leer), wp-config.php debería tener 640 o 600 (solo el propietario puede leer y escribir). Nunca uses permisos 777: eso significa que cualquiera en el servidor puede leer, escribir y ejecutar tus archivos.
Protección del directorio wp-includes
El directorio wp-includes contiene archivos del núcleo de WordPress que nunca deberían ser accesibles directamente. Añade una regla al archivo .htaccess del directorio raíz que bloquee el acceso directo a los archivos PHP de wp-includes. Esto impide que los atacantes ejecuten archivos del núcleo directamente, una técnica habitual en los ataques a WordPress.
Protección del directorio uploads
wp-content/uploads es el único directorio en el que WordPress debe poder escribir (para las imágenes subidas, documentos, etc.). Los atacantes suelen intentar subir un archivo PHP malicioso camuflado como una imagen para luego ejecutarlo. Evítalo añadiendo una regla .htaccess al directorio uploads que prohíba la ejecución de archivos PHP. Así, aunque un atacante consiga subir un archivo PHP, el servidor no lo ejecutará.
Desactivar XML-RPC
XML-RPC (xmlrpc.php) es un protocolo más antiguo que permite que las aplicaciones externas se comuniquen con WordPress. Resultaba útil antes de la REST API, pero hoy representa un riesgo de seguridad importante.
Por qué XML-RPC es peligroso
XML-RPC se utiliza para dos tipos de ataques: ataques de fuerza bruta (un atacante puede probar cientos de contraseñas en una única petición XML-RPC usando el método system.multicall, esquivando la limitación de intentos de la página de inicio de sesión) y ataques DDoS (la función de pingback puede aprovecharse para ataques DDoS de amplificación en los que tu sitio pasa a formar parte de una botnet). La mayoría de las funciones modernas de WordPress (la aplicación móvil, Jetpack) utilizan la REST API en lugar de XML-RPC.
Cómo desactivar XML-RPC
La forma más sencilla es añadir una regla .htaccess que bloquee el acceso al archivo xmlrpc.php y devuelva un estado 403 Forbidden. Como alternativa, usa el filtro en functions.php: add_filter('xmlrpc_enabled', '__return_false');. Esto desactiva la funcionalidad de XML-RPC pero sigue permitiendo el acceso al archivo (es decir, el servidor sigue procesando la petición). Para un bloqueo completo, el método de .htaccess es mejor.
Cabeceras de seguridad
Las cabeceras HTTP de seguridad son instrucciones que el servidor envía al navegador para mejorar la seguridad del sitio. Implementar estas cabeceras no requiere cambios en el código de WordPress: se añaden a .htaccess o a la configuración de nginx.
Content-Security-Policy (CSP)
La cabecera CSP controla qué recursos puede cargar el navegador en tu página. Es la protección más potente contra los ataques XSS (Cross-Site Scripting) porque impide la ejecución de código JavaScript no autorizado. Empieza con la cabecera Content-Security-Policy-Report-Only para probar la política sin bloquear recursos y luego cambia al modo de aplicación. En WordPress, la configuración de CSP puede ser compleja debido a los scripts en línea y los recursos externos que utilizan los temas y los plugins.
X-Content-Type-Options
La cabecera X-Content-Type-Options: nosniff impide que el navegador adivine el tipo MIME de un archivo. Sin esta cabecera, un atacante puede subir un archivo malicioso con la extensión incorrecta y el navegador intentará ejecutarlo basándose en el contenido en lugar de en la extensión. Es una cabecera sencilla y sin efectos negativos: actívala siempre.
X-Frame-Options
La cabecera X-Frame-Options: SAMEORIGIN impide que tu sitio se cargue dentro de un iframe en otro sitio. Esto protege contra los ataques de clickjacking, en los que un atacante superpone un iframe transparente de tu sitio sobre el suyo para engañar a los usuarios y que hagan clic en algo. SAMEORIGIN permite los iframes solo desde el mismo dominio.
Strict-Transport-Security (HSTS)
La cabecera HSTS obliga al navegador a usar siempre una conexión HTTPS cifrada con tu sitio. Una vez que el navegador recibe la cabecera HSTS, redirigirá automáticamente todas las peticiones HTTP a HTTPS sin contactar con el servidor. Esto protege contra los ataques de SSL stripping. Usa Strict-Transport-Security: max-age=31536000; includeSubDomains (1 año). IMPORTANTE: activa HSTS solo después de asegurarte de que el SSL funciona correctamente en todas las páginas.
Referrer-Policy
Referrer-Policy controla cuánta información envía el navegador en la cabecera Referer cuando un usuario hace clic en un enlace. Referrer-Policy: strict-origin-when-cross-origin envía la URL completa en las peticiones del mismo origen, solo el origen en las peticiones HTTPS de origen cruzado y nada en las peticiones HTTP. Esto protege la privacidad del usuario y evita que los parámetros de la URL se filtren a sitios externos.
Ajustes de seguridad adicionales de WordPress
Cambiar la URL de inicio de sesión
La URL de inicio de sesión predeterminada de WordPress es /wp-admin/ o /wp-login.php, que conoce cualquier atacante. Cambiar la URL de inicio de sesión por algo no estándar (p. ej., /mi-acceso/) elimina la mayoría de los ataques automatizados de fuerza bruta, porque los bots no encontrarán la página de inicio de sesión. Usa un plugin como WPS Hide Login para hacer el cambio fácilmente sin modificar archivos del núcleo.
Autenticación de dos factores (2FA)
El 2FA añade una segunda capa de protección además de la contraseña. Aunque un atacante averigüe tu contraseña, no podrá acceder a la cuenta sin el segundo factor (normalmente un código del teléfono). Usa un plugin como Google Authenticator o Wordfence Login Security para implementar el 2FA en todas las cuentas de administrador. Es una de las medidas de protección más eficaces: elimina prácticamente todos los ataques de fuerza bruta y de credential stuffing.
Limitación de los intentos de inicio de sesión
WordPress permite por defecto un número ilimitado de intentos de inicio de sesión, lo que facilita los ataques de fuerza bruta. Usa un plugin como Limit Login Attempts Reloaded, que bloquea una dirección IP tras un determinado número de intentos fallidos (recomendado: 3-5 intentos). Combínalo con un CAPTCHA en el formulario de inicio de sesión para una protección adicional.
Actualizaciones periódicas
Es la medida de seguridad más importante de todas. El 86 % de los sitios WordPress comprometidos usan una versión obsoleta de WordPress, del tema o de un plugin. Activa las actualizaciones automáticas para las versiones menores de WordPress (parches de seguridad) y revisa las actualizaciones de plugins y temas al menos una vez por semana. Elimina los plugins y temas inactivos, porque incluso un plugin desactivado puede tener una vulnerabilidad que se pueda explotar.
Conclusión
La seguridad de WordPress no es una tarea puntual, sino un proceso continuo. Implementa los ajustes de esta guía uno a uno: protege wp-config.php, configura permisos de archivos correctos, desactiva XML-RPC, añade cabeceras de seguridad, cambia la URL de inicio de sesión, activa el 2FA y actualízalo todo con regularidad. Cada una de estas medidas elimina toda una categoría de ataques. En BeoHosting, nuestros planes de hosting vienen con protección del lado del servidor preconfigurada, que incluye un WAF ModSecurity, copias de seguridad automatizadas y análisis de malware, pero la protección del lado del servidor funciona mejor en combinación con un WordPress correctamente configurado.
BeoHosting Team
10+ años de experiencia — Especialistas en alojamiento web e infraestructura
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Última actualización: