🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

WordPress: Cómo proteger el archivo wp-config.php de ataques

Actualizado el 16 de febrero de 2026

WordPress es, con diferencia, el gestor de contenidos (CMS) más utilizado del planeta. Esa misma popularidad lo convierte en un objetivo constante para bots y atacantes que buscan vulnerabilidades. Si hay un archivo que debes blindar a cal y canto en tu instalación, ese es, sin lugar a dudas, el wp-config.php.

¿Por qué? Porque este pequeño archivo contiene las llaves de tu reino: las credenciales de la base de datos, las claves secretas de autenticación (salts) y la configuración crítica del núcleo. Si un atacante consigue leerlo, tendría acceso total a tu base de datos, pudiendo robar información, inyectar malware o secuestrar tu sitio por completo.

En esta guía extensa y práctica, vamos a desgranar, paso a paso y sin tecnicismos innecesarios, todas las estrategias para proteger wp-config.php y elevar la seguridad WordPress a otro nivel. No necesitas ser un hacker ni un desarrollador experto; solo seguir estas recomendaciones con calma.

¿Qué es exactamente el archivo wp-config.php y por qué es tan valioso?

Antes de lanzarnos a las soluciones, es fundamental entender qué es este archivo. Piensa en WordPress como un coche: el motor es la base de datos, el chasis son los archivos del núcleo y el contacto con la llave es... el wp-config.php.

Este archivo se encuentra en la raíz de tu instalación de WordPress (la carpeta principal donde están las carpetas wp-admin, wp-content, etc.). Su misión es conectar WordPress con su base de datos MySQL. Sin él, WordPress no puede funcionar.

Dentro de este archivo se almacenan datos sensibles:

  • El nombre de la base de datos.
  • El usuario y la contraseña de la base de datos.
  • El host de la base de datos (normalmente localhost).
  • Las claves de autenticación (Authentication Unique Keys and Salts).
  • El prefijo de las tablas de la base de datos (por defecto wp_).
  • A veces, opciones de depuración (WP_DEBUG) o constantes de memoria.

Si un atacante obtiene este archivo, tiene el mapa y las llaves de tu sitio. Podría conectarse directamente a tu base de datos desde fuera, sin necesidad de pasar por el panel de administración de WordPress. Por eso, la protección de este archivo es la primera línea de defensa en cualquier estrategia de seguridad WordPress.

Método 1: Asegurar los permisos del archivo (la base de todo)

El sistema de archivos de tu servidor tiene un sistema de permisos. Estos permisos determinan quién puede leer, escribir o ejecutar un archivo. Si los permisos son demasiado permisivos, cualquiera podría leer el archivo a través de una vulnerabilidad en otro script o incluso directamente si el servidor está mal configurado.

Permisos recomendados para wp-config.php

Los permisos se representan con tres números (por ejemplo, 644 o 600). Cada número representa los permisos para el propietario, el grupo y el resto del mundo, respectivamente.

  • 6 = Lectura y escritura (4+2).
  • 4 = Solo lectura.
  • 5 = Lectura y ejecución (4+1).
  • 7 = Lectura, escritura y ejecución (4+2+1).

Para proteger wp-config.php, el permiso más seguro es 600. Esto significa que solo el propietario del archivo (tu usuario de hosting) puede leerlo y modificarlo. Ni el grupo ni el resto del mundo pueden acceder a él.

En muchos servidores compartidos, el usuario de PHP (el que ejecuta WordPress) es el mismo que el propietario del archivo, por lo que 600 funciona perfectamente. En otros, donde PHP se ejecuta como un usuario diferente (por ejemplo, www-data), podría necesitarse el permiso 640 (lectura para el grupo). Si pones 600 y el sitio falla, prueba con 640.

Cómo cambiar los permisos

Opción A: Desde el panel de control de tu hosting (cPanel o similar)

  1. Accede a tu panel de control y busca el "Administrador de archivos" (File Manager).
  2. Navega hasta la carpeta raíz de tu WordPress.
  3. Haz clic derecho sobre wp-config.php y selecciona "Permisos" o "Change Permissions".
  4. Introduce el valor numérico 600 (o 640 si falla) en el cuadro de texto.
  5. Asegúrate de que las casillas de "Grupo" y "Público" estén desmarcadas.
  6. Guarda los cambios.

Opción B: Desde un cliente FTP (como FileZilla)

  1. Conéctate a tu servidor por FTP.
  2. Navega a la carpeta raíz.
  3. Haz clic derecho sobre wp-config.php y selecciona "Permisos de archivo..." (File permissions).
  4. En la ventana emergente, introduce 600 en el campo "Valor numérico".
  5. Desmarca todas las casillas de las columnas "Grupo" y "Público".
  6. Acepta.

[WARNING] Cambiar los permisos a 600 puede provocar que WordPress te pida las credenciales de FTP al intentar instalar plugins o temas automáticamente. Si esto ocurre, es una señal de que tu servidor necesita el permiso 640. No te preocupes, es un ajuste menor.

Más allá del 600: Bloquear el acceso desde el navegador

