Obtention de privilèges

Les administrateurs système et, dans certains cas, les utilisateurs, peuvent avoir besoin d’effectuer certaines tâches avec des droits d’administration. S’identifier en tant que l’utilisateur root peut être dangereux et peut causer des dommages importants au système et aux données. Ce chapitre aborde des façons d’obtenir des privilèges d’administration en utilisant des programmes setuid tels que su et sudo. Ces programmes autorisent certains utilisateurs à effectuer des tâches qui ne pourraient normalement être effectuées uniquement par l’utilisateur root, tout en maintenant un haut niveau de contrôle et de sécurité du système.

Consultez le Red Hat Enterprise Linux 7 Security Guide pour plus d’informations à propos des commandes d’administration, des dangers potentiels et des manières de prévenir les pertes de données résultant d’une utilisation incorrecte des accès privilégiés.

La commande su

Lorsqu’un utilisateur exécute la commande su, on lui demande de saisir le mot de passe root et, après authentification, l’utilisateur obtient un shell root.

Une fois connecté à l’aide de la commande su, l’utilisateur est root et a un accès d’administration du système absolu. Notez que cet accès demeure sujet aux restrictions imposées par SELinux, si activé. De plus, une fois qu’un utilisateur est devenu root, il lui devient possible d’utiliser la commande su pour passer à n’importe quel autre utilisateur sur le système sans qu’on lui demande un mot de passe.

Considérant la puissance de ce programme, les administrateurs d’organisations pourraient vouloir limiter l’accès à la commande à certaines personnes.

Une des manières les plus simples est d’ajouter les utilisateurs au groupe d’administration spécial nommé wheel. Pour ce faire, tapez la commande suivante en tant que root :

~]# usermod -a -G wheel nomdutilisateur

Dans la commande précédente, remplacez nomdutilisateur par le nom de l’utilisateur que vous souhaitez ajouter au groupe wheel.

Vous pouvez aussi utiliser la section Utilisateurs des paramètres de la manière suivante pour modifier l’appartenance aux groupes. Notez que vous avez besoin des privilèges d’administration pour suivre la procédure.

  1. Appuyez sur la touche Super pour accéder à la Vue d’ensemble des activités, tapez Utilisateurs puis appuyez sur Entrée. Les paramètres s’ouvrent alors à la section Utilisateurs. La touche Super peut revêtir plusieurs formes, suivant le clavier et le matériel utilisé, mais elle se trouve généralement à gauche de la barre d’espace (c’est généralement la touche Windows ou Commande).

  2. Pour activer l’accès en modification, cliquez sur le bouton Déverrouiller, et saisissez un mot de passe d’administrateur valide.

  3. Cliquez sur l’icône d’un utilisateur dans la colonne de gauche pour afficher les propriétés de l’utilisateur dans le panneau de droite.

  4. Passez le type du compte de Standard à Administrateur. Cela aura pour effet d’ajouter l’utilisateur au groupe wheel.

Consultez Gestion des utilisateurs dans un environnement graphique pour plus d’informations à propos de l’outil Utilisateurs.

Après avoir ajouté les utilisateurs souhaités au groupe wheel, il est conseillé d’autoriser uniquement ces utilisateurs spécifiques à utiliser la commande su. Pour ce faire, modifiez le fichier de configuration PAM pour la commande su, /etc/pam.d/su. Ouvrez ce fichier dans un éditeur de texte et décommentez la ligne suivante en enlevant le caractère # :

#auth           required        pam_wheel.so use_uid

Avec ce changement, seuls les membres du groupe d’administration wheel peuvent passer à un autre utilisateur en utilisant la commande su.

Remarque

L’utilisateur root fait partie du groupe wheel par défaut.

La commande sudo

La commande sudo propose une autre manière de donner un accès d’administration aux utilisateurs. Lorsque les utilisateurs de confiance commencent une commande d’administration par sudo, on leur demande leur propre mot de passe. Puis, lorsque l’authentification est réussie et que l’exécution de cette commande est autorisée, la commande d’administration est exécutée en tant que l’utilisateur root.

Utilisation de base de la commande sudo :

sudo commande

Dans l’exemple ci-dessus, commande serait remplacé par une commande normalement réservée à l’utilisateur root, comme par exemple mount.

