Configurer les comptes utilisateurs et les privilèges Sudo sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez acquérir les compétences fondamentales pour gérer les comptes utilisateurs et les privilèges sudo, des étapes cruciales pour renforcer la sécurité d'un système Linux. Vous mettrez en pratique l'application de politiques de mots de passe, le verrouillage et le déverrouillage de comptes, la sécurisation du compte root, ainsi que l'attribution de droits d'administration. Ces compétences sont indispensables pour tout administrateur système garant de l'intégrité et de la bonne gestion d'un environnement Linux.

Vous commencerez par utiliser la commande chage pour définir des règles d'expiration de mots de passe et la commande passwd pour contrôler l'accès aux comptes. Ensuite, vous sécuriserez le système en désactivant la connexion SSH directe pour l'utilisateur root. Enfin, vous explorerez deux méthodes pour accorder des privilèges élevés : l'ajout d'un utilisateur au groupe wheel pour un accès sudo général, et la création de règles personnalisées et précises via la commande visudo afin de déléguer des tâches administratives spécifiques en toute sécurité.

Gérer les politiques de mots de passe avec chage

Dans cette étape, vous allez apprendre à gérer les politiques de mots de passe des utilisateurs à l'aide de la commande chage. L'application de telles politiques, comme la définition d'une date d'expiration, est une pratique de sécurité essentielle pour protéger les comptes contre les accès non autorisés. La commande chage (abréviation de "change age") permet de consulter et de modifier les informations relatives à la durée de validité des mots de passe.

Tout d'abord, créons un nouvel utilisateur pour nous exercer en toute sécurité. Nous l'appellerons testuser. Exécutez la commande suivante pour ajouter l'utilisateur :

sudo useradd -m testuser

Ensuite, définissez un mot de passe pour testuser. Le système vous demandera de saisir et de confirmer un nouveau mot de passe. Pour faciliter cet atelier, utilisez password comme mot de passe.

sudo passwd testuser

Un message confirmera que le mot de passe a été mis à jour avec succès.

New password:
Retype new password:
passwd: password updated successfully

Maintenant que testuser est créé, consultons ses paramètres de validité de mot de passe par défaut. Utilisez la commande chage avec l'option -l (list) :

sudo chage -l testuser

Le résultat affiche la politique actuelle. Par défaut, la plupart des paramètres sont inactifs et le mot de passe n'expire jamais.

Last password change     : <date>
Password expires     : never
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 0
Maximum number of days between password change  : 99999
Number of days of warning before password expires : 7

Appliquons une politique plus stricte. Nous allons configurer le compte de la manière suivante :

  • -m 7 : L'utilisateur doit attendre au moins 7 jours avant de pouvoir changer à nouveau son mot de passe.
  • -M 90 : Le mot de passe expirera après 90 jours.
  • -W 14 : L'utilisateur recevra un avertissement 14 jours avant l'expiration du mot de passe.

Vous pouvez appliquer tous ces paramètres avec une seule commande chage :

sudo chage -m 7 -M 90 -W 14 testuser

Vérifiez maintenant que les modifications ont été prises en compte en listant à nouveau les paramètres :

sudo chage -l testuser

Le résultat doit maintenant refléter la nouvelle politique que vous venez de définir.

Last password change     : <date>
Password expires     : <date + 90 days>
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 7
Maximum number of days between password change  : 90
Number of days of warning before password expires : 14

Une autre commande utile pour vérifier rapidement le statut du mot de passe d'un utilisateur est passwd -S. Essayons-la sur testuser :

sudo passwd -S testuser

Le résultat fournit un résumé compact du statut du mot de passe, incluant la date de dernière modification, l'âge minimum, l'âge maximum et la période d'avertissement.

testuser PS <date> 7 90 14 -1

Vous avez configuré et vérifié avec succès les politiques de validité des mots de passe pour un compte utilisateur.

Verrouiller et déverrouiller un compte utilisateur avec passwd

Dans cette étape, vous apprendrez à verrouiller et déverrouiller temporairement des comptes utilisateurs. Il s'agit d'une tâche administrative courante, par exemple lorsqu'un employé part en congés prolongés ou si l'on soupçonne qu'un compte a été compromis. Le verrouillage empêche la connexion tout en préservant les données et la configuration de l'utilisateur. Nous utiliserons le compte testuser créé précédemment.

Tout d'abord, verrouillons le compte testuser. La commande passwd avec l'option -l (lock) est utilisée à cet effet.

sudo passwd -l testuser

Vous devriez voir un message de confirmation :

