Le guide complet pour Maîtriser Sudoers.

Harsha Koushik

Suivre

Apr 18, 2020 · 10 min de lecture

qu’est-Ce que le Fichier Sudoers?

Le fichier Sudoers est comme n’importe quel autre fichier sur le système d’exploitation Linux., Mais il joue un rôle essentiel dans la gestion de ce qu’un « Utilisateur” ou des « utilisateurs d’un groupe” peuvent faire sur le système.

Pourquoi le nom Sudoers?

Le mot Sudo est l’abréviation du terme « Super User Do”. Comme il le suggère clairement – c’est comme dire au Noyau /OS  » vous n’avez pas le choix, faites-le!”. Ainsi, les utilisateurs avec l’autorisation Sudo sont appelés en tant qu’utilisateurs Sudo. La gestion de tous ces utilisateurs sudo se fait via un fichier appelé fichier Sudoers. Ce fichier se trouve également dans le répertoire /etc, comme tout autre fichier de configuration.,

Image-1. Fichier Sudoers dans le répertoire / etc. Système d’exploitation: Kali Linux 2019.4

Pourquoi le fichier Sudoers?

Un utilisateur normal sous Linux aura de nombreuses restrictions dans le système. Par exemple, l’utilisateur ne pourra pas démarrer un service, modifier un fichier de configuration ou exécuter un script sur le système par défaut. Du point de vue de la sécurité, cela semble parfait.,

Mais, prenons un exemple d’ — vous en tant qu’administrateur du système à gérer les utilisateurs et leurs contrôles. Vous avez un site Web hébergé sur Apache dans l’un de vos serveurs. Vous avez déjà un administrateur Web pour le gérer. Un utilisateur doit être créé pour lui sur le serveur Web. Cet Utilisateur devrait être autorisé à faire deux choses qu’un utilisateur normal ne peut pas faire :

  • Démarrer/Redémarrer le service Apache au cas où il s’arrêterait.
  • Modifier le fichier de configuration d’Apache.

Vous avez deux options utilisateur par défaut:

  1. Utilisateur Root qui a toutes les autorisations sur le système, y compris Apache.,
  2. Un utilisateur normal, qui par défaut ne pourra pas démarrer un Service ou modifier des fichiers de configuration sur le système.

C’est à ce moment qu’un fichier sudoers vous sera utile. Dans le fichier Sudoers, nous pouvons définir exactement:

  • L’utilisateur administrateur Web ne peut démarrer que le service Apache&
  • Il ne peut éditer que le fichier de configuration Apache.

En jouant avec le fichier Sudoers

Assez de théorie, nous allons commencer à faire les choses réelles maintenant. Je vais expliquer chaque section dans le fichier Sudoers avec quelques exemples., Par défaut, un fichier Sudoers ressemble à ceci —

Image-2. Fichier Sudoers non édité. Système d’exploitation: Kali Linux 2019.4

Principalement, nous pouvons voir cinq sections dans le fichier — les trois premières sections du fichier sont liées à ALIAS de l’hôte, Utilisateur et Cmnd., Nous parlerons d’ALIAS plus tard, parlons d’abord de la section de base :

#Spécification des privilèges utilisateur

root ALL = (ALL:ALL) ALL

Remarque: ‘#’ indique un commentaire dans le fichier, OS ignorera cette ligne lors de l’exécution.,

Syntaxe : nom d’Utilisateur: <espace> OnHost = (Runas-Utilisateur:Groupe) <espace> Commandes

Exemple: root ALL = (ALL:ALL) TOUS

Lire Utilisateur Root peut Exécuter n’Importe quelle Commande que n’Importe quel Utilisateur de n’Importe quel Groupe sur n’Importe quel Hôte.

→ Le premier est utilisé pour définir les HÔTES. Nous pouvons définir Hostname / Ip-Address au lieu de ALL. TOUS les moyens de n’importe quel hôte.

→ Deuxième TOUT: Troisième TOUT est Utilisateur: Groupe., Au lieu de TOUT, nous pouvons définir l’utilisateur ou l’utilisateur avec le groupe comme User:Group. TOUS: TOUS signifie Tous les utilisateurs et Tous les groupes.

→ Last ALL est la commande. Au lieu de TOUT, nous pouvons définir une commande ou un ensemble de commandes. TOUT signifie toutes les commandes.

Pour le dire très simplement, c’est”qui où = (as_whom) quoi ».

Remarque: La plupart des gens comprennent les HÔTES comme des HÔTES distants. C’est le NOM D’HÔTE LOCAL/ADRESSE IP., Champ HÔTES sera rarement utilisé, si vous voulez en savoir plus sur les HÔTES dans Sudoers veuillez vous référer → https://www.sudo.ws/man/1.7.10/sudoers.man.html

Fondamentalement, nous pouvons permettre à un utilisateur de faire quelque chose de deux façons seulement —

  1. Directement de lui donner l’autorisation d’exécuter la commande en modifiant les droits du fichier.
  2. lui Permettre d’exécuter la commande en tant qu’un autre utilisateur qui a déjà l’autorisation d’exécuter cette commande.

