77 votes

Pourquoi /var/www ne devrait pas avoir chmod 777

Lors du développement d'une page sur un hôte local, j'obtiens parfois une erreur "Permission refusée" que je peux résoudre en exécutant chmod -R 777 /var/www . Cependant, on me dit que c'est une mauvaise idée pour des raisons de sécurité.

Pourquoi ne pas /var/www a un chmod de 777 ?

88voto

Redbaron Points 523

777 est une mauvaise permission en général et je vais vous montrer pourquoi.

Malgré son apparence dans un casino ou à Las Vegas, 777 ne signifie pas jackpot pour vous. Plutôt, jackpot pour quiconque souhaite modifier vos fichiers. 777 (et son vilain cousin 666) autorise les droits de lecture et d'écriture (et, dans le cas de 777, d'exécution) à autre . Vous pouvez en savoir plus sur comment fonctionnent les autorisations de fichiers En résumé, il existe trois groupes d'autorisations : le propriétaire, le groupe et l'utilisateur. autre . En réglant l'autorisation sur 6 ou 7 ( rw- o rwx ) pour autre vous donnez à tout utilisateur la possibilité de modifier et de manipuler ces fichiers et dossiers. En général, comme vous pouvez l'imaginer, c'est mauvais pour la sécurité.

Voici mon exemple :

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

Jusqu'à présent, j'ai créé un dossier et un fichier avec de "mauvaises" permissions (777 et 666). Maintenant, je vais passer dans un autre utilisateur et essayer de manipuler ces fichiers.

marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

En tant qu'utilisateur "malveillant", j'ai pu placer des fichiers dans le répertoire et injecter du texte dans des fichiers déjà existants. Alors qu'en dessous, dans un répertoire avec 755 et des fichiers avec 644, je suis capable de voir à l'intérieur des fichiers et des répertoires mais je ne peux pas modifier les fichiers ni en créer de nouveaux :

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

Pour les autorisations Apache, vous voudrez vous en tenir à 0755 et 0644 (alias umask 022 ) pour les dossiers et les fichiers respectivement. Cela vous permet, en tant que propriétaire des fichiers, de les éditer et de les manipuler tout en donnant à Apache les niveaux d'accès minimums nécessaires pour fonctionner.

18voto

Kristof Provost Points 323

Essentiellement, le fait d'avoir des permissions de 777 ne va pas vous faire pirater en soi, mais si quelqu'un met la main sur n'importe quel endroit, cela peut être utilisé pour escalader les permissions et prendre le contrôle complet de votre ordinateur. Le pire, c'est que vos permissions sont de type "7" - ce qui signifie lecture, écriture, et exécute les permissions.

Disons qu'un pirate veut prendre le contrôle de votre ordinateur. Il pourrait se connecter à votre ordinateur à l'aide d'un navigateur web, en se connectant à http://yourcomputer.example.com:80/ . Si vous disposez de pages qui lui permettent de télécharger des images, il peut renommer un exécutable pour qu'il se termine par ".jpg" et le télécharger sur votre serveur. Maintenant, il navigue vers ce fichier dans son navigateur web et l'exécute, car Linux ne se soucie pas de l'extension, il voit seulement qu'il s'agit d'un fichier exécutable. Cela ne lui apporte pas grand-chose, mais comme il s'est exécuté, il sait qu'il a été exécuté par l'utilisateur apache. Il télécharge ensuite une version modifiée qui va éditer les fichiers de configuration d'apache, lui accordant encore plus d'accès - disons qu'apache va sortir le contenu de /etc/passwd. Il peut alors utiliser cette information pour voir quels utilisateurs existent sur le système. Il peut alors se connecter en utilisant ssh et essayer des mots de passe courants pour se connecter en tant que ces utilisateurs - si cela ne fonctionne pas, il passera à une attaque complète par force brute. S'il arrive à se connecter en tant qu'utilisateur avec un accès sudo, alors tout le système est à lui.

Maintenant, vous pouvez dire que ce n'est pas probable, ou que ce n'est pas comme ça qu'un vrai hacker travaillerait. C'est vrai, mais le fait est qu'en configurant les fichiers en chmod 777, vous avez ouvert une faille de sécurité qu'un pirate peut utiliser comme bon lui semble.

Si vous suivez plutôt le Principe du moindre privilège alors cette faille ne se produit pas, et votre système est d'autant plus difficile à pirater. Même s'il est plus difficile de faire les choses correctement, vous devez tout de même vous efforcer de le faire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X