Table des matières de l'article :
La gestion des autorisations sur un système d'exploitation Linux est un élément essentiel de la sécurité et de l'intégrité d'un site Web hébergé sur celui-ci. Lorsqu'on parle de restaurer les autorisations sur un hôte virtuel (vhost) sous Linux, on retrouve presque universellement la recommandation d'utiliser 755 pour les répertoires et 644 pour les fichiers. Ces indications ne tiennent toutefois pas compte d’importantes considérations de sécurité et sont ABSOLUMENT FAUX.
L'importance de la séparation des privilèges sous Linux
Linux est un système d'exploitation qui fonde une grande partie de son modèle de sécurité sur la séparation des privilèges. Cette séparation est un principe fondamental qui implique que chaque processus doit fonctionner en utilisant le moins de privilèges nécessaires pour mener à bien sa tâche. Cela minimise les conséquences d’un exploit ou d’une mauvaise configuration. Par exemple, dans un environnement d'hébergement partagé, si un site est compromis, la violation d'un vhost particulier ne doit pas permettre à l'attaquant de lire, d'écrire ou d'exécuter des fichiers appartenant à d'autres utilisateurs, qui sous Linux sont identifiés de manière unique par UserID (UID) et ID de groupe (GID).
Cette architecture de sécurité empêche l’élévation des privilèges et contient les dommages, préservant ainsi l’intégrité globale du système.
autorisations rwx pour les utilisateurs et les groupes et notation numérique
Les autorisations sous Linux sont divisées en trois catégories : propriétaire (utilisateur), groupe (groupe) et autres (autres). 'rwx' signifie lire, écrire et exécuter. Ces autorisations déterminent ce que les utilisateurs peuvent faire avec un fichier ou un répertoire donné :
- r (lire): Permet de visualiser le contenu du fichier/répertoire.
- w (écrire): Permet la modification du fichier/répertoire.
- x (exécuter): Permet l'exécution de fichiers ou la navigation dans des répertoires.
Ces autorisations sont représentées numériquement, où 4 signifie « lire », 2 pour « écrire » et 1 pour « exécuter ». Une autorisation telle que 777 accorderait à tout le monde (utilisateur, groupe et autres) tous les privilèges sur un fichier ou un répertoire.
La combinaison de ces nombres crée des ensembles d'autorisations :
- 7: Accès complet (rwx) – Lecture, écriture et exécution.
- 6: Lecture et écriture (rw-) – Lecture et écriture, mais pas d'exécution.
- 5: Lire et exécuter (rx) – Lire et exécuter, mais pas d'écriture.
- 4: Lecture seule (r–) – Lecture seule.
- 0: Aucune autorisation (–x) – Aucune autorisation.
Pour chaque fichier et répertoire, nous pouvons définir des autorisations distinctes pour l'utilisateur, le groupe et autres :
- Premier numéro : autorisations du propriétaire (utilisateur).
- Deuxième problème: autorisations de groupe.
- Troisième problème: Autorisations pour les autres (utilisateurs hors groupe et non propriétaires).
Exemple de configuration des autorisations
- Annuaire: 750
- Propriétaire (utilisateur): rxx
- Groupe: rx
- Autre-
- Déposez votre dernière attestation : 640
- Propriétaire (utilisateur):rw-
- Groupe:r–
- Autre-
Cette configuration garantit que :
- Le propriétaire a un contrôle total sur ses fichiers.
- Le groupe (qui peut inclure le processus du serveur Web) peut lire des fichiers et parcourir des répertoires, mais pas les modifier.
- Les autres utilisateurs n'ont pas accès, protégeant vos données dans un environnement d'hébergement partagé.
L'erreur sous-jacente des permis 755 et 644
L'autorisation 755 pour les répertoires permet à tous les utilisateurs de lire et d'exécuter les fichiers qu'ils contiennent, tandis que l'autorisation 644 pour les fichiers permet à tout le monde de les lire. Ce paramétrage ne respecte pas le principe de la moindre autorisation. Le dernier groupe, « autres », qui inclut tout utilisateur non identifié comme propriétaire ou partie du groupe, ne doit pas avoir d'autorisations sur ces fichiers ou répertoires. Les autorisations les plus sûres devraient donc être 750 pour les répertoires et 640 pour les fichiers, où le dernier chiffre (représentant « autres ») est défini sur 0, refusant toute autorisation.
On trouve des indications officielles de ce type auprès d'importants hébergeurs :
Kéliweb :
SiteGround :
Plan serveur :
TopHôt :
Kinsta :
et nous pourrions continuer presque sans fin, incluant plus de 90 % des hébergeurs mondiaux.
L'origine de l'erreur et du péché originel
En matière de sécurité informatique, notamment dans le secteur de l’hébergement, chaque petit détail peut faire la différence. L'attribution d'autorisations aux fichiers et répertoires d'un site Web hébergé sur un serveur Linux est un aspect critique qui est souvent sous-estimé ou géré de manière sous-optimale. L'erreur fondamentale dans la gestion des autorisations, un « péché originel » dans le contexte système, résulte d'une compréhension incomplète de l'interaction entre l'utilisateur propriétaire du vhost et le groupe de serveurs Web.
Confusion traditionnelle
Traditionnellement, la plupart des didacticiels et des guides, y compris certains fournis par des concurrents bien connus du secteur, se limitent à suggérer des paramètres d'autorisation standardisés, tels que 755 pour les répertoires et 644 pour les fichiers. Ces instructions généralisées ne tiennent pas compte d'un point crucial : l'utilisateur du serveur web, qui dans des environnements comme cPanel est généralement identifié comme « personne », devrait idéalement être placé au sein du groupe propriétaire des fichiers hébergés.
L'insuffisance de la configuration standard
Sans cette inclusion stratégique, une configuration permissive a tendance à être utilisée pour permettre au processus du serveur Web de lire des fichiers, en particulier des fichiers HTML statiques. Les autorisations de lecture (et parfois aussi d'exécution) sont attribuées à la catégorie « autres », c'est-à-dire à tous les utilisateurs n'appartenant pas au groupe du propriétaire du fichier. Il s’agit d’un palliatif qui résout le problème d’accessibilité mais ouvre des failles de sécurité potentielles. En fait, si un attaquant parvenait à obtenir un accès, même limité, au système, il trouverait une surface d'attaque plus grande que nécessaire.
Certains soutiennent qu'un serveur, configuré même avec ces autorisations plus souples, reste tout de même assez sécurisé et que la fonctionnalité globale n'est pas affectée. Il s’agit cependant d’une vision à courte vue du paysage de la cybersécurité. Il est essentiel que les professionnels de l’industrie, en particulier ceux qui ont des années d’expérience, adhèrent au principe « MOINS C’EST PLUS ». Ce principe se traduit par une politique de minimisation des privilèges : chaque utilisateur ne doit disposer que des autorisations strictement nécessaires pour exercer ses fonctions, ni plus ni moins.
C'est pourquoi, en dehors du propriétaire et de son groupe, les « autres » – tous les autres utilisateurs du système – ne devraient pas avoir la possibilité d'effectuer des actions sur les fichiers. Vous devez toujours viser une configuration des autorisations garantissant le niveau de sécurité le plus élevé possible, compatible avec le fonctionnement des applications hébergées. Cela signifie que le dernier chiffre des autorisations, celui qui régule les actions des « autres », doit être mis à zéro (750 pour les répertoires et 640 pour les fichiers), créant ainsi un environnement dans lequel l'accès est strictement contrôlé et limité.
La bonne manière d'obtenir des autorisations
Dans le contexte de la gestion d'un serveur Web, l'attribution correcte des autorisations sur les fichiers et les répertoires est un élément fondamental pour garantir la sécurité du système sans compromettre ses fonctionnalités. Pour atteindre cet objectif, il est essentiel de suivre une procédure qui inclut à la fois une flexibilité opérationnelle et la rigidité nécessaire en termes de contrôle d'accès.
Intégration de l'UID dans le groupe de serveurs Web
La stratégie optimale consiste à ajouter l'UID de l'hôte virtuel (vhost) au groupe utilisé par le serveur Web, qui peut varier en fonction de la configuration et du serveur Web utilisé (par exemple, « apache », « www-data », « personne ' ou 'nginx'). Cette étape est cruciale car elle vous permet de gérer les autorisations de manière granulaire, en garantissant que les ressources vhost sont accessibles depuis le serveur Web de la manière nécessaire et avec les limitations appropriées.
Configuration des autorisations
Une fois que vous avez intégré l'utilisateur dans le groupe approprié, il est temps de définir les autorisations. Les autorisations d'annuaire doivent être définies sur 750, permettant au propriétaire un accès complet (lecture, écriture, exécution), au groupe (dans ce cas, le serveur Web) la possibilité de lire et de parcourir les répertoires, et aucun accès aux autres utilisateurs. De même, les autorisations de fichiers doivent être définies sur 640, permettant au propriétaire de lire et d'écrire, au serveur Web de lire les fichiers et, encore une fois, de refuser tout accès aux autres.
Exemple pratique
Imaginons que nous ayons un utilisateur nommé pippo.it
. En ajoutant pippo.it
au groupe de serveurs Web, tel que « personne » ou apache ou ww-data pour Apache, ou nginx pour le serveur Web NGINX, cela garantira que le serveur Web peut effectuer toutes les opérations nécessaires telles que la lecture de fichiers et leur transmission aux utilisateurs finaux. via le navigateur. Ces autorisations correctement attribuées empêchent les autres utilisateurs du système, qui ne font pas partie de ce groupe, d'avoir toute forme d'accès aux fichiers et ressources associés à d'autres hôtes virtuels. Ceci est particulièrement important dans les environnements d'hébergement mutualisé, où la séparation entre les ressources des différents utilisateurs doit être absolument garantie.
La sécurité comme priorité
L’adoption de ces autorisations garantit un équilibre entre fonctionnement et sécurité. Le serveur Web peut effectuer ses opérations en douceur, telles que la diffusion de pages et la gestion d'applications dynamiques., mais sans avoir la possibilité de modifier les fichiers, restriction qui minimise le risque de dommages en cas de vulnérabilité du logiciel du serveur web. Dans le même temps, les autres utilisateurs du système sont complètement isolés des ressources de pippo.it
, une mesure préventive contre les compromissions croisées entre les hôtes virtuels.
conclusion
Revoir la gestion des permissions sur les fichiers et répertoires est une nécessité pour la sécurité et l’efficacité d’un site internet hébergé sur un serveur Linux. Le passage d'une configuration 755/644 permissive à une configuration 750/640 plus restreinte et sécurisée réduit considérablement le risque de compromission dû à un partage inapproprié des autorisations.. Il est essentiel de comprendre le rôle des utilisateurs et des groupes et la manière dont ils interagissent avec les autorisations de fichiers pour maintenir un environnement Web sécurisé, en particulier dans une configuration d'hébergement partagé.
Même si une configuration d’autorisations plus sécurisée peut sembler moins pratique, son impact positif sur la sécurité de l’hébergement est indéniable. La mise en œuvre d'autorisations correctes, ainsi qu'une configuration minutieuse du groupe de serveurs Web, garantissent que seules les entités autorisées ont accès aux fichiers et répertoires, protégeant ainsi les données des utilisateurs et l'intégrité du serveur lui-même. Avec la sécurité comme priorité, 750 autorisations pour les répertoires et 640 pour les fichiers devraient être la norme pour tout administrateur système conscient et responsable.