PathSentinel

wp-config.php blindado: permisos, salts y constantes de seguridad

Guía técnica para asegurar wp-config en WordPress: permisos correctos, salts, constantes de bloqueo y reubicación del archivo sin romper la web.

PathSentinel investigacion de seguridad

El archivo wp-config.php es el punto más sensible de cualquier instalación de WordPress: contiene las credenciales de la base de datos, las claves de sesión y las constantes que gobiernan el comportamiento del núcleo. Saber asegurar wp-config en WordPress es una de las medidas con mejor relación esfuerzo/protección que existen, y por eso forma parte de nuestra guía pilar sobre Seguridad y hardening de WordPress. Un solo error de permisos aquí puede exponer toda la web.

En PathSentinel vemos este fichero comprometido en la mayoría de las intrusiones que investigamos: una vez que un atacante lee las credenciales de DB_USER y DB_PASSWORD, tiene acceso directo a los datos. Trabajamos habitualmente en entornos exigentes —incluidas tiendas que procesan datos de tarjeta y clientes de banca— donde este blindaje no es opcional, sino un requisito de cumplimiento.

Por qué asegurar wp-config en WordPress es prioritario

A diferencia de un plugin, el wp-config.php no se actualiza solo ni recibe parches. Es un archivo estático que tú configuras una vez y que, si queda mal protegido, seguirá filtrando información durante meses. Los tres riesgos principales son:

  • Lectura del archivo vía una vulnerabilidad de path traversal o una mala configuración del servidor, que expone las credenciales en texto plano.
  • Robo de sesiones cuando las salts son débiles o las que trae WordPress por defecto, permitiendo falsificar cookies de autenticación.
  • Escalada si el fichero es escribible por el proceso web y un atacante inyecta código PHP directamente en él.

Permisos de archivo correctos

El objetivo es que el servidor pueda leer el fichero, pero que nadie más lo lea ni lo modifique. En la mayoría de hostings compartidos, el valor recomendado es 640 o incluso 440 cuando el usuario propietario coincide con el usuario del proceso PHP. Evita a toda costa el 777 y el 666: son la causa raíz de muchas de las reinfecciones que analizamos.

  • chmod 640 wp-config.php como base razonable.
  • Los directorios generales en 755 y el resto de archivos en 644.
  • Revisa que el propietario del archivo sea el usuario de la cuenta y no root ni nobody.

Salts y claves criptográficas

Las ocho constantes de tipo AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY y sus respectivos SALT firman las cookies de sesión. Deben ser cadenas largas y aleatorias, generadas desde el generador oficial de secret-keys de WordPress. Si sospechas de un compromiso, regenerarlas invalida todas las sesiones activas de golpe: es una de las primeras acciones de contención tras una intrusión.

Constantes de seguridad que deberías declarar

WordPress permite endurecer su comportamiento con constantes que se añaden al propio wp-config.php:

  • define('DISALLOW_FILE_EDIT', true); desactiva el editor de temas y plugins del panel, una de las vías favoritas para inyectar backdoors.
  • define('DISALLOW_FILE_MODS', true); bloquea instalaciones y actualizaciones desde el panel; útil en despliegues gestionados por Git.
  • define('FORCE_SSL_ADMIN', true); obliga a servir el administrador por HTTPS.
  • define('WP_DEBUG', false); en producción, para no filtrar rutas y errores.
  • define('AUTOMATIC_UPDATER_DISABLED', false); mantén las actualizaciones automáticas de seguridad del núcleo.

Reubicar y proteger el acceso web

WordPress busca wp-config.php también un nivel por encima de la raíz web. Moverlo fuera del document root reduce la exposición ante configuraciones de servidor defectuosas. Si no puedes moverlo, deniega su acceso por HTTP. En Apache:

<Files wp-config.php>
Require all denied
</Files>

En Nginx, una directiva location ~* wp-config.php { deny all; } cumple la misma función. Esta capa evita que un fallo puntual del intérprete PHP acabe sirviendo el archivo como texto plano.

Errores frecuentes que anulan el blindaje

De poco sirve endurecer el fichero si dejas copias sin proteger. Revisa que no existan wp-config.php.bak, wp-config.old o wp-config.txt en la raíz: son accesibles por HTTP y muchos escáneres automatizados los buscan. Lo mismo aplica a copias de seguridad completas descargables desde el navegador, un tema que ampliamos en nuestra guía sobre migradores.

Para profundizar en las medidas oficiales, la documentación de Hardening WordPress de WordPress.org y el Wordfence Learning Center son referencias sólidas y actualizadas.

Siguientes pasos del hardening

Blindar el wp-config.php es la base, pero no la única capa. Una vez asegurado, conviene reducir la superficie de ataque de las interfaces expuestas: revisa cómo desactivar XML-RPC y limitar la REST API sin romper tu web y refuerza el acceso al panel con las técnicas de proteger wp-admin y la página de login. Son medidas complementarias que cierran los vectores más explotados.

Si tras leer esto no estás seguro de cómo están tus permisos o tus salts, en contacto podemos revisarlo contigo. La monitorización continua de integridad de archivos detecta cambios en wp-config.php en cuanto ocurren, antes de que se conviertan en un incidente.

Un wp-config.php mal protegido es la puerta de entrada más común que investigamos. Comprueba en segundos si tu instalación expone archivos sensibles o configuraciones de riesgo.

Comprueba tu web gratis

PathSentinel

Jesús Macías Rubiales

Investigación forense y seguridad web: analizamos y respondemos incidentes reales en pymes, e-commerce y entornos exigentes como la banca. Conoce al equipo.

📬 Boletín PathScan — suscríbete gratis

Cada semana, las vulnerabilidades de plugins de WordPress que de verdad importan y un caso real de investigación, en español. Sin ruido, sin spam.