WordPress: Proteger el archivo wp-config.php
¿Por qué es tan importante proteger el archivo wp-config.php?
Si has estado un tiempo en el mundo de WordPress, habrás oído hablar de este archivo misterioso llamado wp-config.php. Pero, ¿qué es exactamente y por qué es el centro de atención de los hackers?
Piensa en tu sitio web como una casa. La puerta principal es tu panel de acceso, las ventanas son los plugins y temas, pero la caja fuerte donde guardas las llaves de todo, las escrituras de la propiedad y el código de la alarma es, sin duda, el archivo wp-config.php. Este archivo contiene la información más sensible de tu instalación de WordPress.
Dentro de él se encuentran:
- Las credenciales de la base de datos: El nombre de la base de datos, el usuario y la contraseña. Es el "todo" de tu sitio. Si alguien obtiene esto, puede leer, modificar o borrar todo tu contenido.
- Las claves de autenticación (Salts): Son como las "llaves maestras" que cifran las cookies de tus usuarios. Si un atacante las consigue, puede suplantar la identidad de cualquier usuario, incluido el administrador, sin necesidad de saber su contraseña.
- El prefijo de las tablas de la base de datos: Por defecto es
wp_, pero si lo has cambiado, aquí se define. Conocer esto facilita los ataques de inyección SQL. - Configuraciones específicas del servidor y del sitio: Como la memoria máxima permitida, el modo de depuración (WP_DEBUG) o la ubicación de ciertos directorios.
Si un ciberdelincuente consigue leer este archivo, el control total de tu sitio web es prácticamente un hecho. Por eso, proteger wp-config.php no es una opción, es una necesidad vital para la salud y seguridad de tu proyecto online.
El objetivo: Hacer invisible e inaccesible el archivo
A lo largo de esta guía, vamos a implementar varias capas de seguridad. Ninguna es infalible por sí sola, pero juntas crean una barrera muy difícil de romper. Nuestro objetivo es triple:
- Dificultar su acceso directo: Evitar que se pueda visualizar desde el navegador escribiendo la URL (ej:
tusitio.com/wp-config.php). - Protegerlo en el servidor: Asegurarnos de que el sistema operativo del servidor no permita que otros usuarios (o procesos comprometidos) lo lean.
- Reducir la información expuesta: Si el servidor falla y muestra un error, que no revele datos sensibles.
Vamos a ello.
## Método 1: Asegurar los permisos del archivo (El Escudo Básico)
La forma más fundamental y directa de proteger wp-config.php es a través de los permisos del archivo. En los servidores Linux (que son la mayoría), cada archivo tiene un conjunto de permisos que indican quién puede leer, escribir o ejecutarlo.
Estos permisos se representan con números (como 644, 600, 444) o con letras (rw-r--r--). Para nuestro archivo crítico, queremos que sea lo más restrictivo posible.
### ¿Cuál es el permiso ideal?
El permiso más seguro es 600. Esto significa que solo el propietario del archivo (que normalmente es tu usuario de FTP o cPanel) puede leerlo y escribir en él. Nadie más en el servidor puede ver su contenido.
Otro permiso común es 640, que permite al grupo del servidor (a veces llamado www-data o nobody) leerlo. Esto puede ser necesario si tu configuración de hosting requiere que el servidor web lea el archivo, pero es menos seguro que 600.
### ¿Cómo cambiar los permisos?
Hay dos maneras principales:
Opción A: Desde el Administrador de Archivos de tu Panel de Control
- Accede a tu panel de control de hosting. Si usas Syspanel (recuerda que el acceso es a través del puerto 2106), busca la sección "Administrador de Archivos" o "Archivos".
- Navega hasta la carpeta raíz de tu WordPress (normalmente
public_htmlowww). - Localiza el archivo
wp-config.php. - Haz clic derecho sobre él y selecciona "Permisos" o "Cambiar permisos".
- En la ventana que aparece, introduce el número
600en el campo de permisos numéricos. - Guarda los cambios.
Opción B: Desde un Cliente FTP (como FileZilla)
- Conéctate a tu servidor con tu cliente FTP.
- Navega a la carpeta raíz de WordPress.
- Haz clic derecho sobre
wp-config.phpy selecciona "Permisos de archivo..." (o "File permissions..."). - En el cuadro de diálogo, introduce
600en el campo "Valor numérico". - Asegúrate de que las casillas de "Leer" y "Escribir" solo estén marcadas para el "Propietario" (Owner).
- Haz clic en "Aceptar" o "OK".
[WARNING] Si después de cambiar los permisos a
600tu sitio web da un error (como un error 500 o de conexión a la base de datos), significa que tu servidor necesita que el archivo sea legible por el grupo del servidor web. En ese caso, utiliza el permiso640en lugar de600. Es un buen equilibrio entre seguridad y funcionalidad.
## Método 2: Bloquear el acceso desde el navegador (La Muralla Virtual)
Aunque los permisos del archivo son cruciales, a veces el servidor web está configurado de forma que puede servir el archivo como texto plano si se solicita directamente. Para evitarlo, necesitamos una capa adicional a nivel de servidor.
### Opción A: Editando el archivo .htaccess (para servidores Apache)
Este es el método más común y efectivo. El archivo .htaccess es un archivo de configuración que le dice al servidor Apache cómo comportarse.
- Conéctate a tu hosting (por FTP o administrador de archivos).
- Busca el archivo
.htaccessen la raíz de tu WordPress. Si no lo ves, activa la opción de "Mostrar archivos ocultos" en tu cliente FTP. - Descarga una copia de seguridad de este archivo a tu ordenador.
- Edita el archivo
.htaccessoriginal con un editor de texto plano (como el Bloc de notas). - Añade el siguiente código al final del archivo:
# PROTEGER WP-CONFIG.PHP
<Files wp-config.php>
Order Allow,Deny
Deny from All
</Files>
- Guarda los cambios y sube el archivo de nuevo a tu servidor (si lo editaste localmente).
Este código le dice al servidor: "Para el archivo wp-config.php, no permitas el acceso a nadie".
### Opción B: Editando la configuración de Nginx (para servidores Nginx)
Si tu hosting utiliza Nginx (más moderno y rápido), no hay archivo .htaccess. La configuración se realiza en el archivo de configuración del sitio (normalmente en /etc/nginx/sites-available/ o similar, pero no siempre tienes acceso).
Si tienes acceso a la configuración de Nginx, añade este bloque dentro de server { ... }:
# PROTEGER WP-CONFIG.PHP
location ~* wp-config.php {
deny all;
}
[INFO] Si usas un panel como Syspanel (acceso por puerto 2106), es probable que gestiones Nginx. Si no te sientes cómodo editando estos archivos, el siguiente método (Mover el archivo) es una alternativa excelente.
### Opción C: Usando un Plugin de Seguridad
Para los usuarios menos técnicos, la forma más sencilla de añadir esta regla sin tocar código es mediante un plugin de seguridad. Plugins como Wordfence, Sucuri Security o All In One WP Security tienen opciones específicas para "Proteger wp-config.php" o "Bloquear archivos sensibles".
Simplemente instala uno de estos plugins, ve a su panel de "Firewall" o "Configuración", y activa la opción que bloquea el acceso a archivos críticos. El plugin se encargará de añadir las reglas necesarias al .htaccess o a la configuración de Nginx por ti.
## Método 3: Mover el archivo a un directorio superior (El Escondite)
WordPress es lo suficientemente flexible como para permitir que el archivo wp-config.php no esté en la raíz del sitio. De hecho, puedes moverlo un nivel por encima de tu directorio público (el que se ve en internet) y WordPress lo encontrará automáticamente.
¿Cómo funciona?
- Tu directorio público (donde se ve tu web) es normalmente
public_html. - Puedes mover
wp-config.phpa la carpeta padre (por ejemplo, la carpeta de tu usuario, justo antes depublic_html).
¿Por qué es tan efectivo?
Porque el directorio padre no es accesible desde internet. Es como si guardaras la caja fuerte en una habitación secreta que no tiene puerta al exterior. Nadie puede intentar acceder a tudominio.com/wp-config.php porque el archivo ya no está ahí.
Pasos para hacerlo:
- Conéctate a tu hosting por FTP o administrador de archivos.
- Localiza el archivo
wp-config.phpen tu carpeta raíz (public_html). - Descarga una copia de seguridad del archivo a tu ordenador.
- Corta y pega el archivo en la carpeta superior. En FileZilla, esto es tan fácil como arrastrarlo un nivel hacia arriba en el árbol de directorios.
- Una vez movido, intenta acceder a tu sitio web y a
wp-admin. Todo debería funcionar con normalidad.
[TIP] Si después de moverlo tu sitio da un error, es posible que el servidor tenga restricciones de "open_basedir" que impidan a PHP leer archivos fuera del directorio público. En ese caso, tendrás que volver a poner el archivo en su lugar original y confiar en los otros dos métodos. También puedes intentar usar una ruta absoluta dentro del archivo para forzar la localización de la carpeta de WordPress, pero eso es más avanzado.
## Método 4: Configuraciones avanzadas dentro del archivo
Además de proteger el archivo desde fuera, podemos añadir líneas de código dentro del propio wp-config.php para reforzar su seguridad.
### Desactivar la edición de archivos desde el panel
Por defecto, WordPress permite a los administradores editar los archivos de temas y plugins directamente desde el panel de administración. Esto es un riesgo, porque si un atacante consigue acceder a tu panel como administrador, podría inyectar código malicioso en estos archivos.
Añade esta línea a tu wp-config.php para desactivar esa función:
define('DISALLOW_FILE_EDIT', true);
### Desactivar el modo de depuración (WP_DEBUG)
El modo de depuración muestra errores de PHP en tu sitio web. Si está activado en un sitio de producción, puede revelar rutas de archivos, nombres de base de datos y otra información sensible a los visitantes.
Asegúrate de que estas líneas estén configuradas así:
define('WP_DEBUG', false);
Si necesitas depurar algún problema temporalmente, actívalo, resuélvelo y vuelve a ponerlo en false.
### Cambiar el prefijo de la base de datos
Aunque no es una configuración dentro de wp-config.php en sí, la variable $table_prefix se define aquí. Cambiar el prefijo de wp_ a algo personalizado (como miprefijo_) dificulta enormemente los ataques de inyección SQL, ya que los atacantes asumen que es el valor por defecto.
$table_prefix = 'miprefijo_';
[WARNING] Cambiar el prefijo de la base de datos no es un cambio trivial. Debes actualizar todas las tablas de tu base de datos y, a menudo, requiere de un plugin o conocimientos avanzados. Si no estás seguro, es mejor dejar esta tarea para un profesional.
## Resumen: Tu lista de verificación de seguridad
Para asegurar WordPress y, en particular, proteger wp-config.php, sigue esta lista:
- Cambia los permisos del archivo a
600(o640si es necesario). ✅ - Bloquea el acceso directo desde el navegador añadiendo las reglas en
.htaccesso en la configuración de Nginx. ✅ - Mueve el archivo fuera del directorio público si tu hosting lo permite. ✅
- Desactiva la edición de archivos desde el panel de administración. ✅
- Asegúrate de que
WP_DEBUGesté desactivado. ✅ - Considera cambiar el prefijo de la base de datos si te sientes cómodo haciéndolo. ✅
- Mantén siempre una copia de seguridad de tu
wp-config.phpen un lugar seguro (fuera de tu servidor). ✅
## Preguntas Frecuentes (FAQ)
¿Qué pasa si mi sitio da un error después de cambiar los permisos a 600?
Es probable que tu servidor necesite que el archivo sea legible por el grupo del servidor web. Cambia los permisos a 640 y el error debería desaparecer.
¿Puedo usar un plugin de seguridad en lugar de tocar el .htaccess?
Sí, absolutamente. Los plugins de seguridad son una forma excelente y fácil de añadir estas reglas sin tener que codificar. Recomendamos Wordfence o Sucuri.
¿Es suficiente con usar solo uno de estos métodos?
Es mejor usar una combinación. Por ejemplo, cambiar los permisos y bloquear el acceso desde el navegador es un buen punto de partida. Cuantas más capas de seguridad tenga tu sitio, más difícil será para los atacantes.
¿Mover el archivo wp-config.php es la opción más segura?
Sí, es una de las más seguras, ya que elimina el archivo del alcance directo de internet. Sin embargo, no todos los entornos de hosting lo permiten.
¿Con qué frecuencia debo revisar la seguridad de mi archivo wp-config.php?
Es una buena práctica revisar la configuración de seguridad de tu WordPress al menos una vez al mes. También deberías hacerlo después de cualquier cambio importante en tu hosting o en tu sitio web.
¿Qué es Syspanel?
Syspanel es un panel de control de hosting (similar a cPanel o Plesk) que ofrece una interfaz gráfica para gestionar tus archivos, bases de datos y dominios. Puedes acceder a él a través del puerto 2106 (por ejemplo, tudominio.com:2106). Es una herramienta muy útil para aplicar los cambios de permisos que hemos mencionado.
¿Proteger wp-config.php me garantiza que no me hackeen?
No, ningún método garantiza una seguridad del 100%. Sin embargo, proteger este archivo crítico es uno de los pasos más importantes que puedes dar para asegurar WordPress y elevar la dificultad de un ataque, haciendo que los ciberdelincuentes se dirijan a objetivos más fáciles.
Esperamos que esta guía te haya sido de gran ayuda. Proteger tu sitio web es un proceso continuo, y empezar por el archivo más importante es un gran paso. ¡Ahora ya sabes cómo blindar la caja fuerte de tu WordPress!
