Cómo proteger el directorio wp-content de WordPress

proteger directorio wp-content WordPress contra ejecución PHP malicioso

Cómo proteger el directorio wp-content de WordPress

El directorio wp-content es el más atacado de una instalación WordPress porque concentra los activos más críticos: plugins con posibles vulnerabilidades, temas, las imágenes subidas por los usuarios y cualquier archivo generado por la web. Si un atacante consigue ejecutar código en esa carpeta, tiene acceso efectivo a toda la instalación. Estas medidas cierran las vías de entrada más comunes sin afectar al funcionamiento normal de la web.

Deshabilitar la ejecución de PHP en wp-content/uploads

La carpeta uploads es la más expuesta: los usuarios suben archivos ahí, y si un atacante consigue subir un archivo PHP disfrazado de imagen, puede ejecutarlo directamente desde el navegador. La solución es deshabilitar la ejecución de PHP en esa carpeta.

Crea un archivo .htaccess en wp-content/uploads/ con este contenido:

<Files *.php>
    deny from all
</Files>

Esto bloquea cualquier petición a un archivo .php dentro de la carpeta de uploads. Las imágenes, PDFs y demás archivos legítimos siguen siendo accesibles. Solo los PHP quedan bloqueados.

Para nginx, la regla equivalente en la configuración del servidor:

location ~* /wp-content/uploads/.*\.php$ {
    deny all;
}

Deshabilitar la navegación de directorios

Por defecto, si alguien accede a tudominio.com/wp-content/uploads/ sin un archivo index.html o index.php, Apache muestra el listado completo de archivos y carpetas. Eso expone información sobre la estructura de tu web y facilita encontrar archivos vulnerables.

En el .htaccess principal de WordPress (en la raíz, no en uploads), añade:

Options -Indexes

Esto desactiva el listado de directorios en todo el sitio.

Proteger wp-content con autenticación HTTP básica

Para una protección más agresiva en entornos muy sensibles, puedes proteger con contraseña el acceso a toda la carpeta wp-content. Esto solo tiene sentido en instalaciones donde el frontend no necesita acceder directamente a esa carpeta, lo que es raro. En la mayoría de webs, las imágenes y los scripts se sirven desde wp-content y necesitan ser públicamente accesibles.

Donde sí tiene más sentido es proteger específicamente wp-content/plugins/ y wp-content/themes/: los archivos PHP de plugins y temas no deben ser accesibles directamente desde el navegador.

<Files *.php>
    deny from all
</Files>

Añade este .htaccess en la carpeta de plugins y en la de temas. WordPress carga los archivos PHP de plugins y temas internamente, no desde peticiones HTTP directas, así que bloquearlos externamente no rompe nada.

Permisos de archivo correctos

Los permisos de archivo incorrectos son una de las causas más habituales de compromiso de seguridad. Los valores correctos para WordPress:

  • Carpetas: 755 (rwxr-xr-x)
  • Archivos PHP: 644 (rw-r–r–)
  • wp-config.php: 440 o 400 (solo lectura por el propietario)
  • .htaccess: 644

Para verificar y corregir los permisos desde SSH:

find /ruta/a/wordpress/ -type d -exec chmod 755 {} \;
find /ruta/a/wordpress/ -type f -exec chmod 644 {} \;
chmod 440 wp-config.php

Nunca uses 777 en ningún archivo o carpeta de WordPress. Si un plugin o una guía antigua te pide permisos 777, hay un problema de configuración del servidor que resolver correctamente en lugar de parchear con permisos inseguros.

Monitorización de cambios en wp-content

La medida preventiva es complementaria con la detección: saber cuándo cambia un archivo en wp-content permite detectar intrusiones aunque hayan pasado las defensas. Wordfence tiene un escáner de integridad de archivos que compara el hash de cada archivo con los valores conocidos y alerta cuando algo cambia sin que hayas actualizado nada. Es la diferencia entre descubrir un ataque en horas o en semanas.

Hosting Web SSD ultrarrápido e ilimitado

Hosting Web SSD NVMe, 100% Ecológico y sostenible, máxima velocidad y tráfico ilimitado en tu Hosting Web, con certificado SSL gratuito 

Hosting Web logo

Hosting Web ecológico, profesional e ilimitado en España,  somos especialistas en servicios de Hosting SSD, con más de 22 años de experiencia y un equipo de profesionales altamente cualificados a su disposición las 24 Horas.