Pourquoi faut-il / var / www avoir chmod 777

62

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

Pourquoi /var/www ne devrait-il pas avoir un chmod de 777?

    
posée Luis Alvarado 05.01.2011 - 02:03
la source

2 réponses

75

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

Malgré son apparence dans un casino ou à Las Vegas, le 777 ne signifie pas pour vous le gros lot. Plutôt, un jackpot pour quiconque souhaite modifier vos fichiers. 777 (et son vilain cousin 666) autorisent les autorisations de lecture et d'écriture (et dans le cas de 777, Execute) à autre . Vous pouvez en savoir plus sur le fonctionnement des autorisations de fichier , mais en bref, il existe trois groupes de autorisations: propriétaire, groupe et autre . En définissant l'autorisation sur 6 ou 7 ( rw- ou 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, cela nuit à la sécurité.

Voici mon exemple:

[email protected]:~/Projects/AskUbuntu/20105$ cd ..
[email protected]:~/Projects/AskUbuntu$ chmod 0777 20105
[email protected]:~/Projects/AskUbuntu$ cd 20105/
[email protected]:~/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 ..
[email protected]:~/Projects/AskUbuntu/20105$ touch test
[email protected]:~/Projects/AskUbuntu/20105$ chmod 0666 test 

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

[email protected]:~/Projects/AskUbuntu/20105$ sudo su - malicious
[email protected]:~$ cd /home/marco/Projects/AskUbuntu/20105
[email protected]:/home/marco/Projects/AskUbuntu/20105$ ls
test
[email protected]:/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
[email protected]:/home/marco/Projects/AskUbuntu/20105$ touch bad
[email protected]:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
[email protected]:/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 existants. Alors que ci-dessous, dans un répertoire avec 755 et des fichiers avec 644, je peux voir à l'intérieur des fichiers et des répertoires mais je ne peux ni éditer les fichiers ni en créer de nouveaux:

[email protected]:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
[email protected]:/home/marco/Projects$ touch hey
touch: cannot touch 'hey': Permission denied

Pour les autorisations Apache, vous devez vous en tenir aux numéros 0755 et 0644 (AKA 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 offrant à Apache les niveaux d’accès minimum nécessaires pour fonctionner.

    
réponse donnée Marco Ceppi 05.01.2011 - 02:39
la source
13

Essentiellement, avoir des permissions de 777 ne va pas vous faire pirater de leur propre chef, mais si quelqu'un obtient un accès à n'importe où, il peut être utilisé pour augmenter les autorisations et obtenir un contrôle complet sur votre ordinateur. Le pire est que vos autorisations utilisent "7" - c'est-à-dire lire, écrire, et exécuter des autorisations .

Disons qu'un pirate informatique veut prendre le contrôle de votre ordinateur. Il peut se connecter à votre ordinateur à l'aide d'un navigateur Web, se connectant à lien . Si vous avez des pages disponibles 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 sur ce fichier dans son navigateur Web et l'exécute, car Linux ne se soucie pas de l'extension, il voit uniquement qu'il s'agit d'un fichier exécutable. Cela peut ne pas l’avoir beaucoup, mais parce qu’il a fonctionné, il sait qu’il a fonctionné en tant qu’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 pour que Apache produise le contenu de / etc / passwd. Il peut ensuite utiliser ces informations pour voir quels utilisateurs existent sur le système. Il peut alors se connecter à l'aide de ssh et essayer les mots de passe courants pour se connecter en tant qu'utilisateurs - si cela ne fonctionne pas, il passera à une attaque en force. S'il entre en tant qu'utilisateur avec un accès sudo, le système entier est le sien.

Maintenant, vous pouvez dire que ce n'est pas probable, ou que ce n'est pas la façon dont un vrai pirate informatique fonctionnerait. C'est vrai, mais le fait est qu'en définissant des fichiers 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 ce trou ne se produit pas et votre système est beaucoup plus difficile à pirater. Même s'il est plus difficile de faire les choses correctement, vous devriez tout faire pour y parvenir.

    
réponse donnée ImaginaryRobots 29.10.2012 - 18:39
la source

Lire d'autres questions sur les étiquettes