Dans le fichier Sudoers, nous allons implémenter ce dernier.,

Nous utiliserons un autre exemple pour comprendre clairement les champs de la syntaxe:

Exemple : sysadmin ALL = (root) /usr/bin/cat /etc/shadow

Lisez ceci en tant qu’utilisateur « sysadmin” peut Exécuter la commande « /usr/bin/cat /etc/shadow” en tant qu’utilisateur ROOT sur tous les HÔTES.

Ici, dans l’exemple ci-dessus, dans la section commande — j’ai ajouté quelque chose de plus qu’une commande, c’est pour montrer la flexibilité de Sudoers. La partie « / usr / bin / cat  » est un exécutable binaire ou une commande utilisée pour afficher le contenu d’un fichier., La partie  » / etc/shadow” est un fichier confidentiel qui stocke les mots de passe, cela signifie donc que l’utilisateur « sysadmin” ne peut exécuter « /usr/bin/cat” que sur le fichier « /etc / shadow”, si cet utilisateur essaie de voir le contenu de tout autre fichier sur lequel il n’a pas d’autorisations de lecture, il ne pourra pas.,

la Syntaxe de la commande Sudo: sudo <commande:>

Exemple: sudo cat /etc/shadow

Maintenant, si l’utilisateur « sysadmin” utilise sudo avant toute commande, OS va d’abord lui demander le Mot de passe des Utilisateurs, vérifie le mot de passe et puis s’en va à Sudoers, et vérifie si il est autorisé à émettre cette commande en tant qu’utilisateur. S’il est autorisé-succès, sinon il rapportera l’une de ces deux choses —

→ L’utilisateur n’est pas dans le fichier Sudoers. Cet incident sera signalé.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Ici, l’utilisateur webadmin est uniquement autorisé à exécuter des « cat /etc/shadow”. Mais il a essayé d’exécuter la commande ‘ cat ‘ sur « / etc / gshadow », ce qui n’est pas autorisé.

Comme nous avons assez d’emprise sur les champs de la syntaxe du fichier Sudoers, avançons et comprenons les autres sections du fichier. Toutes les autres sections dépendront de la section de base dont nous avons déjà parlé.,

La section suivante est la section GROUP, qui est

#Permettre aux membres du groupe sudo d’exécuter n’importe quelle commande

%sudo ALL = (ALL:ALL) ALL

Le symbole percentile ‘%’ est utilisé pour représenter un groupe dans le fichier Sudoers. Tous les champs et leurs fonctionnalités dans cette section sont exactement les mêmes que ceux discutés dans la section précédente — la section utilisateur. Nous pouvons attribuer les mêmes Privilèges Sudo à un groupe au lieu d’un utilisateur en spécifiant le nom du groupe — %<nom du groupe>., Ainsi, tous les membres du groupe hériteront des mêmes privilèges accordés au groupe.

Par défaut, il existe un groupe SUDO défini dans le fichier Sudoers. Nous pouvons voir que ces autorisations sont exactement les mêmes que les autorisations des utilisateurs ROOT dans le fichier. Donc, si un utilisateur est membre de ce groupe SUDO, il peut exécuter toutes les commandes qu’un utilisateur ROOT peut exécuter.

Définissons un groupe personnalisé et comprenons la syntaxe plus clairement. Prenons le même ancien exemple d’administrateur système pour le faire. Assumer le pas. des employés sont plus maintenant, donc les administrateurs système sont 3 maintenant., Chacun d’entre eux ont besoin des mêmes autorisations exactes que celles que nous avions données au premier administrateur système. Une chose que nous pouvons faire pour y parvenir est d’avoir trois entrées pour les trois administrateurs système dans le fichier Sudoers. Si nous allons avec cette approche, nous insultons les capacités d’un fichier Sudoers.

La meilleure chose à faire est de regrouper les trois administrateurs système dans un groupe nommé ‘SystemAdminGroup’., Nous allons définir les autorisations requises sur ce groupe avec —

%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow

Maintenant, les trois administrateurs peuvent exécuter la commande Privileged. Nous l’avons fait en une seule fois en utilisant la définition de groupe.

Le fichier Sudoers est capable de rendre tout ce processus plus efficace en utilisant diverses fonctionnalités. Les trois premières sections — ALIAS sont utilisées pour y parvenir., Comme le mot le suggère déjà, nous utilisons un ALIAS pour quelque chose que nous pouvons utiliser dans tout le fichier, c’est comme une VARIABLE GLOBALE dans un Script. Comment cela rend-il le tout plus efficace? Nous pouvons définir un ensemble de commandes, d’hôtes et d’utilisateurs sur une seule ligne, nous attribuons cette ligne à un nom d’ALIAS, cet alias sera utilisé quand et où nécessaire sans définir toutes les commandes/hôtes/utilisateurs à nouveau.

Je veux inclure un ALIAS supplémentaire qui n’est pas répertorié dans le fichier Sudoers par défaut qui est « Run_as ALIAS”., Maintenant, nous avons quatre ALIAS —

  1. ALIAS d’utilisateur comme User_Alias
  2. Run-As ALIAS comme Runas_Alias
  3. ALIAS D’HÔTE comme Host_Alias
  4. ALIAS de commande comme Cmnd_Alias

