Configuración correcta de permisos de archivos de WordPress

Posted on Posted in Seguridad, Wordpress

Cuando realizamos una instalación de WordPress en un VPS tenemos que considerar las mejores prácticas de seguridad para minimizar las posibilidades de intromisión y, en el peor de los casos, minimizar los efectos de una intromisión.

Como es sabido, todos los sistemas de software tienen en algún punto alguna vulnerabilidad y si bien es necesario minimizar al extremo estas brechas de seguridad nunca podremos tener completa certeza de que un sistema es 100% seguro.

A nivel de sistema operativo es necesario “endurecer” el acceso a archivos del sistema para que una vulnerabilidad en algún punto de nuestro software no comprometa todo nuestro sistema. Esto es lo que se conoce como el principio de menor privilegio (Least Privilege Principlees decir, que ningun recurso deba acceder a más de lo que le corresponda.

Es fácil ver cómo en un sistema vulnerable, un atacante pueda explotar una pequeña vulnerabilidad e ir escalando privilegios hasta poder tomar control total de nuestro servidor.

Cómo realizar la configuración correcta de permisos de archivos de WordPress

En este caso me voy a centrar en explicar la correcta configuración de permisos de archivos para que una filtración de contraseña, un plugin con código malicioso o una vulnerabilidad no detectada no pueda ir mas allá de donde debe.

Con una correcta configuración de permisos podemos evitar que un atacante pueda leer/modificar archivos importantes de WordPress o, peor aun, del sistema. Por ej. el archivo wp-config.php tiene los datos de acceso a nuestra base de datos o el archivo /etc/passwd que tiene los nombres de usuario del sistema.

Se podrian definir dos situaciones en las que necesitariamos distintos permisos:

1. Instalación de WordPress

Cuando realizamos la instalación, necesitamos escribir archivos en nuestro servidor web, por lo que se necesita permisos “blandos” para el seteo inicial.

chown www-data:www-data .
chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Con esto hacemos que Apache sea owner (dueño) de todos los archivos y carpetas (-R *).

Luego usamos find para encontrar los directorios y establecer los permisos en 755 (rwx r-x r-x) y lo mismo para todos los archivos en 644 (rw- r– r–) acorde a la documentación oficial de WordPress (Hardening WordPress)

  • Carpetas: 755
  • Archivos: 644

2. Configuración definitiva de permisos

Una vez realizada la instalación y configuraciones necesarias procederemos a endurecer el acceso cambiando el owner de archivos y carpetas. Todos los archivos deben ser propiedad de tu usuario a excepción de wp-content.

chown <username>:<username> .
chown <username>:<username> -R *
chown www-data:www-data wp-content

De esta manera tendremos la configuración recomendada de acceso a los archivos por parte de Apache leyendo lo que necesita leer y escribiendo lo que necesita escribir.

Cuando se quieran realizar modificaciones o actualizaciones se puede volver a cambiar el ownership (propiedad) a www-data temporalmente y luego volverla a la configuración predeterminada.

Importante

La seguridad de la información no es un concepto absoluto, es mas bien un proceso continuo de análisis y mitigación de riesgos. La seguridad en WordPress trasciende al sistema en si ya que hay que tener en cuenta todo el entorno en el que este software trabaja. Esta configuración de permisos de archivos es solo uno de los factores a tener en cuenta al realizar un enfoque de la seguridad de nuestro sitio.

Existen variedad de otras configuraciones de permisos las que se irán desarrollando en un futuro.

Dejá una respuesta