Incluso con permisos 600, existe un pequeño riesgo si el servidor tiene una configuración extraña. La mejor práctica es bloquear el acceso directo a este archivo a través del navegador. Para ello, usaremos el archivo .htaccess.

.htaccess es un archivo de configuración del servidor Apache. Si tu hosting usa LiteSpeed o Nginx con compatibilidad, también funciona. Vamos a añadir una regla que deniegue cualquier petición que intente acceder directamente a wp-config.php.

  1. Abre el Administrador de archivos o el FTP.
  2. Localiza el archivo .htaccess en la raíz de WordPress. Si no lo ves, activa la opción de "Mostrar archivos ocultos".
  3. Descárgalo y ábrelo con un editor de texto plano (como el Bloc de notas o Sublime Text).
  4. Añade el siguiente código al principio del archivo, justo después de la línea <IfModule mod_rewrite.c> y antes de RewriteBase / (si existe):
# Bloquear acceso directo a wp-config.php
<Files wp-config.php>
    Order Allow,Deny
    Deny from all
</Files>

Si tu servidor usa Apache 2.4 o superior, la sintaxis Order y Deny está obsoleta. En su lugar, usa:

# Bloquear acceso directo a wp-config.php
<Files wp-config.php>
    Require all denied
</Files>

Puedes incluir ambas para máxima compatibilidad, pero asegúrate de que esté bien estructurado. El bloque de código completo quedaría así:

<Files wp-config.php>
    Order Allow,Deny
    Deny from all
    Require all denied
</Files>
  1. Guarda el archivo y súbelo de nuevo a tu servidor (reemplazando el existente).

Ahora, si alguien intenta visitar https://tudominio.com/wp-config.php, verá un error 403 (Prohibido) en lugar del contenido o un archivo vacío.

[INFO] En algunos servidores Nginx, el .htaccess no se tiene en cuenta. En ese caso, deberías añadir una regla similar en el bloque de configuración del servidor (server block). Sin embargo, para la mayoría de los usuarios de hosting compartido, el método .htaccess es el estándar.

Método 2: Reubicar el archivo wp-config.php (la estrategia avanzada)

¿Sabías que WordPress permite mover el archivo wp-config.php fuera de la carpeta raíz? Esta es una táctica de seguridad WordPress muy efectiva porque, aunque un atacante encuentre una vulnerabilidad que le permita leer archivos del directorio público, el archivo simplemente no estará ahí.

¿Cómo funciona?

WordPress, al cargarse, busca el archivo wp-config.php en la raíz. Si no lo encuentra, busca en el directorio inmediatamente superior (un nivel por encima de la carpeta pública). Esta es una característica oficial y segura.

Pasos para reubicarlo

  1. Crea una carpeta fuera del directorio público de tu sitio. Por ejemplo, si tu sitio está en public_html, crea una carpeta llamada config en el mismo nivel (es decir, dentro de public_html, pero a su mismo nivel). La estructura sería:

    public_html/ (tu web)
    config/ (carpeta nueva)

    En muchos alojamientos, la ruta sería algo así: /home/usuario/config/ y /home/usuario/public_html/.

  2. Mueve el archivo wp-config.php desde la raíz de public_html a la nueva carpeta config.

  3. Importante: WordPress buscará el archivo en config/wp-config.php automáticamente. Pero, ¿y si tu estructura es más compleja? Puedes forzar la ruta. Abre el archivo wp-config.php (ahora en la nueva ubicación) y añade esta línea al principio, justo después de la apertura <?php:

define( 'ABSPATH', dirname( __FILE__ ) . '/' );
No, espera, eso no es correcto. La forma más segura y sencilla es dejarlo tal cual. WordPress, por defecto, sube un nivel desde la raíz. En la mayoría de los casos, solo moverlo a la carpeta superior funciona.

Si tu hosting tiene una estructura de carpetas compleja y no lo detecta, puedes usar la constante `ABSPATH`. Añade esta línea al archivo reubicado:
define( 'ABSPATH', '/ruta/completa/a/tu/public_html/' );
Pero esto es más avanzado. Para el 99% de los casos, mover el archivo a la carpeta inmediatamente superior es suficiente.

4. Prueba tu sitio web. Si todo funciona, habrás movido el archivo con éxito.

[TIP] Esta técnica es especialmente útil en servidores dedicados o VPS donde tienes control total sobre la estructura de archivos. En hosting compartido, a veces el directorio superior no es accesible desde el "File Manager" normal, pero sí por FTP con la cuenta principal.

Método 3: Fortalecer las claves de autenticación (Salts)

Las claves de autenticación (salts) son un conjunto de cadenas de texto aleatorias que WordPress utiliza para cifrar las cookies de sesión de los usuarios. Si estas claves son débiles o conocidas, un atacante podría falsificar cookies y acceder a tu panel de administración sin necesidad de conocer la contraseña.