passwd: password expiry information changed.

Pour vérifier que le compte est bien verrouillé, consultez à nouveau son statut avec la commande passwd -S.

sudo passwd -S testuser

Observez le champ de statut dans le résultat. Il doit maintenant commencer par L (Locked), indiquant que la connexion par mot de passe est désactivée.

testuser L <date> 7 90 14 -1

Essayons de basculer vers le compte testuser pour confirmer qu'il est inaccessible. Utilisez la commande su (substitute user). Le mot de passe de testuser vous sera demandé.

su - testuser

Saisissez le mot de passe password. La tentative de connexion échouera, ce qui est le comportement attendu pour un compte verrouillé.

Password:
su: Authentication failure

Maintenant, déverrouillons le compte. Cela se fait avec l'option passwd -u (unlock).

sudo passwd -u testuser

À nouveau, un message de confirmation s'affiche :

passwd: password expiry information changed.

Vérifions le statut déverrouillé avec passwd -S :

sudo passwd -S testuser

Le statut doit maintenant être PS (Password Set), indiquant que le compte est actif et possède un mot de passe valide.

testuser PS <date> 7 90 14 -1

Enfin, essayons à nouveau de basculer vers le compte testuser.

su - testuser

Saisissez le mot de passe password lorsque vous y êtes invité. Cette fois, la connexion doit réussir et votre invite de commande changera pour indiquer que vous êtes connecté en tant que testuser.

Password:
testuser@<hostname>:~$

Pour revenir à votre session utilisateur labex initiale, tapez simplement exit et appuyez sur Entrée.

exit

Vous avez pratiqué avec succès le verrouillage et le déverrouillage d'un compte utilisateur.

Sécuriser le compte root en désactivant la connexion SSH

Dans cette étape, vous allez renforcer la sécurité de votre système en désactivant la connexion SSH directe pour l'utilisateur root. Autoriser une connexion root à distance constitue un risque de sécurité majeur, car cela offre une cible directe et privilégiée aux attaquants. La bonne pratique consiste à se connecter en tant qu'utilisateur standard, puis à utiliser sudo pour effectuer les tâches administratives.

Tout d'abord, vous devez modifier le fichier de configuration du démon SSH, situé à l'emplacement /etc/ssh/sshd_config. Nous utiliserons l'éditeur de texte nano pour modifier ce fichier. Comme il s'agit d'un fichier système protégé, vous devez utiliser sudo.

sudo nano /etc/ssh/sshd_config

Dans l'éditeur nano, vous devez trouver la ligne contenant PermitRootLogin. Vous pouvez utiliser la fonction de recherche en appuyant sur Ctrl+W, en tapant PermitRootLogin, puis en appuyant sur Enter.

Note : Sur certains systèmes d'exploitation ou dans certains environnements de navigation, le raccourci Ctrl+W peut entrer en conflit avec les raccourcis du navigateur. Si vous ne pouvez pas utiliser Ctrl+W pour rechercher, vous pouvez faire défiler le fichier manuellement pour localiser la ligne PermitRootLogin, qui se trouve généralement dans la section d'authentification du fichier de configuration.

Vous trouverez probablement une ligne ressemblant à ceci :

#PermitRootLogin prohibit-password

Ou elle peut être définie sur yes. Votre tâche est de modifier cette ligne en PermitRootLogin no. Assurez-vous de supprimer le caractère # au début de la ligne s'il est présent, car ce caractère met la ligne en commentaire, la rendant inactive. La ligne finale doit ressembler exactement à ceci :

PermitRootLogin no

Après avoir effectué la modification, enregistrez le fichier et quittez nano. Appuyez sur Ctrl+X, puis sur Y pour confirmer l'enregistrement des modifications, et enfin sur Enter pour confirmer le nom du fichier.

Pour que la nouvelle configuration soit prise en compte, vous devez redémarrer le service SSH. Utilisez la commande service pour cela :

sudo service ssh restart

La commande ne produira aucun résultat si elle s'exécute correctement. Pour vous assurer que le service fonctionne bien, vous pouvez vérifier son statut :

sudo service ssh status