Remarque : Le nom d’alias doit être défini en lettres majuscules et_). Le nom d’alias doit commencer par alphabet.,3e »>Nom d’ALIAS> = <nom d’utilisateur>,<nom d’utilisateur>/div>, <nom d’utilisateur> Example

Exemple: User_Alias SYSADMINS = john,tim,tom

Utilisation: SYSADMINS ALL = (root)/usr/bin /cat/etc/shadow

Si je veux définir un ensemble d’autorisations sudo pour les utilisateurs — john, tim et tom, je n’ai pas besoin de le définir trois fois, je peux plutôt définir un alias et utiliser ce nom d’alias tout en leur déléguant l’accès sudo.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Ne soyez pas confus ici, rappelez — vous simplement le maître mantra-qui où = (as_whom) quoi. Nous utilisons un alias ici pour inclure no. des utilisateurs dans le champ « as_whom ».

Image-6. Alias Runas dans le fichier Sudoers. Système d’exploitation: Kali Linux 2019.,4

Syntaxe d’ALIAS d’hôte —

Utilisation: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow

Si j’ai besoin de définir un ensemble de noms d’hôte, d’adresses ip ou de plages d’adresses ip sur lesquelles un utilisateur est autorisé à émettre les commandes Privileged / Sudo, je peux Encore une fois, cette partie appartient au champ « where” de la Phrase principale.

Image-7. Alias d’hôte dans le fichier Sudoers., Système d’exploitation: Kali Linux 2019.,iv id= »1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Cette partie appartient au champ” quoi  » de la Phrase principale.

Image-8. Alias Cmnd dans le fichier Sudoers. Système d’exploitation: Kali Linux 2019.4

Mode NOPASSWD:

Il s’agit d’une autre fonctionnalité spéciale dans Sudoers qui permettra à un Utilisateur dans le fichier Sudoers d’exécuter une commande privilégiée sans entrer le mot de passe., Ceci est très utile lors de l’exécution de scripts automatisés dans le système en tant qu’utilisateur normal, le script peut avoir à exécuter une commande privilégiée. Mais nous savons déjà ce qui se passe si un utilisateur utilise SUDO, il devra entrer son mot de passe!

Rappelez-vous que, même s’il s’agit d’un script ou d’un processus, il doit s’exécuter EN TANT QU’UTILISATEUR, il ne peut pas s’exécuter seul.

Tous les scripts automatisés ne sont pas assez intelligents pour entrer un mot de passe lorsque vous y êtes invité. Mais il est possible d’entrer automatiquement le mot de passe. Pour le moment, ne pensons pas aux scripts intelligents., Donc, pour conclure, une commande privilégiée peut être utilisée par un utilisateur sans entrer le mot de passe.

Exemple d’un script nécessitant NOPASSWD: Supervisor sous Linux.Nous discuterons du superviseur dans un autre article.

Syntaxe : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2

Exclusion des paramètres dans les ALIAS

Nous pouvons également ajouter des paramètres qui devraient être exclus dans les ALIAS. Par exemple –

User_Alias EXCEPT_ROOT = ALL, !,root

sysadmin ALL = (EXCEPT_ROOT)/usr/sbin/apache2

Cette User_Alias peut être utilisée pour s’assurer qu’un UTILISATEUR peut exécuter la commande spécifiée en tant que « tous les utilisateurs sauf ROOT”.

Ce type d’exclusion peut être fait dans tous les ALIAS, pas seulement User_Alias. Dans n’importe quel ALIAS, la syntaxe d’exclusion reste la même.

Gestion Sudoers avec Soin

maintenant, vous devez avoir compris ce qu’est un fichier Sudoers peut faire et comment il est important de gérer le fichier avec Soin. Linux implémente déjà un mécanisme pour s’assurer que le fichier Sudoers est géré correctement.,

Il est toujours recommandé DE NE PAS ÉDITER DIRECTEMENT le fichier /etc/sudoers. Il y a un outil appelé « visudo”. Ceci est utilisé pour apporter des modifications en toute sécurité à un fichier sudoers. Lorsque vous modifiez le fichier sudoers en utilisant visudo, visudo a une fonctionnalité intégrée pour vérifier la syntaxe avant d’enregistrer le fichier, si vous faites une erreur, il pointera immédiatement la ligne où la syntaxe n’est pas appropriée. Cette fonctionnalité de visudo empêchera de causer des dommages accidentels au fichier et au système.

Conclusion:

Le fichier Sudoers joue toujours un rôle majeur dans la gestion du Contrôle utilisateur., Bien qu’il existe de nombreuses façons de gérer et de contrôler ce qu’un utilisateur peut et ne peut pas faire sur le système, la méthode Sudoers sera toujours suffisamment efficace et robuste pour gérer et contrôler tout non. de utilisateurs. Une autre méthode similaire à celle-ci qui mérite d’être mentionnée est SUID et SGID. Nous parlerons de SUID et SGID dans un autre article.