La commande sudo permet un plus grand degré de flexibilité. Un exemple est que seuls les utilisateurs listés dans le fichier de configuration /etc/sudoers sont autorisés à utiliser la commande sudo et que la commande est exécutée dans le shell de l’utilisateur, et non dans un shell root. Cela signifie que le shell root peut être entièrement désactivé, comme détaillé dans le Red Hat Enterprise Linux 7 Security Guide.

Chaque authentification réussie effectuée avec la commande sudo est journalisée dans le fichier /var/log/messages, et la commande ainsi que le nom de l’utilisateur à l’origine de son exécution sont journalisés dans le fichier /var/log/secure. Si vous avez besoin de plus de journalisation, utilisez le module pam_tty_audit pour activer l’audit du TTY des utilisateurs spécifiés en ajoutant la ligne suivante à votre fichier /etc/pam.d/system-auth :

session required pam_tty_audit.so disable=motif enable=motif

motif représente une liste d’utilisateurs séparés par une virgule (globs autorisés). Par exemple, la configuration suivante activera l’audit du TTY pour l’utilisateur root et le désactivera pour tous les autres utilisateurs :

session required pam_tty_audit.so disable=* enable=root

Un autre avantage de la commande sudo est qu’un administrateur peut autoriser des utilisateurs différents à accéder à des commandes différentes, suivant leurs besoins.

Les administrateurs voulant modifier le fichier de configuration de sudo, /etc/sudoers, devraient utiliser la commande visudo.

Pour donner à quelqu’un des privilèges d’administration complets, tapez visudo et ajoutez, dans la section de spécification des privilèges utilisateur, une ligne similaire à celle-ci :

juan ALL=(ALL) ALL

Dans cet exemple, l’utilisateur juan peut utiliser sudo à partir de n’importe quel hôte et exécuter n’importe quelle commande.

L’exemple ci-dessous illustre la granularité possible lors de la configuration de sudo :

%users localhost=/sbin/shutdown -h now

Dans cet exemple, n’importe quel membre du groupe users du système peut lancer la commande /sbin/shutdown -h now tant qu’elle est exécutée à partir de la console.

La page man pour sudoers contient une liste détaillée des options offertes par ce fichier.

Important

Plusieurs risques doivent être considérés lors de l’utilisation de la commande sudo. Vous pouvez les éviter en modifiant le fichier de configuration /etc/sudoers à l’aide de visudo, comme décrit plus haut. Dans son état original, le fichier /etc/sudoers donne un accès root illimité aux membres du groupe wheel.

  • Par défaut, sudo stocke le mot de passe du « sudoer » pendant cinq minutes. Le mot de passe n’est pas redemandé à l’utilisateur lors des exécutions suivantes de la commande pendant cette période. Cela pourrait être exploité par une personne malintentionnée si l’utilisateur laisse son poste de travail déverrouillé sans surveillance. Ce comportement peut être modifié en ajoutant la ligne suivante au fichier /etc/sudoers :

    Defaults    timestamp_timeout=valeur

    valeur est la durée d’expiration désirée, en minutes. En définissant la valeur à 0, sudo demandera un mot de passe à chaque exécution.

  • Si le compte d’une personne « sudoer » est compromis, une personne malintentionnée peut utiliser sudo pour ouvrir un nouveau shell avec les privilèges d’administration :

    sudo /bin/bash

    L’ouverture d’un nouveau shell en tant que root par ce biais donne théoriquement un accès d’administration à cette personne sans limite de temps, contournant la période d’expiration spécifiée dans le fichier /etc/sudoers et ne demandant plus jamais à l’utilisateur de saisir un mot de passe pour sudo tant que la session venant d’être ouverte le reste.

Ressources supplémentaires

Les programmes permettant aux utilisateurs d’obtenir des privilèges d’administration sont des risques de sécurité potentiels. Néanmoins, la sécurité sort du cadre de ce livre. Vous devriez donc vous référer aux ressources listées ci-dessous pour plus d’informations au sujet de la sécurité et des accès privilégiés.

Documentation installée
  • su(1) — La page de manuel pour la su fournit des informations à propos des options de cette commande.

  • sudo(8) — La page de manuel pour sudo inclut une description détaillée de la commande et liste les options permettant de personnaliser son comportement.

  • pam(8) — La page de manuel décrivant l’utilisation des Pluggable Authentication Modules (PAM) pour Linux.

Documentation en ligne
  • Le Red Hat Enterprise Linux 7 Security Guide décrit plus en profondeur les problèmes de sécurité potentiels en rapport avec les programmes setuid ainsi que des techniques permettant de limiter les risques associés.

Voir aussi