GNU/Linux >> Tutoriels Linux >  >> Linux

Sécurisez Linux avec le fichier Sudoers

Sous Linux, le fichier sudoers est l'endroit où vous accordez aux utilisateurs des privilèges élevés. Par défaut, seul l'utilisateur root dispose de ces privilèges. Mais, dans certains cas, il peut être nécessaire que les utilisateurs réguliers disposent également de privilèges élevés.

Pas un lecteur? Regardez ce didacticiel vidéo associé ! Vous ne voyez pas la vidéo ? Assurez-vous que votre bloqueur de publicités est désactivé.

Le fichier sudoers est principalement destiné aux administrateurs système et peut être un peu intimidant pour les nouveaux arrivants. Ne vous laissez pas décourager ! Avec de la patience et une attention aux détails, n'importe qui peut apprendre à gérer efficacement le fichier sudoers.

Ce guide vous apprendra comment modifier les sudoers et donner aux utilisateurs des privilèges élevés en toute sécurité. Vous apprendrez également quelques bonnes pratiques à garder à l'esprit lorsque vous travaillez avec des sudoers. N'allez nulle part; préparez-vous à faire passer votre gestion des privilèges utilisateur Linux au niveau supérieur !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous que vous disposez d'un système Linux avec un compte d'utilisateur standard que vous pouvez utiliser. Ce guide utilise un système Ubuntu 20.04, mais toute autre distribution Linux devrait également fonctionner.

Présentation du fichier Linux Sudoers

Le fichier sudoers réside dans /etc/sudoers, un fichier en texte brut contenant les politiques sur les privilèges qu'un utilisateur obtient lors de l'exécution de la commande sudo. Avant d'aller plus loin, il est essentiel de vous familiariser avec le contenu et les sections par défaut du fichier sudoers.

La capture d'écran ci-dessous montre le contenu du fichier sudoers par défaut sur Ubuntu 20.04. Le contenu par défaut du fichier sudoers peut différer d'une distribution Linux à l'autre.

Ce qui suit est un aperçu rapide des sections du fichier sudoers.

Section des valeurs par défaut

  • Defaults env_reset - Executing commands with sudo creates a new environment with minimal or default environment variables. In most Linux distros, sudo will load the environment variable in the /etc/environment file.
  • Defaults mail_badpass - Cette ligne déclenche l'envoi d'un e-mail à la racine lorsqu'un utilisateur saisit un mauvais mot de passe avec sudo.
  • Defaults secure_path - This line defines the PATH environment variable that sudo uses instead of the user’s PATH environment.

Privilèges Sudo de l'utilisateur et du groupe

Cette ligne définit les privilèges sudo pour des utilisateurs spécifiques ou des membres de groupes.

Remarque :Le % au début indique que la politique s'applique aux membres du groupe.

  • Le premier champ définit que sa politique s'applique au root utilisateur et les membres du admin et sudo groupes.
  • Le premier ALL signifie que la règle s'applique à tous les hôtes.
  • Le deuxième ALL autorise le root compte pour exécuter des commandes comme n'importe quel utilisateur.
  • Le troisième ALL autorise le root compte pour exécuter des commandes comme n'importe quel groupe.
  • Les derniers ALL signifie que cette stratégie s'applique aux commandes de commande.

Inclure des directives

À la fin du fichier, vous verrez une ligne qui ressemble à un commentaire mais qui n'en est pas. Les lignes commençant par #include et #includedir sont appelées directives d'inclusion.

#includedir /etc/sudoers.d – Cette ligne indique à sudo de regarder dans /etc/sudoers.d répertoire pour tous les fichiers de configuration supplémentaires.

Éditer le fichier Sudoers avec le bon outil

Le fichier sudoers est un fichier texte brut que vous pouvez ouvrir avec votre éditeur de texte préféré, mais cela n'est pas conseillé. Pourquoi? Étant donné que le contenu du fichier sudoers suit une syntaxe spécifique, un éditeur de texte standard n'a aucune protection pour vous empêcher de gâcher le fichier sudoers.

