GNU/Linux >> Tutoriels Linux >  >> Linux

8 Meilleures pratiques avec sudo sous Linux - À faire et à ne pas faire de sudo

Tous les utilisateurs Linux de nos jours seraient familiers avec sudo commande (pour "superuser do"). Nous devons populariser sudo en imposant plutôt qu'en encourageant les utilisateurs à utiliser su pour obtenir des privilèges root pour effectuer des tâches administratives. Mais il y a beaucoup plus que vous devez savoir sur sudo. Avec l'aide de sudo, vous pouvez facilement exécuter des commandes comme n'importe quel autre utilisateur, pas seulement l'utilisateur root ! Si sudo n'est pas géré correctement, c'est presque pire que de simplement partager les informations d'identification root, car cela donne un faux sentiment de sécurité. Examinons quelques-unes des meilleures pratiques pour contrôler l'accès au système avec sudo tout en permettant aux utilisateurs d'être productifs. Sachez comment utiliser sudo et suivez ces bonnes pratiques, puis vous pourrez vous détendre et profiter de chaque bouchée de votre sandwich.

Remarque :Vous devez utiliser le visudo Commande pour modifier le fichier /etc/sudoers. Attention lors de l'édition !

1. Ne pas autoriser l'accès illimité aux utilisateurs avec sudo

Ne configurez pas sudo pour permettre aux utilisateurs de basculer vers root ou tout autre compte. Au lieu de cela, essayez de configurer sudo pour permettre aux utilisateurs d'exécuter des commandes spécifiques en tant qu'utilisateurs pour lesquels ils doivent fonctionner.

Par exemple :Il y a un besoin pour un utilisateur d'installer un logiciel. Permettez-leur d'exécuter uniquement RPM ou APT ou YUM en tant que root sans même passer à l'utilisateur root comme indiqué ci-dessous :

peter ALL =(ALL) PASSWD : /usr/bin/apt-get, /usr/bin/yum, /bin/rpm

Cela permettrait à peter pour exécuter sudo apt-get, sudo yum et sudo rpm sans mot de passe mais n'autoriserait aucune autre commande !

2. Ne pas accorder TOUS les privilèges root à un utilisateur sudo

N'utilisez pas ALL lorsque vous accordez des autorisations d'accès à un utilisateur sudo. C'est l'une des erreurs les plus courantes que feraient les administrateurs. Cela permet aux utilisateurs d'utiliser la commande su pour s'accorder des privilèges root permanents, contournant ainsi les fonctionnalités de journalisation des commandes de sudo.

peter    ALL=(ALL:ALL) ALL

Un meilleur moyen consiste à accorder l'accès à des fichiers de programme spécifiques, par exemple :l'utilisateur peter aurait accès à tous les fichiers de programme dans les répertoires /sbin/ et /usr/sbin, plus la commande /opt/oracle/check.pl.

Remarque :La barre oblique finale (/) est requise pour spécifier un emplacement de répertoire

peter ALL=(ALL) PASSWD: /sbin/, /usr/sbin, /opt/oracle/check.pl

3. Ne pas accorder un accès illimité sans mot de passe aux privilèges root

Par exemple, imaginez qu'un intrus accède à un compte d'utilisateur, qui dispose d'un accès sudo sans mot de passe aux privilèges root. Il pourrait faire ce à quoi vous ne pourriez même pas penser ! Accordez plutôt l'accès à un utilisateur aux privilèges root avec des mots de passe (son propre mot de passe).

peter    ALL=(ALL) PASSWD:ALL

Cela permettrait à l'utilisateur peter pour saisir le mot de passe chaque fois qu'il utilise sudo pour obtenir les privilèges root.

4. Utilisez la directive include pour des configurations sudo spécifiques

Dans les environnements de grande entreprise, il est toujours préférable de conserver des configurations sudo spécifiques basées sur les applications en plus des configurations locales. Par exemple :si vous souhaitez inclure le même ensemble de directives pour la gestion d'Apache et de MySQL, vous pouvez le diviser en un sudo.mysql séparé. file et utilisez une directive include pour l'appeler à partir du fichier sudoers principal.

