10 configurations Sudoers utiles pour définir « sudo » sous Linux
Sous 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 packages, la création d'utilisateurs et de groupes, la modification d'un système important. fichiers de configuration et ainsi de suite.
Cependant, un administrateur système qui assume le rôle d'utilisateur root peut permettre à d'autres utilisateurs normaux du système, à l'aide de la commande sudo et de quelques configurations, d'exécuter certaines commandes ainsi que d'effectuer un certain nombre d'opérations système vitales, notamment 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 d'utilisateur root via la commande su.
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é :
- Il lit et analyse /etc/sudoers, recherche l'utilisateur appelant et ses autorisations,
- 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),
- après cela, sudo crée un processus enfant dans lequel il appelle setuid() pour passer à l'utilisateur cible
- ensuite, il exécute un shell ou la commande donnée en arguments dans le processus enfant ci-dessus.
Vous trouverez ci-dessous dix configurations de fichiers /etc/sudoers pour modifier le comportement de la commande sudo à l'aide des entrées Defaults.
sudo cat /etc/sudoers
#
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
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
Dans le cadre de ce guide, nous nous concentrerons sur le premier type de Valeurs par défaut dans les formulaires ci-dessous. Les paramètres peuvent être des indicateurs, des valeurs entières, des chaînes ou des listes.
Vous devez noter que les indicateurs sont implicitement booléens et peuvent être désactivés à l'aide de l'opérateur '!'
, et que 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éfinissez un CHEMIN sécurisé
C'est le chemin utilisé pour chaque commande exécutée avec sudo, il a deux importances :
- Utilisé lorsqu'un administrateur système ne fait pas confiance aux utilisateurs sudo pour disposer d'une variable d'environnement PATH sécurisée
- 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. Activez sudo sur la session de connexion utilisateur TTY
Pour permettre à sudo d'être invoqué à partir d'un véritable tty mais pas via des méthodes telles que les scripts cron ou cgi-bin, ajoutez la ligne :
Defaults requiretty
3. Exécutez la commande Sudo à l'aide d'un pty
Parfois, 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 en arrière-plan qui reste sur le terminal de l’utilisateur même lorsque l’exécution du programme principal est terminée.
Pour éviter un tel scénario, vous pouvez configurer sudo pour exécuter d'autres commandes uniquement à partir d'un psuedo-pty à l'aide du paramètre use_pty
, que la journalisation des E/S soit activée ou non. suit :
Defaults use_pty
4. Créez 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 respectivement les paramètres log_host et log_year comme suit :
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Vous trouverez ci-dessous un exemple de fichier journal sudo personnalisé :
5. Enregistrer l'entrée/sortie de la commande Sudo
Les paramètres 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 des journaux 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 paramètre iolog_dir.
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 exemple. 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. Conférence aux utilisateurs de Sudo
Pour expliquer aux utilisateurs sudo l'utilisation du mot de passe sur le système, utilisez le paramètre lecture comme ci-dessous.
Il a 3 valeurs possibles :
- toujours – toujours faire la leçon à un utilisateur.
- une fois - ne faites la leçon qu'à un utilisateur la première fois qu'il exécute la commande sudo (ceci est utilisé lorsqu'aucune valeur n'est spécifiée)
- jamais – ne faites jamais la leçon à l’utilisateur.
Defaults lecture="always"
De plus, vous pouvez définir un fichier de conférence personnalisé avec le paramètre lecture_file, saisissez le message approprié dans le fichier :
Defaults lecture_file="/path/to/file"
7. Afficher un message personnalisé lorsque vous entrez un mauvais mot de passe sudo
Lorsqu'un utilisateur saisit 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 à l'aide du paramètre badpass_message comme suit :
Defaults badpass_message="Password is wrong, please try again"
8. Augmentez 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 de saisir 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 du paramètre passwd_timeout, 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 des insultes sur le terminal avec le paramètre insults. Cela désactivera automatiquement le paramètre badpass_message.
Defaults insults
Lire la suite : Laissez Sudo vous insulter lorsque vous saisissez un mot de passe incorrect
10. En savoir plus sur les configurations Sudo
De plus, vous pouvez en savoir plus sur les configurations de la commande sudo 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 commentaires ci-dessous.