Une configuration incorrecte peut entraîner des problèmes de sécurité ; pire, chaque utilisateur peut perdre la possibilité d'élever ses privilèges.

Quel est le bon outil ? — visudo . Cet outil ouvre le fichier sudoers dans l'éditeur de texte par défaut. De plus, visudo empêche l'édition simultanée et effectue une vérification des erreurs avant de quitter.

Dans Ubuntu 20.04, l'éditeur par défaut est vim , mais vous pouvez définir un autre éditeur, tel que nano , si vous préférez.

1. Ouvrez une session de terminal ou SSH sur votre machine Linux.

2. Exécutez la commande ci-dessous pour répertorier les éditeurs de texte disponibles sur votre ordinateur.

sudo update-alternatives --config editor

Comme vous pouvez le voir, l'éditeur par défaut actuel est la sélection 5, qui est vim. Supposons que vous préfériez conserver la valeur par défaut, appuyez sur Entrée. Si vous préférez un autre éditeur, appuyez sur le numéro de sélection correspondant, tel que 0 pour nano, et appuyez sur Entrée.

3. Maintenant, exécutez la commande ci-dessous pour ouvrir le fichier sudoers dans l'éditeur par défaut.

sudo visudo

Si le fichier sudoers est ouvert dans une autre session, vous verrez l'erreur ci-dessous, et visudo vous empêchera d'ouvrir le fichier. De cette façon, deux utilisateurs ne peuvent pas apporter de modifications conflictuelles en même temps.

visudo :/etc/sudoers occupé, réessayez plus tard

4. Une fois le fichier sudoers ouvert, cause délibérément une erreur de syntaxe en supprimant la dernière instance de ALL, puis enregistrez et quittez l'éditeur.

5. visudo will warn you that there’s a syntax error and asks, “What now?”. At this point, you have three options.

  • Tapez e et appuyez sur Entrée pour rééditer le fichier. Cette option permet de corriger à nouveau le fichier sudoers dans l'éditeur.
  • Tapez x et appuyez sur Entrée pour annuler les modifications et quitter visudo .
  • Tapez Q, appuyez sur Entrée pour ignorer l'erreur, enregistrez le fichier sudoers et quittez visudo. Ne choisissez cette option que si vous êtes sûr des conséquences.

Dans cet exemple, appuyez sur x pour annuler les modifications et conserver l'ancien contenu du fichier sudoers.

Comme vous pouvez le voir, il serait difficile de gâcher le fichier sudoers avec visudo de façon permanente.

Accorder des privilèges spécifiques

Apporter directement des modifications au fichier sudoers est faisable mais peut devenir ingérable à mesure que les politiques et les règles se développent. La meilleure alternative consiste à utiliser les directives include à la place. De cette façon, vous pouvez créer plusieurs fichiers de configuration contenant différentes politiques et règles personnalisées.

Supposons que vous souhaitiez autoriser un groupe d'utilisateurs à exécuter des commandes réseau spécifiques en tant que root. Pour ce faire, vous devez créer un fichier dans le répertoire /etc/sudoers.d contenant les règles personnalisées pour ce groupe.

1. Tout d'abord, créez le groupe de votre choix qui sera la cible de la règle personnalisée. Dans cet exemple, le nom du groupe est netadmin.

sudo addgroup netadmin

2. Ensuite, créez un compte d'utilisateur normal et faites-en un membre du groupe netadmin.

sudo adduser ata
sudo usermod -aG netadmin ata
id ata

3. Maintenant, créez un nouveau fichier sudoers appelé /etc/sudoers.d/networking et ouvrez-le avec visudo.

sudo visudo -f /etc/sudoers.d/networking

4. Copiez et collez les lignes suivantes dans le réseau fichier.

Cmnd_Alias     CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias     SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Les lignes Cmnd_Alias ​​créent des alias pour les commandes. Dans cet exemple, vous affectez l'alias CAPTURE pour la commande tcpdump et SERVERS pour les commandes apache2ctl et htpasswd. Considérez ces lignes comme regroupant des commandes et leur donnant un nom collectif.

La dernière ligne spécifie que les membres du groupe netadmin peuvent exécuter n'importe quelle commande dans l'alias NETALL en tant que root. Cette ligne doit venir après les lignes Cmnd_Alias.

5. Pour tester les privilèges sudo du compte ata, passez au compte utilisateur ata.

su - ata

6. Maintenant, exécutez l'une des commandes auxquelles l'utilisateur a accès sudo, comme tcpdump.

sudo tcpdump -c 5

Comme vous pouvez le voir ci-dessous, la commande sudo devrait fonctionner car le compte a accès pour l'exécuter.

7. Ensuite, testez et confirmez que le compte ne peut pas exécuter d'autres commandes qui ne figurent pas dans la règle personnalisée, comme lshw.

sudo lshw

Par conséquent, la tentative sudo échoue car votre compte n'a pas le privilège d'exécuter la commande en tant que root.

8. Enfin, revenez à votre compte en exécutant la commande ci-dessous.

exit

Renforcement de la sécurité à l'aide de l'option passwd_tries

Vous ne pouvez pas laisser quiconque essayer de saisir un mauvais mot de passe avec sudo aussi souvent qu'il le souhaite - ce serait une invitation ouverte à des attaques par force brute ou par pulvérisation de mot de passe. À titre préventif, vous devez définir le nombre maximal de tentatives en ajoutant l'option passwd_tries dans le fichier sudoers.

1. Tout d'abord, ouvrez le fichier sudoers personnalisé avec visudo.

sudo visudo -f /etc/sudoers.d/networking

2. Ajoutez la ligne ci-dessous à la fin du fichier sudoers. Cette ligne autorisera jusqu'à quatre tentatives incorrectes de mot de passe sudo avant d'empêcher d'autres tentatives.

Defaults passwd_tries=4

Les fichiers sudoers personnalisés devraient maintenant ressembler à la capture d'écran ci-dessous. Assurez-vous d'enregistrer le fichier et de quitter l'éditeur.

3. Maintenant, passez au compte d'utilisateur ata et réexécutez la commande tcpdump en tant que root. Mais cette fois, entrez un mot de passe incorrect jusqu'à ce que l'invite de mot de passe se termine.

sudo tcpdump

Après votre quatrième tentative avec un mot de passe erroné, vous voyez que sudo vous empêche d'entrer un autre mot de passe pour la cinquième fois.

Conclusion

Dans ce didacticiel, vous avez appris les bases du fichier sudoers par défaut. Vous avez créé des règles personnalisées dans un fichier sudoers distinct pour accorder des privilèges personnalisés. La création et l'application de règles personnalisées sont plus sécurisées que l'ajout d'utilisateurs au sudo groupe.

Vous avez également appris à appliquer l'option passwd_tries pour spécifier le nombre de tentatives de mots de passe incorrects qu'un utilisateur peut effectuer avant que sudo ne mette fin à la tentative d'authentification. Vous pouvez augmenter le contrôle granulaire des utilisateurs qui ont accès à quelles commandes.

Ne vous arrêtez pas ici ! Vous pouvez faire beaucoup plus avec le fichier sudoers, comme ajouter un fichier de conférence pour pimenter l'expérience utilisateur sudo. Merci d'avoir lu et amusez-vous à sécuriser votre système Linux !


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. Premiers pas avec la commande Linux tac

  3. Commande de tri sous Linux avec des exemples

  4. Exemples essentiels de la commande File sous Linux

  5. Autorisations de fichiers sous Linux avec exemple

Introduction au système de fichiers Linux

Commande Linux Tail avec exemples

Commande Linux WC avec exemples

Comment sécuriser les serveurs Linux avec SE Linux

Le fichier Hosts sous Linux

Utilisation de la commande Linux mv avec des exemples