¿Cómo cambiarlas?

  1. Accede a la página oficial de WordPress: https://api.wordpress.org/secret-key/1.1/salt/.
  2. Esta página genera un conjunto de claves aleatorias. Cópialas.
  3. Abre tu wp-config.php (ya sea en su ubicación original o en la nueva).
  4. Localiza las líneas que empiezan por define('AUTH_KEY', define('SECURE_AUTH_KEY', etc.
  5. Reemplaza las líneas existentes con las nuevas que acabas de copiar.

Este proceso es seguro y no afecta a tu contenido. Simplemente invalidará las sesiones actuales de todos los usuarios (incluida la tuya), por lo que deberás volver a iniciar sesión.

[INFO] Es una buena práctica cambiar estas claves cada pocos meses o después de que sospeches de una posible intrusión.

Método 4: Cambiar el prefijo de las tablas de la base de datos

El prefijo predeterminado de las tablas de WordPress es wp_. Esto facilita los ataques WordPress por inyección SQL, ya que los atacantes conocen los nombres de las tablas (por ejemplo, wp_users, wp_options).

Cómo cambiarlo

Opción A: Antes de instalar WordPress. Si aún no has instalado, simplemente cambia el prefijo durante el proceso de instalación.

Opción B: En una instalación existente. Este proceso es más delicado y requiere acceso a phpMyAdmin.

  1. Haz una copia de seguridad completa de tu base de datos antes de continuar. Esto es crucial.
  2. Accede a phpMyAdmin desde tu panel de control.
  3. Selecciona tu base de datos.
  4. Haz clic en la pestaña "SQL" y ejecuta la siguiente consulta para renombrar todas las tablas (reemplaza nuevo_prefijo por el que quieras usar, por ejemplo, miwp_):
RENAME TABLE wp_commentmeta TO miwp_commentmeta;
RENAME TABLE wp_comments TO miwp_comments;
RENAME TABLE wp_links TO miwp_links;
RENAME TABLE wp_options TO miwp_options;
RENAME TABLE wp_postmeta TO miwp_postmeta;
RENAME TABLE wp_posts TO miwp_posts;
RENAME TABLE wp_terms TO miwp_terms;
RENAME TABLE wp_term_relationships TO miwp_term_relationships;
RENAME TABLE wp_term_taxonomy TO miwp_term_taxonomy;
RENAME TABLE wp_usermeta TO miwp_usermeta;
RENAME TABLE wp_users TO miwp_users;
  1. Abre tu archivo wp-config.php y cambia la línea que define el prefijo:
$table_prefix = 'miwp_';
  1. Guarda el archivo.

[WARNING] Si tienes plugins que crean sus propias tablas (como WooCommerce), deberías renombrarlas también. No hacerlo podría romper el plugin. Este paso es avanzado; si no te sientes cómodo, déjalo o pide ayuda a tu soporte.

Método 5: Configurar correctamente el archivo y el servidor

Además de los permisos y la ubicación, hay configuraciones adicionales que puedes añadir al wp-config.php para reforzar la seguridad WordPress.

Deshabilitar la edición de archivos desde el panel

Por defecto, WordPress permite editar los archivos de temas y plugins desde el panel de administración. Esto es un riesgo, ya que si un atacante obtiene acceso a un usuario con permisos de administrador, podría inyectar código malicioso directamente.

Añade esta línea a tu wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Esto desactivará el editor de archivos del panel. Es una medida de seguridad excelente.

Deshabilitar la depuración (WP_DEBUG)

Solo para entornos de desarrollo. En producción, la depuración debe estar desactivada para no mostrar errores internos que puedan revelar información sensible.

Asegúrate de que tu archivo tenga:

define( 'WP_DEBUG', false );

Forzar SSL en el panel de administración

Si tienes un certificado SSL instalado (algo imprescindible hoy en día), fuerza el uso de HTTPS en el área de administración:

define( 'FORCE_SSL_ADMIN', true );

Método 6: Protección a nivel de servidor (Nginx y LiteSpeed)

Si tu sitio está en un servidor Nginx o LiteSpeed, el .htaccess no se aplica. Deberás modificar el archivo de configuración del servidor.

Para Nginx

Dentro del bloque server { ... }, añade:

location ~* ^/wp-config\.php$ {
    deny all;
}

Para LiteSpeed

LiteSpeed es compatible con .htaccess, pero también puedes añadir reglas en su configuración. La forma más sencilla es usar el .htaccess como se explicó antes.

Para Syspanel (anteriormente HestiaCP)

Si tu hosting utiliza Syspanel (el antiguo HestiaCP), la gestión es muy intuitiva. Recuerda que para acceder a la configuración avanzada de tu servidor, el puerto de acceso es el 2106.

Pasos en Syspanel:

  1. Accede a tu panel de control en https://tudominio.com:2106.
  2. Ve a la sección "Web" y encuentra tu dominio.
  3. Haz clic en "Configuración" o el icono de edición.
  4. Dependiendo de si usas Apache o Nginx, verás las opciones. Syspanel suele usar Apache + Nginx como proxy. Deberías añadir la regla en el bloque de configuración de Apache (si existe) y en el de Nginx.

En la configuración de Apache (vhost):

<Files wp-config.php

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel