Gestion des privilèges sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Sous Linux, la gestion des permissions des utilisateurs et du contrôle d’accès est un aspect fondamental de l’administration système et de la sécurité. La commande sudo, abréviation de « superuser do », permet aux utilisateurs autorisés d’exécuter des commandes avec des privilèges élevés, généralement ceux du superutilisateur ou du compte root.

Ce laboratoire vous guide dans l’attribution et la restriction des privilèges des utilisateurs dans un environnement Linux. Vous apprendrez à ajouter des utilisateurs au groupe sudo pour leur permettre d’effectuer des tâches d’administration, et à limiter leurs permissions à certaines commandes. Ces compétences sont essentielles pour maintenir la sécurité d’un système où l’accès aux opérations sensibles doit être rigoureusement contrôlé.

Gestion des utilisateurs et bases de sudo

Dans cette étape, vous découvrirez la gestion des utilisateurs sous Linux et les bases de la commande sudo. Vous créerez un nouvel utilisateur et apprendrez à lui accorder des privilèges d’administration.

Qu’est-ce que sudo ?

La commande sudo permet aux utilisateurs autorisés d’exécuter des commandes avec les privilèges d’un autre utilisateur, généralement ceux du superutilisateur (root). Elle permet d’effectuer des tâches d’administration sans se connecter en tant que root, ce qui constitue une bonne pratique de sécurité.

Créer un nouvel utilisateur

Commencez par créer un nouveau compte utilisateur. Ouvrez un terminal et exécutez la commande suivante :

sudo adduser trusted_advisor

Vous devrez saisir un mot de passe et quelques informations facultatives pour le nouvel utilisateur. Pour ce laboratoire, vous pouvez choisir un mot de passe simple comme password123 et laisser les autres champs vides en appuyant sur Entrée.

La sortie devrait ressembler à ceci :

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Vérifier les informations de l’utilisateur

Pour vérifier que l’utilisateur a bien été créé, consultez le contenu du fichier /etc/passwd :

grep trusted_advisor /etc/passwd

La commande doit afficher une ligne contenant les informations de l’utilisateur.

Accorder des privilèges sudo

Pour accorder des privilèges sudo à un utilisateur, ajoutez-le au groupe sudo. Sous Ubuntu, les membres de ce groupe peuvent utiliser la commande sudo. Exécutez la commande suivante :

sudo usermod -aG sudo trusted_advisor

Cette commande ajoute (-a) l’utilisateur trusted_advisor au groupe sudo (-G sudo). L’utilisateur peut alors exécuter des commandes avec des privilèges d’administration.

Vérifier l’accès sudo

Pour vérifier que le nouvel utilisateur dispose d’un accès sudo, basculez vers son compte et essayez de lister le contenu du répertoire /root, normalement accessible uniquement à l’utilisateur root :

su - trusted_advisor

À l’invite, saisissez le mot de passe que vous avez défini pour cet utilisateur. Exécutez ensuite :

sudo ls /root

Vous devrez saisir à nouveau le mot de passe, car il s’agit de la première utilisation de sudo. Une fois le mot de passe saisi, le contenu du répertoire /root devrait s’afficher. Cela confirme que l’utilisateur dispose de privilèges sudo.

Enfin, quittez la session de l’utilisateur trusted_advisor pour revenir à votre utilisateur initial :

exit

Restreindre l’accès sudo avec le fichier sudoers

Dans cette étape, vous apprendrez à limiter les privilèges sudo d’un utilisateur à certaines commandes à l’aide du fichier sudoers. Cette méthode applique le principe du moindre privilège : chaque utilisateur ne doit disposer que des privilèges minimum nécessaires à ses tâches.

Comprendre le fichier sudoers

Le fichier /etc/sudoers détermine qui peut utiliser la commande sudo et quelles commandes ces utilisateurs peuvent exécuter. Ne modifiez jamais ce fichier directement avec un éditeur de texte classique : une erreur de syntaxe pourrait vous empêcher d’accéder au système. Utilisez toujours la commande visudo, qui vérifie la syntaxe avant d’enregistrer les modifications.

Supprimer l’accès général accordé par le groupe

Les permissions sudo issues de toutes les règles correspondantes se cumulent. Ajouter une règle limitée à certaines commandes ne supprime pas l’accès complet accordé par le groupe sudo. Depuis votre session labex initiale, supprimez d’abord cet accès général :

sudo deluser trusted_advisor sudo

Pour tester les nouveaux groupes, ouvrez une nouvelle session avec su - trusted_advisor afin que l’utilisateur bénéficie de son appartenance mise à jour aux groupes.

Modifier le fichier sudoers

Pour modifier le fichier sudoers en toute sécurité, utilisez la commande visudo :

sudo EDITOR=vim visudo

Cette commande ouvre explicitement Vim ; les touches de modification et d’enregistrement indiquées ci-dessous correspondent donc à cet éditeur. Appuyez sur G pour aller à la dernière ligne, puis sur o pour créer une nouvelle ligne et passer en mode insertion.

Comprendre la syntaxe de sudoers

Voici la syntaxe de base d’une entrée sudo dans le fichier sudoers :

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Les éléments sont les suivants :

  • user_or_group : l’utilisateur ou le groupe auquel cette règle s’applique
  • host : le nom d’hôte auquel cette règle s’applique (généralement ALL)
  • run_as_user : l’utilisateur au nom duquel les commandes seront exécutées (root pour n’autoriser que root, ou ALL pour n’importe quel utilisateur)
  • run_as_group : le groupe au nom duquel les commandes seront exécutées (cet élément peut être omis)
  • NOPASSWD : balise facultative qui permet d’exécuter les commandes sans saisir de mot de passe
  • commands : les commandes précises qui peuvent être exécutées avec sudo

Accorder un accès sudo restreint

Faites défiler le fichier jusqu’à la fin et ajoutez la ligne suivante pour permettre à trusted_advisor d’exécuter uniquement les commandes cp et mv, sans mot de passe :

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Ajoutez également cette ligne séparée pour activer un journal sudo dédié dans ce conteneur, qui ne fournit pas de fichier /var/log/auth.log :

Defaults logfile="/var/log/sudo.log"

Appuyez sur Esc, saisissez :wq, puis appuyez sur Entrée pour enregistrer et quitter Vim. Si visudo signale une erreur de syntaxe, appuyez sur e pour revenir à l’édition et la corriger. Pour abandonner les modifications dans Vim, appuyez sur Esc, saisissez :q!, puis appuyez sur Entrée.

Cet exercice porte uniquement sur la correspondance des commandes : un accès root sans restriction aux commandes cp ou mv peut écraser des fichiers sensibles. Ce n’est pas une restriction sûre pour un système en production.

Tester l’accès sudo restreint

Testons maintenant si l’accès sudo restreint fonctionne comme prévu. Revenez d’abord à l’espace de travail du laboratoire et créez un fichier de test :

cd /home/labex/project
echo "This is a test file" > important_file.txt

Basculez ensuite vers l’utilisateur trusted_advisor :

su - trusted_advisor

Saisissez le mot de passe à l’invite.

Essayez de copier le fichier dans le répertoire root. Cette opération devrait être autorisée :

sudo cp /home/labex/project/important_file.txt /root/

La commande devrait réussir sans demander de mot de passe.

Essayez ensuite d’exécuter une commande qui ne figure pas dans la liste autorisée, comme cat :

sudo -n cat /root/important_file.txt

La commande doit échouer, car cat n’est pas autorisée. L’option -n empêche l’affichage d’une demande de mot de passe ; le message de refus peut indiquer qu’un mot de passe est nécessaire ou que la commande n’est pas autorisée. Le contenu du fichier ne doit pas s’afficher.

Quittez la session de l’utilisateur restreint avant de vérifier la copie, car ls ne figure pas non plus parmi les commandes autorisées :

exit

En tant que labex, vérifiez que le fichier a bien été copié :

sudo ls /root/

La sortie doit contenir important_file.txt.

Supprimer le fichier de test

Pour nettoyer, supprimez le fichier de test :

sudo rm /home/labex/project/important_file.txt /root/important_file.txt

Journaux sudo et considérations de sécurité

Dans cette étape, vous découvrirez la journalisation de sudo et les bonnes pratiques de sécurité. Surveiller l’utilisation de sudo est important pour la sécurité et les audits.

Journalisation de sudo

Lorsque les utilisateurs exécutent des commandes avec sudo, ces actions sont consignées. Ces journaux constituent une piste d’audit utile pour surveiller la sécurité et résoudre des problèmes.

Les installations Ubuntu dotées d’un service de journalisation système utilisent souvent le fichier /var/log/auth.log. Dans ce conteneur, utilisez plutôt le journal dédié configuré à l’étape 2. En tant que labex, examinez les dernières activités sudo :

sudo tail -n 10 /var/log/sudo.log

Cette commande affiche les 10 dernières entrées du journal liées à sudo. La sortie doit inclure des horodatages, des noms d’utilisateur et les commandes exécutées avec sudo.

Bonnes pratiques de sécurité pour sudo

Voici quelques bonnes pratiques pour gérer les privilèges sudo :

  • Principe du moindre privilège : les utilisateurs ne doivent disposer que des privilèges minimum nécessaires à leurs tâches.

  • Utiliser des commandes précises : au lieu d’accorder un accès sudo complet, indiquez précisément les commandes qu’un utilisateur peut exécuter.

  • Exiger un mot de passe : pour les opérations sensibles, assurez-vous que les utilisateurs doivent saisir leur mot de passe lorsqu’ils utilisent sudo.

  • Effectuer des audits réguliers : consultez périodiquement les journaux sudo et le fichier sudoers pour vérifier que la configuration est correcte.

  • Supprimer les accès inutiles : dès qu’un utilisateur n’a plus besoin de privilèges élevés, retirez-le rapidement du groupe sudo.

Supprimer l’accès sudo

À l’étape 2, vous avez déjà retiré trusted_advisor du groupe sudo. Pour révoquer l’accès restant, limité à certaines commandes, supprimez également sa règle :

sudo EDITOR=vim visudo

Appuyez sur Esc, saisissez /^trusted_advisor, puis appuyez sur Entrée pour rechercher la règle. Appuyez sur dd pour supprimer toute la ligne :

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Conservez la ligne Defaults logfile. Saisissez :wq, puis appuyez sur Entrée pour enregistrer et quitter. Vérifiez l’appartenance aux groupes :

groups trusted_advisor

La sortie ne doit pas contenir sudo.

Vérifier la révocation de l’accès sudo

Vérifions que l’utilisateur ne peut plus exécuter de commandes avec sudo :

su - trusted_advisor

Saisissez le mot de passe à l’invite.

Essayez d’exécuter une commande avec sudo :

sudo -n ls /root

Vous devriez maintenant voir le message trusted_advisor is not in the sudoers file. La commande doit échouer.

Quittez la session de l’utilisateur trusted_advisor :

exit

Rétablir l’accès sudo

Pour les besoins de ce laboratoire, ajoutons à nouveau l’utilisateur au groupe sudo :

sudo usermod -aG sudo trusted_advisor

Vérifiez que l’utilisateur fait de nouveau partie du groupe sudo :

groups trusted_advisor

La sortie doit maintenant contenir « sudo » dans la liste des groupes.

Résumé

Dans ce laboratoire, vous avez découvert des techniques essentielles de gestion des utilisateurs et de contrôle des privilèges sous Linux. Vous avez mis en pratique les notions et opérations suivantes :

  1. Créer des utilisateurs : vous avez appris à créer de nouveaux comptes utilisateur avec la commande adduser.

  2. Accorder des privilèges sudo : vous avez découvert comment accorder des droits d’administration en ajoutant des utilisateurs au groupe sudo.

  3. Restreindre l’accès sudo : vous avez appliqué le principe du moindre privilège en limitant l’accès sudo d’un utilisateur à certaines commandes à l’aide du fichier sudoers.

  4. Journalisation et surveillance de sudo : vous avez étudié la consignation des activités sudo et l’importance de surveiller ces journaux pour garantir la sécurité.

  5. Gérer l’accès sudo : vous avez appris à accorder et à retirer des privilèges sudo aux utilisateurs selon les besoins.

Ces compétences sont fondamentales pour l’administration système et la sécurité sous Linux. En gérant correctement les privilèges des utilisateurs, vous pouvez maintenir un système sécurisé, où chacun accède aux ressources dont il a besoin sans compromettre l’intégrité ni la sécurité du système.