GNU/Linux >> Tutoriels Linux >  >> Linux

10 configurations Sudoers utiles pour définir « sudo » sous Linux

Sous Linux et d'autres systèmes d'exploitation de type Unix, seule la racine l'utilisateur 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 packages, 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 d'utilisateur root peut autoriser d'autres utilisateurs système normaux à l'aide de la commande sudo et de quelques configurations à exécuter certaines commandes ainsi qu'à effectuer 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 normaux du système aient accès au compte utilisateur root via su commande.

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

  1. Il lit et analyse /etc/sudoers , recherche l'utilisateur appelant et ses autorisations,
  2. demande ensuite à 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 ignoré avec la balise NOPASSWD),
  3. après cela, 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 arguments dans le processus enfant ci-dessus.

Voici dix /etc/sudoers configurations de fichiers pour modifier le comportement de sudo commande utilisant Par défaut entrées.

$ 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 par défaut

Defaults                parameter,   parameter_list     #affect all users on any host
[email protected]_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

Dans le cadre de ce guide, nous allons nous concentrer sur le premier type de valeurs par défaut dans les formulaires ci-dessous. Les paramètres peuvent être des drapeaux, des valeurs entières, des chaînes ou des listes.

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

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

1. Définir un PATH sécurisé

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

  1. Utilisé lorsqu'un 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 racine" 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 sur la session de connexion utilisateur TTY

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

Defaults  requiretty   

3. Exécutez la commande Sudo à l'aide d'un pty

Quelques fois, les attaquants peuvent exécuter un programme malveillant (tel qu'un virus ou un logiciel malveillant) à l'aide de sudo, ce qui créerait à nouveau un processus d'arrière-plan qui resterait sur le terminal de l'utilisateur même lorsque le programme principal aurait fini de s'exécuter.

Pour éviter un tel scénario, vous pouvez configurer sudo pour exécuter d'autres commandes uniquement à partir d'un psuedo-pty en utilisant le use_pty paramètre, si la journalisation des E/S est 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 suit :

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 log_host et log_year paramètres respectivement comme suit :

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

Vous trouverez ci-dessous un exemple de fichier journal sudo personnalisé :

5. Log Sudo Command Input/Output

Le log_input et log_output permettent à sudo d'exécuter une commande en pseudo-tty et de consigner toutes les entrées utilisateur et toutes les sorties envoyées à l'écran de manière réceptive.

Le répertoire de journal d'E/S par défaut est /var/log/sudo-io , et s'il existe 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 iolog_dir paramètre.

Defaults   log_input, log_output

Certaines 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 de manière monotone, tel que 000001, où tous les deux chiffres sont utilisés pour former un nouveau répertoire, par ex. 00/00/01 comme dans l'exemple ci-dessous :

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

Vous pouvez afficher le reste des fichiers de ce répertoire à l'aide de la commande cat.

6. Utilisateurs de la conférence Sudo

Pour expliquer aux utilisateurs sudo l'utilisation du mot de passe sur le système, utilisez la conférence paramètre comme ci-dessous.

Il a 3 valeurs possibles :

  1. toujours :toujours faire la leçon à un utilisateur.
  2. une fois – ne sermons un utilisateur que la première fois qu'il exécute la commande sudo (ceci est utilisé lorsqu'aucune valeur n'est spécifiée)
  3. jamais – ne jamais sermonner l'utilisateur.
 
Defaults  lecture="always"

De plus, vous pouvez définir un fichier de cours personnalisé avec le lecture_file paramètre, saisissez le message approprié dans le fichier :

Defaults  lecture_file="/path/to/file"

7. Afficher un message personnalisé lorsque vous entrez un mot de passe sudo incorrect

Lorsqu'un utilisateur entre un mot de passe erroné, un certain message s'affiche sur la ligne de commande. Le message par défaut est "désolé, réessayez ”, vous pouvez modifier le message en utilisant le badpass_message paramètre 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 3 :

Defaults   passwd_tries=5 

Pour définir un délai d'expiration du mot de passe (la valeur par défaut est de 5 minutes) à l'aide de passwd_timeout paramètre, ajoutez la ligne ci-dessous :

Defaults   passwd_timeout=2

9. Laissez Sudo vous insulter lorsque vous entrez un mauvais mot de passe

Dans le cas où un utilisateur tape un mauvais mot de passe, sudo affichera les insultes sur le terminal avec le paramètre insults. Cela désactivera automatiquement le badpass_message paramètre.

Defaults  insults 

En savoir plus :Laissez Sudo vous insulter lorsque vous entrez un mot de passe incorrect

10. En savoir plus Configurations Sudo

De plus, vous pouvez en savoir plus sudo configurations de commande en lisant :Différence entre su et sudo et Comment configurer sudo sous Linux.

C'est ça! Vous pouvez partager d'autres configurations de commandes sudo utiles ou des trucs et astuces avec les utilisateurs de Linux via la section des commentaires ci-dessous.


Linux
  1. Exécutez des conteneurs sur Linux sans sudo dans Podman

  2. 20 commandes Linux essentielles pour chaque utilisateur

  3. Comment trouver tous les utilisateurs de Sudo sous Linux

  4. Comment configurer les privilèges Sudo pour l'utilisateur sous Linux

  5. Configuration de sudo sans mot de passe sur les distributions Linux

Quelques outils utiles pour les administrateurs système Linux

Comment activer le sudo sans mot de passe pour l'utilisateur sous Linux

Comment ajouter un utilisateur à Sudoers ou Sudo Group sur Rocky Linux 8

Guide de configuration du serveur SFTP sous Linux

Linux - Ajouter un utilisateur à la liste des Sudoers

Réglage du fuseau horaire sous Linux