Lors du développement d'une page sur un hôte local, je reçois 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 ne devrait pas /var/www
avoir un chmod de 777?
permissions
security
apache2
www
Luis Alvarado
la source
la source
Réponses:
777 est une mauvaise permission en général et je vais vous montrer pourquoi.
En dépit de ce à quoi cela peut ressembler dans un casino ou à Las Vegas, 777 ne signifie pas jackpot pour vous. Au contraire, jackpot pour ceux qui souhaitent modifier vos fichiers. 777 (et son cousin laid 666) permettent de lire et écrire des autorisations (et dans le cas de 777, Execute) à d' autres . Vous pouvez en apprendre plus sur le fonctionnement des autorisations de fichiers , mais en résumé, il existe trois groupes d'autorisations: propriétaire, groupe et autre . En définissant l'autorisation à 6 ou 7 (
rw-
ourwx
) pour d' autres vous donner tout utilisateur la possibilité d'éditer et de manipuler les fichiers et dossiers. Comme vous pouvez l’imaginer, c’est généralement mauvais pour la sécurité.Voici mon exemple:
Jusqu'à présent, j'ai créé un dossier et créé un fichier avec de "mauvaises" autorisations (777 et 666). Maintenant, je vais basculer vers un autre utilisateur et essayer de manipuler ces fichiers.
En tant que cet utilisateur "malveillant", j'ai pu placer des fichiers dans le répertoire et injecter du texte dans des fichiers existants. Considérant ci-dessous, dans un répertoire avec 755 et des fichiers avec 644, je suis capable de voir les fichiers et les répertoires à l'intérieur, mais je ne peux pas éditer les fichiers ni en créer de nouveaux:
Pour les autorisations Apache, vous souhaiterez vous en tenir à 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 donnant à Apache le minimum d'accès nécessaire pour fonctionner.la source
/etc/passwd
et vous verrez comme les utilisateursmail
,news
etnobody
. Même s'il est correct que tous les vrais utilisateurs humains de votre système puissent modifier le contenu de cela/var/www
, cela ne signifie pas que vous souhaitiez que tous les processus soient exécutés comme ces utilisateurs «artificiels» puissent le faire.ls -lah
,touch bad
ni aucune autre commande. Comment peuvent-ils manipuler des dossiers et des fichiers? 2) l'héritage. Vous n'avez couvert aucun héritage entre les dossiers et les fichiers qu'ils contiennent. Il y a au moins 2-3 étape avant un fichier:/var
,/var/www
,/var/www/project
. Quelles autorisations utilisateur / groupe devraient/var
avoir? Quelles autorisations utilisateur / groupe devraient/var/www
avoir? Etc. Comment coopèrent-ils?Avoir des autorisations de 777 ne vous permettra pas de vous pirater, mais si quelqu'un obtient un pied-à-terre, il peut être utilisé pour augmenter les autorisations et obtenir le contrôle total de votre ordinateur. Le pire est que vos autorisations utilisent "7", ce qui signifie que les autorisations de lecture, d’écriture et d’exécution sont exécutées.
Supposons qu'un pirate informatique veuille prendre le contrôle de votre ordinateur. Il se peut qu'il se connecte à votre ordinateur à l'aide d'un navigateur Web, en se connectant à http://votreordinateur.exemple.com:80/. Si vous avez des pages disponibles lui permettant de télécharger des images, il peut renommer un fichier exécutable avec ".jpg" et le télécharger sur votre serveur. Il navigue maintenant 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 rapportera peut-être pas grand-chose, mais comme il fonctionnait du tout, il savait que cela fonctionnait en tant qu'utilisateur Apache. Il télécharge ensuite une version modifiée qui éditera les fichiers de configuration d’apache, ce qui lui donnera encore plus d’accès - supposons qu’apache affiche le contenu de / etc / passwd. Il peut ensuite utiliser ces informations pour voir quels utilisateurs existent sur le système. Il peut ensuite se connecter à l'aide de ssh et essayer les mots de passe courants pour se connecter en tant qu'utilisateur. Si cela ne fonctionne pas, il utilisera une attaque par force brute complète. S'il entre en tant qu'utilisateur avec un accès sudo,
Maintenant, vous pouvez dire que ce n'est pas probable, ou que ce n'est pas ainsi qu'un vrai pirate informatique fonctionnerait. C'est vrai, mais le fait est qu'en définissant les fichiers sur chmod 777, vous avez ouvert une faille de sécurité qu'un pirate informatique peut utiliser à sa guise.
Si vous suivez plutôt le principe du moindre privilège , alors ce trou ne se produira pas et votre système est d'autant plus difficile à pirater. Même s'il est plus difficile de faire les choses correctement, vous devriez quand même tout faire pour le faire.
la source