#include /etc/sudo.mysql

5. Accordez l'accès Sudo aux groupes plutôt qu'aux utilisateurs individuels

Par exemple :avoir un groupe d'administrateurs doté de privilèges administratifs qui gère l'installation et la mise à jour des packages. De cette façon, il n'est pas nécessaire de modifier le fichier sudoers chaque fois que vous ajoutez/supprimez un nouvel utilisateur. Assurez-vous simplement que les utilisateurs sont gérés de manière appropriée et qu'ils sont ajoutés/supprimés du groupe d'administrateurs.

%admin ALL=(ALL) ALL

Cela permettra aux personnes du groupe admin pour exécuter toutes les commandes.

6. Définir le délai d'attente approprié pour sudo

Sudo utilise la fonction d'horodatage pour savoir quand la dernière commande sudo a été exécutée par l'utilisateur. Pendant cette période, l'utilisateur peut réexécuter la commande sans même être invité à saisir le mot de passe (le mot de passe de l'utilisateur). Par défaut, sudo se souvient de votre mot de passe pendant 15 minutes. Une fois qu'il a expiré, l'utilisateur est à nouveau invité à entrer le mot de passe pour réexécuter la commande. Si vous souhaitez modifier la valeur par défaut, mettez simplement une entrée dans sudoers. Par exemple, pour définir la valeur du délai d'attente pour tous les utilisateurs sur toutes les commandes qu'il exécute à 5 minutes, vous pouvez utiliser :

Defaults timestamp_timeout=x

où x est l'expiration du délai d'attente en minutes. Si vous spécifiez 0 (zéro), le mot de passe vous sera toujours demandé. Si vous spécifiez une valeur négative, le délai d'attente n'expirera jamais. Par exemple. Horodatage_timeout=5 par défaut

Si vous devez définir pour un utilisateur particulier (peter), placez simplement l'entrée ci-dessous dans le fichier sudoers :

Defaults:peter timestamp_timeout=5

Cette fonctionnalité ne fonctionnera pas si vous avez NOPASSWD dans l'entrée de l'utilisateur dans sudoers.

7. Verrouillez le chemin des fichiers binaires à l'aide de la directive secure_path dans sudo

Une bonne pratique consiste à verrouiller les utilisateurs dans des zones spécifiques, garantissant ainsi que les utilisateurs ne peuvent pas exécuter de commandes en dehors du secure_path. Utilisez la directive suivante dans sudoers, en spécifiant le secure_path :

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

8. Enregistrez chaque activité sudo dans un fichier séparé

Par défaut, les commandes sudo se connectent à un fichier journal avec d'autres messages système. Ceci n'est pas acceptable pour les serveurs car il y aurait un certain nombre d'utilisateurs. Configurez sudo afin qu'il ait son propre fichier journal pour une visibilité facile sur l'utilisation de sudo et les activités des sudoers. Bien sûr, cela aide également à garder un œil sur les événements sudo ayant échoué.

Defaults logfile=/var/log/sudo.log

Si vous en avez d'autres, veuillez les ajouter dans les commentaires ci-dessous.

Lire aussi : Sécuriser votre serveur Web – 50 meilleures pratiques à suivre


Linux
  1. Principes de base de l'administrateur système Linux :gestion des comptes d'utilisateurs avec les UID et les GID

  2. Installation et configuration de Grafana sous Linux

  3. Comment travailler avec des utilisateurs et des groupes sous Linux

  4. Comment créer un utilisateur Sudo sur Rocky Linux et CentOS

  5. Différence entre l'utilisateur Sudo et l'utilisateur root ?

Comment créer et configurer un utilisateur Sudo sur Arch Linux

Comprendre la différence entre les commandes sudo et su sous Linux

Premiers pas avec GIT sous Linux

Ajouter, supprimer et accorder des privilèges Sudo aux utilisateurs dans Alpine Linux

Comment exécuter un alias avec Sudo sous Linux

Exemples de commandes sudo sous Linux