10 configurations de sudoers utiles pour définir ‘sudo’ dans Linux

Dans Linux et d’autres systèmes d’exploitation de type Unix, seul l’utilisateur root peut exécuter toutes les commandes et effectuer certaines opérations critiques sur le système telles que l’installation et la mise à jour, la suppression de paquets, la création d’utilisateurs et de groupes, la modification de fichiers de configuration système importants, etc.

Cependant, un administrateur système qui assume le rôle de l’utilisateur root peut autoriser d’autres utilisateurs système normaux à l’aide de la commande sudo et quelques configurations pour exécuter certaines commandes ainsi que réaliser un certain nombre d’opérations système vitales, y compris celles mentionnées ci-dessus.

Alternativement, l’administrateur système peut partager le mot de passe de l’utilisateur root (ce qui n’est pas une méthode recommandée) afin que les utilisateurs système normaux aient accès au compte utilisateur root via la commande su.

sudo permet à un utilisateur autorisé d’exécuter une commande en tant que root (ou un autre utilisateur), tel que spécifié par la politique de sécurité:

  1. Il lit et analyse /etc/sudoers, recherche l’utilisateur appelant et ses autorisations,
  2. puis demande à l’utilisateur appelant un mot de passe (normalement le mot de passe de l’utilisateur, mais il peut également s’agir du mot de passe de l’utilisateur cible. Ou il peut être omis avec l’étiquette NOPASSWD),
  3. ensuite, sudo crée un processus enfant dans lequel il appelle setuid() pour passer à l’utilisateur cible
  4. ensuite, il exécute un shell ou la commande donnée en tant qu’arguments dans le processus enfant ci-dessus.

Voici dix configurations de fichiers /etc/sudoers pour modifier le comportement de la commande sudo en utilisant des entrées Defaults.

$ sudo cat /etc/sudoers
/etc/sudoers File
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Types d’entrées Defaults

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Pour le cadre de ce guide, nous nous concentrerons sur le premier type de Defaults dans les formes ci-dessous. Les paramètres peuvent être des indicateurs, des valeurs entières, des chaînes de caractères ou des listes.

Vous devez noter que les indicateurs sont implicitement booléens et peuvent être désactivés en utilisant l’opérateur '!', et les listes ont deux opérateurs d’assignation supplémentaires, += (ajouter à la liste) et -= (retirer de la liste).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Définir un chemin sécurisé

C’est le chemin utilisé pour chaque commande exécutée avec sudo, il a deux importances :

  1. Utilisé lorsque l’administrateur système ne fait pas confiance aux utilisateurs sudo pour avoir une variable d’environnement PATH sécurisée
  2. Pour séparer le « chemin root » et le « chemin utilisateur », seuls les utilisateurs définis par exempt_group ne sont pas affectés par ce paramètre.

Pour le définir, ajoutez la ligne :

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Activer sudo lors de la session de connexion utilisateur TTY

Pour permettre à sudo d’être invoqué à partir d’un vrai tty mais pas à travers des méthodes telles que cron ou des scripts cgi-bin, ajoutez la ligne :

Defaults  requiretty   

3. Exécuter la commande Sudo en utilisant un pty

A few times, attackers can run a malicious program (such as a virus or malware) using sudo, which would again fork a background process that remains on the user’s terminal device even when the main program has finished executing.

Pour éviter un tel scénario, vous pouvez configurer sudo pour exécuter d’autres commandes uniquement à partir d’un pseudo-pty en utilisant le paramètre use_pty, que la journalisation I/O soit activée ou non comme suit :

Defaults  use_pty

4. Créer un fichier journal sudo

Par défaut, sudo se connecte via syslog(3). Cependant, pour spécifier un fichier journal personnalisé, utilisez le paramètre logfile comme ceci :

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

Pour enregistrer le nom d’hôte et l’année à quatre chiffres dans le fichier journal personnalisé, utilisez respectivement les paramètres log_host et log_year comme suit :

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Voici un exemple de fichier journal sudo personnalisé :

Create Custom Sudo Log File

5. Enregistrer l’Entrée/Sortie des Commandes Sudo

Les paramètres log_input et log_output permettent à sudo d’exécuter une commande dans un pseudo-terminal et d’enregistrer toutes les saisies utilisateur et toutes les sorties affichées à l’écran respectivement.

Le répertoire de journalisation E/S par défaut est /var/log/sudo-io, et s’il y a un numéro de séquence de session, il est stocké dans ce répertoire. Vous pouvez spécifier un répertoire personnalisé via le paramètre iolog_dir.

Defaults   log_input, log_output

Quelques séquences d’échappement sont prises en charge, telles que %{seq} qui se développe en un numéro de séquence en base 36 croissant monotone, tel que 000001, où chaque paire de chiffres est utilisée pour former un nouveau répertoire, par exemple 00/00/01 comme dans l’exemple ci-dessous :

$ cd /var/log/sudo-io/
$ ls
$ cd  00/00/01
$ ls
$ cat log
Log sudo Input Output

Vous pouvez afficher le reste des fichiers de ce répertoire en utilisant la commande cat.

6. Lecture des Utilisateurs Sudo

Pour informer les utilisateurs sudo sur l’utilisation du mot de passe sur le système, utilisez le paramètre lecture comme ci-dessous.

Il a 3 valeurs possibles :

  1. toujours – informer toujours un utilisateur.
  2. une fois – ne donner des instructions à un utilisateur que la première fois qu’il exécute la commande sudo (cela est utilisé lorsqu’aucune valeur n’est spécifiée)
  3. jamais – ne pas donner d’instructions à l’utilisateur.
 
Defaults  lecture="always"

De plus, vous pouvez définir un fichier d’instructions personnalisé avec le paramètre lecture_file, tapez le message approprié dans le fichier :

Defaults  lecture_file="/path/to/file"
Lecture Sudo Users

7. Afficher un Message Personnalisé Lorsque Vous Entrez un Mauvais Mot de Passe sudo

Lorsqu’un utilisateur entre un mauvais mot de passe, un certain message est affiché sur la ligne de commande. Le message par défaut est « désolé, réessayez« , vous pouvez modifier le message en utilisant le paramètre badpass_message comme suit :

Defaults  badpass_message="Password is wrong, please try again"

8. Augmenter la Limite d’Essais de Mot de Passe sudo

Le paramètre passwd_tries est utilisé pour spécifier le nombre de fois qu’un utilisateur peut essayer d’entrer un mot de passe.

La valeur par défaut est de 3 :

Defaults   passwd_tries=5 
Increase Sudo Password Attempts

Pour définir une temporisation du mot de passe (par défaut 5 minutes) en utilisant le paramètre passwd_timeout, ajoutez la ligne ci-dessous :

Defaults   passwd_timeout=2

9. Laisser Sudo Vous Insulter Lorsque Vous Entrez un Mauvais Mot de Passe

Si un utilisateur entre un mauvais mot de passe, sudo affichera des insultes sur le terminal avec le paramètre d’insultes. Cela désactivera automatiquement le paramètre badpass_message.

Defaults  insults 
Let’s Sudo Insult You When Enter Wrong Password

En savoir plus : Laissez Sudo Vous Insulter Lorsque Vous Entrez un Mot de Passe Incorrect

10. En Apprendre Plus sur les Configurations Sudo

Vous pouvez en apprendre davantage sur les configurations de la commande sudo en lisant : Différence entre su et sudo et comment configurer sudo sous Linux.

C’est tout ! Vous pouvez partager d’autres configurations utiles de la commande sudo ou des astuces et conseils avec les utilisateurs de Linux via la section des commentaires ci-dessous.

Source:
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/