¿Cuáles son los riesgos de administrar mal los usuarios / permisos de Apache y cuál es la manera correcta de hacerlo?

4

Cada vez que instalo Apache para probar un script, me surge esta pregunta. No lo hago muy a menudo, pero recuerdo que este es un punto difícil desde 2007.

Muchos tutoriales / foros recomiendan utilizar:

sudo chmod -R 777 /var/www/

¡Pero nunca mencione que esto no es para producción o aún lo recomiendo incluso cuando la pregunta especifica que el servidor será público, pero no queremos que extraños puedan escribir archivos en nuestro servidor!

Otra solución que encontré fue cambiar el propietario de la carpeta a tu usuario y luego cambiar los permisos:

sudo chgrp joe /var/www/html
sudo chmod 775 /var/www/html
sudo chown -R joe /var/www/html/*

Pero ser propietario de archivos disponibles públicamente y ejecutarlos me parece una mala práctica, por no mencionar que todos los archivos que podamos crear en este directorio serán propiedad de nuestro usuario.

¿Cuáles son las implicaciones de estas y otras malas prácticas? ¿Cuáles son las formas correctas de configurar los usuarios / permisos de un servidor web público?

    
pregunta Daniel V 17.05.2018 - 20:13
fuente

1 respuesta

5

Como has notado, chmod 777 es una idea particularmente terrible. Ser propietario de los archivos puede no ser tan malo como crees; a menos que usted configure incorrectamente mal de Apache, todavía serán ejecutados por el usuario de Apache ( httpd , www-data , o algo más, depende de la distribución). También hay otras maneras de manejar esto.

Agregar usuarios al grupo de Apache

Agregar usuarios al grupo no cambia los permisos de archivo, pero les permite modificar los archivos siempre que usen los permisos predeterminados de 775 para directorios y archivos ejecutables o 664 para archivos no ejecutables .

Otorgue permiso a los usuarios con setfacl

Las listas de control de acceso permiten permisos más detallados, como dar a los usuarios acceso a directorios específicos. Puede usar setfacl de la siguiente manera:

# -R for recursive
# -m for modify
# u:[user]:[perms] or g:[group]:[perms]
# Perm X instead of x means that execute permission will only be given if another
# user already has execute permission.
setfacl -R -m u:joe:rwX /var/www/html/joes-stuff

# -d modifies the default acl, so future files will have these permissions
setfacl -R -d -m u:joe:rwX /var/www/html/joes-stuff

# You can also do both at once
setfacl -R -m u:joe:rwX -m d:u:joe:rwX /var/www/html/joes-stuff

Restringir permisos de Apache

Puede ser ventajoso eliminar el permiso de escritura de Apache (al menos en ciertos directorios) para que un script vulnerable no pueda escribir archivos. Este es uno de los beneficios de tener los archivos de propiedad (o de escritura) de un usuario y grupo que no sean los que ejecuta Apache.

    
respondido por el AndrolGenhald 17.05.2018 - 20:57
fuente

Lea otras preguntas en las etiquetas