Vous devriez voir que le service est running (en cours d'exécution).

Maintenant, testons si la modification fonctionne. Nous allons essayer de nous connecter en SSH à la machine en tant que root depuis la machine elle-même (en utilisant localhost). Tout d'abord, vous devez définir un mot de passe pour l'utilisateur root afin de rendre le test valide. Utilisez password comme mot de passe.

sudo passwd root
New password:
Retype new password:
passwd: password updated successfully

Maintenant, tentez de vous connecter en SSH en tant que root :

ssh root@localhost

La connexion doit être immédiatement rejetée avec une erreur "Permission denied". Cela confirme que votre amélioration de sécurité fonctionne correctement.

root@localhost: Permission denied (publickey,password).

Vous avez sécurisé votre système avec succès en désactivant la connexion directe de root via SSH.

Accorder l'accès Sudo via le groupe wheel

Dans cette étape, vous apprendrez une méthode standard pour accorder des privilèges administratifs : ajouter un utilisateur à un groupe spécial (généralement wheel ou sudo) préconfiguré pour avoir un accès sudo. Cette approche est plus simple à gérer et plus évolutive que l'ajout d'entrées individuelles dans le fichier sudoers. Nous continuerons d'utiliser le compte testuser.

Tout d'abord, confirmons que testuser ne possède pas actuellement de privilèges sudo. Basculez vers le compte testuser. Le mot de passe est password.

su - testuser

Maintenant, en tant que testuser, essayez d'exécuter une commande nécessitant les privilèges root, comme whoami avec sudo. Le mot de passe de testuser vous sera demandé.

sudo whoami

Après avoir saisi le mot de passe, la commande échouera. Vous verrez un message indiquant que testuser n'est pas dans le fichier sudoers. C'est le résultat attendu.

[sudo] password for testuser:
testuser is not in the sudoers file.  This incident will be reported.

Maintenant, tapez exit pour revenir à votre session utilisateur labex.

exit

Ensuite, nous devons modifier la configuration sudoers pour accorder l'accès sudo à tous les membres du groupe wheel. La manière la plus sûre de modifier cette configuration est d'utiliser la commande visudo, qui valide la syntaxe avant l'enregistrement pour éviter que vous ne soyez bloqué hors du système.

sudo visudo

Cela ouvrira le fichier /etc/sudoers dans un éditeur de texte (probablement vi ou nano). Recherchez une ligne faisant référence au groupe %wheel. Elle sera probablement commentée avec un caractère #.

## %wheel ALL=(ALL) ALL

ou

## %wheel ALL=(ALL:ALL) ALL

Vous devez décommenter cette ligne en supprimant le # au début. Le résultat doit ressembler à ceci :

%wheel ALL=(ALL) ALL

Si vous êtes dans l'éditeur vi, utilisez les touches fléchées pour naviguer jusqu'au #, appuyez sur x pour le supprimer, puis tapez :wq et appuyez sur Enter pour enregistrer et quitter. Si vous êtes dans nano, supprimez simplement le #, appuyez sur Ctrl+X, puis Y, et enfin Enter.

Maintenant que le groupe wheel dispose des droits nécessaires, ajoutez-y testuser. Utilisez la commande usermod avec les options -aG, où -a signifie ajouter (append) et -G spécifie le groupe supplémentaire.

sudo usermod -aG wheel testuser

Pour vérifier que testuser est désormais membre du groupe wheel, utilisez la commande groups :

groups testuser

Le résultat doit afficher wheel dans la liste des groupes de testuser.

testuser : testuser wheel

Enfin, testons si les nouvelles permissions fonctionnent. Basculez à nouveau vers testuser.

su - testuser

Réessayez la commande sudo. Saisissez password lorsque vous y êtes invité.

sudo whoami

Cette fois, la commande doit s'exécuter avec succès et afficher root, confirmant que testuser possède désormais les privilèges sudo.

[sudo] password for testuser:
root

Tapez exit pour revenir à votre session labex. Vous avez accordé avec succès l'accès sudo en ajoutant un utilisateur au groupe wheel.

Créer des règles Sudo personnalisées avec visudo

Dans cette étape, vous irez au-delà des permissions globales par groupe pour apprendre à créer des règles sudo précises. Cela est essentiel pour appliquer le principe du moindre privilège, selon lequel les utilisateurs ne reçoivent que les permissions exactes dont ils ont besoin pour accomplir leurs tâches. Nous utiliserons des alias dans le fichier sudoers pour définir un ensemble d'utilisateurs et un ensemble de commandes, puis nous les lierons dans une règle.

Tout d'abord, créons une situation pour tester notre règle. Nous allons lancer un processus en tant qu'utilisateur root. La commande top, un moniteur de processus simple, est parfaite pour cela. Nous l'exécuterons en arrière-plan via sudo. Avant de commencer, assurons-nous qu'aucun autre processus top n'est en cours d'exécution.

pgrep top || echo "No top processes running"
sudo top &

Vous verrez l'identifiant de processus (PID) de la tâche en arrière-plan. Appuyez sur Enter si votre invite de commande ne réapparaît pas immédiatement.

[1] <PID>

Maintenant, créons la règle personnalisée. Nous allons accorder à notre testuser la capacité spécifique de terminer des processus à l'aide des commandes kill et pkill. Ouvrez le fichier sudoers pour modification à l'aide de la commande visudo. C'est la seule méthode sûre pour éditer ce fichier.

sudo visudo

Cela ouvrira /etc/sudoers dans un éditeur. Allez à la fin du fichier. Ajoutez les lignes suivantes pour définir un alias de commande et un alias d'utilisateur, puis créez la règle qui les connecte.

## Custom rule for junior administrators
Cmnd_Alias      KILL_CMDS = /usr/bin/kill, /usr/bin/pkill
User_Alias      JUNIOR_ADMINS = testuser

JUNIOR_ADMINS   ALL=(ALL) KILL_CMDS

Analysons ces lignes :

  • Cmnd_Alias : Crée une liste nommée de commandes. Nous avons nommé la nôtre KILL_CMDS. Notez que vous devez utiliser le chemin complet vers les commandes.
  • User_Alias : Crée une liste nommée d'utilisateurs. Nous avons nommé la nôtre JUNIOR_ADMINS.
  • La dernière ligne est la règle elle-même. Elle accorde aux utilisateurs de JUNIOR_ADMINS la permission d'exécuter les commandes de KILL_CMDS sur tous les hôtes (ALL).

Après avoir ajouté ces lignes, enregistrez le fichier et quittez l'éditeur.

Pour tester correctement cette règle spécifique, nous devons d'abord retirer testuser du groupe wheel afin de révoquer l'accès sudo complet accordé à l'étape précédente. Cela garantit la validité de notre test.

sudo gpasswd -d testuser wheel

Vous verrez un message de confirmation :

Removing user testuser from group wheel

Maintenant, testons les nouvelles permissions limitées. Basculez vers le compte testuser. Le mot de passe est password.

su - testuser

D'abord, confirmez que l'accès sudo complet a disparu. Essayez d'exécuter une commande qui n'est pas dans notre alias KILL_CMDS, comme whoami.

sudo whoami

Cette tentative doit échouer avec un message indiquant que testuser n'est pas autorisé à exécuter cette commande.

[sudo] password for testuser:
Sorry, user testuser is not allowed to execute '/usr/bin/whoami' as root on <hostname>.

Ensuite, essayez l'une des commandes autorisées. Utilisons pkill pour arrêter le processus top lancé précédemment. Nous utiliserons pkill -u root top pour cibler spécifiquement le processus top s'exécutant en tant que root.

sudo pkill -u root top

Cette commande doit s'exécuter avec succès sans aucun message d'erreur. Pour confirmer que le processus top a été terminé, revenez à votre utilisateur labex et vérifiez le processus.

exit

Maintenant, vérifiez si le processus top est toujours en cours d'exécution.

pgrep -u root top

La commande ne doit produire aucun résultat, confirmant que le processus a été tué avec succès par testuser. Vous avez créé et testé avec succès une règle sudo granulaire.

Résumé

Dans cet atelier, vous avez appris les techniques essentielles pour gérer les comptes utilisateurs et leurs politiques de sécurité dans un environnement Linux. Vous vous êtes exercé à utiliser la commande chage pour appliquer des règles de validité des mots de passe, telles que la définition de durées de vie minimales et maximales et de périodes d'avertissement. Vous avez également appris à verrouiller et déverrouiller des comptes utilisateurs à l'aide de la commande passwd pour contrôler l'accès aux sessions. Pour renforcer la sécurité du système, vous avez modifié la configuration du démon SSH afin de désactiver la connexion directe de root, une pratique exemplaire cruciale pour protéger le compte le plus privilégié du système.

De plus, vous avez exploré des méthodes pour déléguer des privilèges administratifs de manière sécurisée via sudo. Vous avez appris la pratique standard consistant à accorder un accès sudo complet en ajoutant un utilisateur au groupe wheel avec la commande usermod. Pour un contrôle plus fin, vous avez utilisé la commande visudo pour éditer en toute sécurité le fichier sudoers, créant des règles personnalisées qui permettent à des utilisateurs spécifiques d'exécuter des commandes désignées avec des privilèges élevés sans avoir besoin du mot de passe root. Cette approche permet de respecter le principe du moindre privilège, en n'accordant aux utilisateurs que les permissions nécessaires à l'accomplissement de leurs tâches.