Blindar el archivo wp-config.php
es una de las medidas más efectivas que puedes tomar para proteger tu sitio WordPress. Este archivo contiene información crítica como las credenciales de acceso a la base de datos, claves de seguridad y configuraciones esenciales del core. Si un atacante logra acceder a él, podría tomar el control total de tu sitio.
En este artículo te mostraré cómo protegerlo manualmente sin instalar plugins, aplicando medidas directamente desde el servidor y el propio sistema de archivos.
¿Por qué es tan importante proteger wp-config.php
?
El archivo wp-config.php
no solo contiene tu usuario y contraseña de la base de datos. También es el lugar donde se definen:
- Las authentication keys de WordPress
- El prefijo de tablas de la base de datos
- Modo de debug
- Configuraciones de caché, WAF o restricciones personalizadas
En manos equivocadas, este archivo expone toda la arquitectura de tu sitio. Por eso blindarlo es una prioridad.
1. Mover wp-config.php
a un nivel superior
WordPress permite mover el archivo wp-config.php
una carpeta arriba de la raíz del sitio. Por ejemplo:
- Si tu WordPress está en
/home/usuario/public_html/
- Puedes mover
wp-config.php
a/home/usuario/
WordPress lo buscará automáticamente si no lo encuentra en la raíz. Esto evita que se acceda desde el navegador, incluso si hay alguna mala configuración de Apache o NGINX.
¿Cómo hacerlo?
- Accede por FTP o SSH.
- Mueve el archivo: bashCopiarEditar
mv public_html/wp-config.php ../wp-config.php
- Verifica que el sitio sigue funcionando correctamente.
Consejo: Si usas herramientas como WP-CLI o scripts personalizados, asegúrate de que no dependan de una ruta fija.
2. Denegar el acceso por .htaccess
(Apache)
Si estás usando Apache, puedes bloquear completamente el acceso al archivo desde el navegador.
Agrega esta regla al .htaccess
en la raíz de tu sitio:
<files wp-config.php>
order allow,deny
deny from all
</files>
Esto instruye al servidor a no permitir ningún acceso directo al archivo desde HTTP.
3. Protección equivalente en NGINX
Si usas NGINX, la directiva para proteger wp-config.php
es diferente. Agrégala dentro del bloque server
de tu configuración:
location ~* wp-config.php {
deny all;
}
Después de aplicar esta regla, recarga la configuración:
sudo systemctl reload nginx
4. Cambiar permisos de archivo
Los permisos adecuados para wp-config.php
son fundamentales. En un servidor compartido o mal configurado, un permiso amplio puede ser un agujero de seguridad.
Recomendaciones:
- Propietario: el mismo que corre el servidor web (por ejemplo,
www-data
oapache
) - Permisos:
600
o640
, dependiendo del entorno
chmod 600 wp-config.php
chown www-data:www-data wp-config.php
Esto garantiza que solo el servidor pueda leer el archivo.
5. Definir constantes de seguridad en lugar de usar el archivo .htaccess
Otra técnica útil es evitar que configuraciones sensibles se expongan en .htaccess
y mover esas directivas al propio wp-config.php
.
Por ejemplo, forzar SSL desde aquí:
define('FORCE_SSL_ADMIN', true);
O desactivar la edición de archivos desde el panel:
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
6. Monitorea cambios con herramientas del servidor
Si tienes acceso root o permisos elevados, puedes usar herramientas como inotify
para monitorear accesos o cambios al archivo.
Ejemplo con inotifywait
:
inotifywait -m wp-config.php
También puedes configurar reglas con auditd
para registrar cualquier lectura o escritura en el archivo, útil en entornos de producción exigentes.
7. Refuerza el entorno con otras prácticas
Blindar wp-config.php
es solo un paso. Asegúrate de:
- Deshabilitar
directory listing
- Usar HTTPS con redirección forzada
- Mantener el core, temas y plugins actualizados
- Minimizar los plugins activos
- Implementar cabeceras de seguridad (
X-Frame-Options
,Content-Security-Policy
, etc.)
Conclusión
Proteger el archivo wp-config.php
sin plugins es completamente posible y recomendable, especialmente si trabajas en entornos donde cada capa de seguridad cuenta. Estas medidas te ayudan a fortalecer tu instalación de WordPress desde el núcleo, confiando más en configuraciones del servidor y menos en soluciones de terceros.
No se trata solo de blindar un archivo, sino de consolidar una postura de seguridad activa y consciente desde el back-end.