En apache, ¿por qué el propietario de www-data de un directorio de aplicaciones web es más seguro que el 777 recursivo?

0

Tengo ubuntu 16.04 LTS y estoy ejecutando mi aplicación web php a través de Apache (php-fpm). Estoy poco preocupado por los archivos y permisos de directorio. Muchos enlaces sugieren que debo mantener el propietario www-data o apache (depende del usuario de mi servidor web) para el directorio de mi aplicación web. Todos los directorios deben tener 755 y todos los archivos deben tener 644. Los archivos con 644, el Directorio con 755 y el propietario del directorio de la aplicación web (recursivo) son root o ubuntu, me parece bien, pero mi aplicación yii no puede crear archivos en tiempo de ejecución y activos, por lo que no puedo iniciar sesión tan bien como los usuarios no pueden cargar archivos en directorios de carga.

Si le doy 777 recursivo al directorio de subidas, comienza a funcionar bien, pero un intruso puede cargar un archivo malicioso en él y todos los archivos son 777, por lo que simplemente puede eliminarlos todos.

Si le doy 777 a la carpeta solamente, no los archivos, entonces los usuarios no pueden modificar el archivo cargado, es decir, una funcionalidad, por lo que la funcionalidad no funciona, por razones de seguridad está bien.

Si hago propietario de www-data de las subidas del directorio 755, significa que el usuario puede cargar archivos, modificar archivos porque www-data tiene permiso de lectura y escritura para el directorio y el contenido, pero el intruso también tiene el mismo permiso para su archivo malicioso. . En este caso, también puede eliminar todos los archivos.

Resumen Si conservo 755 para todos los archivos y 644 para todos los archivos con propietario www-data del directorio de la aplicación web de forma recursiva. Todo funciona bien, no necesito dar 777 a las cargas, el tiempo de ejecución o los recursos, puede crear archivos dentro de estos directorios cuando el usuario utiliza la aplicación web, pero un intruso también puede crear archivos php en estos directorios con el propietario de www-data, lo que significa: También tiene permiso completo de modificación a todos los archivos de todos los directorios. No quiero manejar esto en Apache para hacer que la ejecución de archivos php esté prohibida dentro de las cargas. Para diferentes aplicaciones web, este nombre es diferente y muchas aplicaciones usan múltiples directorios para cargar. No quiero negar todo para archivos php de carpetas subidas. Debe haber permisos correctos que podrían manejar esto mejor.

Por favor, sugiera.

    
pregunta Derek 21.10.2018 - 17:58
fuente

1 respuesta

2

Los riesgos de una carpeta con 777 privilegios y de una carpeta con 755 privilegios propiedad de www-data son ligeramente diferentes. En el caso de la carpeta 777, si un atacante puede controlar a cualquier usuario en el servidor, podrá modificar y eliminar los archivos cargados. En el caso de los 755 privilegios, si pueden comprometer al usuario www-data (o cualquier usuario de ese grupo), aún pueden modificar y eliminar los archivos cargados, pero si comprometen a cualquier otro usuario, solo pueden leer El contenido de los archivos, sin poder realizar modificaciones.

Si todos los usuarios del sistema están en el grupo www-data , no hay diferencia, pero ese no suele ser el caso. Por ejemplo, si el servidor ejecuta una base de datos y el sitio web, el DBMS generalmente se ejecutará como un usuario en un grupo diferente. En este caso, una falla en el DBMS que permite la ejecución de código no permitiría que un atacante afecte directamente a los archivos cargados, a menos que puedan escalar su privilegio a un miembro del grupo www-data o usuario root.

Para permisos detallados, consulte opciones como las Listas de control de acceso (ACL), que pueden permitir reglas más específicas que el enfoque básico de grupo de todos los propietarios, o SELinux, que puede implementar el control de acceso obligatorio a los archivos y carpetas. es decir, por ejemplo, puede decir "solo los procesos con una marca en particular pueden escribir en esta carpeta". En cualquier caso, estos son muy fáciles de disparar en el pie con - ¡prueba cuidadosamente antes de aplicar a un servidor en vivo!

    
respondido por el Matthew 22.10.2018 - 12:14
fuente

Lea otras preguntas en las etiquetas