Dépannage des échecs d'authentification su sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

La commande "su" (substitute user) sous Linux est un outil puissant qui permet aux utilisateurs de basculer temporairement vers un autre compte utilisateur, souvent l'utilisateur root, pour effectuer des tâches administratives. Cependant, des échecs d'authentification peuvent survenir, entraînant des refus d'accès et des risques de sécurité potentiels. Ce tutoriel vous guidera tout au long du processus de dépannage des échecs d'authentification su sous Linux, en abordant les causes courantes, les paramètres de configuration et les meilleures pratiques pour une utilisation sécurisée de su.

Comprendre la commande Su et son utilisation de base

Dans cette étape, vous apprendrez comment la commande su sous Linux permet aux utilisateurs de changer leur identité actuelle pour celle d'un autre utilisateur. Cela est particulièrement utile pour effectuer des tâches administratives nécessitant des privilèges élevés.

Explorons l'utilisation de base de la commande su et comprenons son fonctionnement.

Utilisation de base de Su

Ouvrez un terminal dans votre environnement de machine virtuelle LabEx. Vous pouvez utiliser la commande su avec la syntaxe suivante :

su [options] [username]

Si vous exécutez su sans spécifier de nom d'utilisateur, il bascule par défaut vers l'utilisateur root :

su

Le mot de passe root vous sera demandé. Cependant, dans de nombreuses distributions Linux modernes, y compris Ubuntu, le compte root est désactivé par défaut pour des raisons de sécurité.

Créons un utilisateur de test pour nous entraîner :

sudo adduser testuser

Entrez les informations requises lorsque vous y êtes invité. Par souci de simplicité, vous pouvez utiliser "password" comme mot de passe pour cet utilisateur de test.

Maintenant, essayons de basculer vers cet utilisateur :

su testuser

Lorsque vous y êtes invité, entrez le mot de passe que vous avez créé pour testuser. Une fois authentifié, votre invite de commande changera, indiquant que vous opérez désormais en tant que testuser.

Pour vérifier que vous avez réussi à changer d'utilisateur, exécutez :

whoami

La sortie devrait afficher :

testuser

Pour revenir à votre utilisateur d'origine, tapez simplement :

exit

Utilisation de Su avec des options

La commande su prend en charge plusieurs options. La plus courante est l'option - (tiret), qui fournit un environnement de connexion complet :

su - testuser

Cela ne change pas seulement l'identité de l'utilisateur, mais également :

  • Change vers le répertoire personnel de l'utilisateur cible
  • Configure les variables d'environnement de l'utilisateur cible
  • Fournit un shell de connexion

Essayez cette commande et observez les différences :

pwd

La sortie devrait afficher le répertoire personnel de testuser :

/home/testuser

Quittez testuser en tapant :

exit

Cette compréhension de base de la commande su nous aidera à dépanner les échecs d'authentification dans les étapes suivantes.

Échecs d'authentification Su courants et leurs causes

Dans cette étape, vous allez créer et inspecter des échecs d'authentification su courants. Comprendre ces échecs est la première étape pour les résoudre.

Tester les échecs d'authentification

Créons intentionnellement quelques échecs d'authentification pour mieux les comprendre.

Tout d'abord, essayez de basculer vers testuser avec un mot de passe incorrect :

su testuser

Entrez un mot de passe incorrect. Vous verrez un message d'erreur similaire à :

su: Authentication failure

Ensuite, essayez de basculer vers un utilisateur inexistant :

su nonexistentuser

Vous verrez un message d'erreur comme :

su: user nonexistentuser does not exist

Causes courantes des échecs d'authentification

1. Mot de passe incorrect

La cause la plus fréquente d'échec d'authentification est simplement la saisie d'un mauvais mot de passe. Cela peut arriver à cause de :

  • Fautes de frappe
  • Verrouillage des majuscules activé
  • Oubli du mot de passe

2. Restrictions de compte

Certains comptes peuvent être configurés pour empêcher la connexion ou avoir des mots de passe expirés :

Modifions notre utilisateur de test pour démontrer cela :

sudo passwd -l testuser

Cela verrouille le mot de passe de testuser. Essayez maintenant :

su testuser

Vous verrez un échec d'authentification même si vous entrez le bon mot de passe.

Déverrouillez le compte avec :

sudo passwd -u testuser

3. Problèmes de configuration PAM

Le système PAM (Pluggable Authentication Modules) contrôle l'authentification sous Linux. Des problèmes avec la configuration PAM peuvent provoquer des échecs de su.

Examinons la configuration PAM pour la commande su :

cat /etc/pam.d/su

Ce fichier contient la configuration PAM spécifique à la commande su. Recherchez les lignes susceptibles de restreindre l'accès, telles que :

auth       required   pam_wheel.so

Cette ligne, si elle est décommentée, restreindrait l'accès su aux membres du groupe wheel.

4. Problèmes de permissions avec le binaire Su

Le fichier binaire de la commande su doit avoir les bonnes permissions pour fonctionner correctement :

ls -l $(which su)

La sortie devrait afficher quelque chose comme :

-rwsr-xr-x 1 root root 71816 Apr 18  2022 /usr/bin/su

Le s dans les permissions indique que le bit setuid est défini, permettant au programme de s'exécuter avec les privilèges de son propriétaire (root) plutôt que de l'utilisateur qui l'exécute.

5. Examen des journaux d'authentification

Lors du dépannage des échecs d'authentification dans cette machine virtuelle LabEx, vérifiez les enregistrements de connexion échoués avec lastb :

sudo lastb | head

Cette commande lit /var/log/btmp et affiche les tentatives d'authentification échouées récentes, y compris les tentatives su échouées lorsqu'elles sont enregistrées par le système.

Par exemple, une tentative su échouée peut afficher une entrée incluant l'utilisateur cible et la session de terminal.

Comprendre ces causes courantes d'échecs d'authentification su vous aidera à identifier et à résoudre les problèmes plus efficacement dans les étapes suivantes.

Configuration du contrôle d'accès pour la commande Su

Linux fournit plusieurs mécanismes pour contrôler qui peut utiliser la commande su. Dans cette étape, nous explorerons comment configurer ces contrôles d'accès pour renforcer la sécurité.

Comprendre la configuration PAM

Le système PAM (Pluggable Authentication Modules) est responsable de l'authentification sous Linux. La configuration de la commande su est stockée dans le fichier /etc/pam.d/su.

Examinons ce fichier en détail :

cat /etc/pam.d/su

Le fichier contient diverses directives qui contrôlent la manière dont l'authentification est effectuée. Une ligne importante à rechercher est :

auth       required   pam_wheel.so

Si cette ligne est décommentée (ne commençant pas par #), elle restreint l'accès su aux membres du groupe wheel.

Restreindre l'accès Su à des groupes spécifiques

Nous pouvons restreindre l'utilisation de su pour basculer vers root aux membres d'un groupe spécifique. C'est une pratique de sécurité courante.

Tout d'abord, créons un nouveau groupe appelé sugroup :

sudo groupadd sugroup

Ensuite, ajoutez notre utilisateur de test à ce groupe :

sudo usermod -aG sugroup testuser

Maintenant, nous devons modifier la configuration PAM pour restreindre l'accès su aux membres de ce groupe :

sudo cp /etc/pam.d/su /etc/pam.d/su.bak

Ouvrez maintenant le fichier de configuration PAM dans l'éditeur nano :

sudo nano /etc/pam.d/su

Recherchez une ligne similaire à :

## auth       required   pam_wheel.so

Décommentez cette ligne (supprimez le ## au début) et modifiez-la pour utiliser notre sugroup au lieu de wheel :

auth       required   pam_wheel.so group=sugroup

Appuyez sur Ctrl+O pour enregistrer le fichier, puis Ctrl+X pour quitter nano.

Tester la configuration

Testons notre configuration en essayant d'utiliser su en tant qu'utilisateur qui n'est pas dans le sugroup.

Tout d'abord, créez un autre utilisateur de test :

sudo adduser testuser2

Entrez les informations requises lorsque vous y êtes invité.

Maintenant, essayez de basculer vers l'utilisateur root en utilisant testuser2 :

su - testuser2

Entrez le mot de passe de testuser2 lorsque vous y êtes invité.

Maintenant, essayez de basculer vers l'utilisateur root :

su -

Vous devriez recevoir un message d'échec d'authentification, même si vous entrez le bon mot de passe root. C'est parce que testuser2 n'est pas membre du sugroup.

Revenez maintenant à votre utilisateur d'origine :

exit

Et essayez d'utiliser su avec testuser, qui est membre du sugroup :

su - testuser

Entrez le mot de passe de testuser lorsque vous y êtes invité.

Maintenant, essayez de basculer vers l'utilisateur root :

su -

Si vous entrez le bon mot de passe root, vous devriez pouvoir basculer vers l'utilisateur root avec succès.

Annuler les modifications

Aux fins de terminer le reste de ce laboratoire, annulons nos modifications apportées à la configuration PAM :

sudo cp /etc/pam.d/su.bak /etc/pam.d/su

Cette configuration vous permet de contrôler qui peut utiliser la commande su pour basculer vers l'utilisateur root, renforçant ainsi la sécurité de votre système.

Dépannage et résolution des échecs d'authentification Su

Dans cette étape, vous utiliserez un processus systématique pour dépanner et résoudre les échecs d'authentification su.

Diagnostiquer les échecs d'authentification

Lorsque vous rencontrez un échec d'authentification su, suivez ces étapes systématiques pour diagnostiquer le problème :

Étape 1 : Vérifier le message d'erreur

Le message d'erreur peut fournir des indices précieux sur la nature de l'échec. Les messages d'erreur courants incluent :

  • su: Authentication failure - Indique généralement un mot de passe incorrect.
  • su: user username does not exist - Le compte utilisateur spécifié n'existe pas.
  • su: permission denied - Des restrictions de contrôle d'accès empêchent l'opération.

Étape 2 : Vérifier le compte utilisateur

Assurez-vous que le compte utilisateur cible existe et n'est pas verrouillé :

grep testuser /etc/passwd

Cela devrait afficher l'entrée pour testuser dans le fichier de mots de passe, confirmant que le compte existe.

Vérifiez si le compte est verrouillé :

sudo passwd -S testuser

La sortie inclut le statut du compte. S'il indique "L" (locked), le compte est verrouillé.

Étape 3 : Vérifier les restrictions de contrôle d'accès

Comme nous l'avons appris à l'étape précédente, la configuration PAM peut restreindre l'accès su. Vérifiez ces restrictions :

grep -v "^#" /etc/pam.d/su | grep pam_wheel

Si cela renvoie une ligne contenant pam_wheel.so, l'accès à su pourrait être restreint aux membres d'un groupe spécifique.

Étape 4 : Examiner les journaux système

Les enregistrements de connexion échoués peuvent fournir des informations utiles sur les échecs d'authentification :

sudo lastb | head

Recherchez les entrées liées à vos tentatives su échouées, ce qui peut fournir un contexte supplémentaire.

Résoudre les échecs d'authentification Su courants

Maintenant, abordons les échecs d'authentification su courants et comment les résoudre :

1. Mot de passe incorrect

Si vous entrez le bon mot de passe mais que vous obtenez toujours des échecs d'authentification, le mot de passe doit peut-être être réinitialisé :

sudo passwd testuser

Entrez un nouveau mot de passe pour testuser lorsque vous y êtes invité.

2. Compte verrouillé

Si le compte est verrouillé, déverrouillez-le :

sudo passwd -u testuser

3. Restrictions de contrôle d'accès

Si des restrictions de contrôle d'accès empêchent l'accès su, vous pouvez soit :

a. Ajouter l'utilisateur au groupe requis :

sudo usermod -aG sugroup testuser2

Cela ajoute testuser2 au sugroup.

b. Désactiver temporairement la restriction en commentant la ligne pertinente dans la configuration PAM :

sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su

Cette commande commente la ligne contenant pam_wheel.so dans la configuration PAM de su.

4. Problèmes de permission de fichier

Si le binaire su a des permissions incorrectes, corrigez-les :

sudo chmod u+s $(which su)

Cela garantit que le bit setuid est défini sur le binaire su.

Tester les correctifs

Après avoir appliqué les correctifs, testez si l'authentification su fonctionne correctement :

su - testuser

Entrez le mot de passe de testuser lorsque vous y êtes invité. Si l'opération réussit, vous devriez maintenant être connecté en tant que testuser.

Essayez de basculer vers l'utilisateur root :

su -

Si vous avez le mot de passe root et que les restrictions de contrôle d'accès ont été correctement traitées, vous devriez pouvoir basculer vers l'utilisateur root avec succès.

Ces étapes de dépannage et ces correctifs traitent les échecs d'authentification su les plus courants. En diagnostiquant et en résolvant systématiquement ces problèmes, vous pouvez vous assurer que la commande su fonctionne correctement sur votre système.

Meilleures pratiques pour une utilisation sécurisée de Su

Dans cette étape, vous explorerez les meilleures pratiques pour utiliser la commande su en toute sécurité. Suivre ces pratiques aide à minimiser les risques de sécurité tout en permettant d'effectuer efficacement les tâches administratives.

Utilisez Sudo au lieu de Su lorsque cela est possible

La commande sudo est généralement considérée comme plus sécurisée que su car :

  • Elle permet un contrôle plus granulaire des permissions
  • Elle enregistre les commandes exécutées avec des privilèges élevés
  • Elle ne nécessite pas de partager le mot de passe root

Exemple d'utilisation de sudo au lieu de su :

## Au lieu de :
su -
## Puis entrer des commandes en tant que root

## Utilisez :
sudo command

Essayez cet exemple :

sudo ls /root

Cela exécute la commande ls avec les privilèges root sans basculer vers l'utilisateur root.

Configurez correctement l'accès Sudo

Assurez-vous que sudo est correctement configuré pour n'accorder que les privilèges nécessaires :

sudo visudo

Cela ouvre le fichier sudoers dans un éditeur sûr. Le fichier doit contenir des entrées similaires à :

## User privilege specification
root    ALL=(ALL:ALL) ALL

## Members of the sudo group may gain root privileges
%sudo   ALL=(ALL:ALL) ALL

Appuyez sur Ctrl+X pour quitter sans effectuer de modifications.

Limitez la connexion directe en tant que root

Découragez la connexion directe en tant que root, surtout via SSH. Au lieu de cela, les utilisateurs doivent se connecter avec leurs comptes habituels et utiliser su ou sudo si nécessaire.

Vérifiez si la connexion directe en tant que root via SSH est désactivée :

grep "PermitRootLogin" /etc/ssh/sshd_config

Si cela renvoie PermitRootLogin no, la connexion directe en tant que root est correctement désactivée.

Mettez en œuvre des politiques de mot de passe robustes

Assurez-vous que le mot de passe root et les mots de passe des utilisateurs ayant accès à su sont forts :

sudo apt-get install -y libpam-pwquality

Cela installe un module PAM pour la vérification de la qualité des mots de passe.

Configurez les politiques de mot de passe en modifiant la configuration PAM :

sudo nano /etc/pam.d/common-password

Recherchez une ligne contenant pam_pwquality.so et assurez-vous qu'elle comporte des paramètres appropriés comme :

password requisite pam_pwquality.so retry=3 minlen=12 difok=3

Appuyez sur Ctrl+X pour quitter sans effectuer de modifications, car nous ne faisons qu'examiner la configuration.

Auditez régulièrement l'utilisation de Su

Examinez les enregistrements de connexion échoués lorsque vous devez enquêter sur des tentatives d'authentification infructueuses :

sudo lastb | head

Cela montre les tentatives d'authentification échouées récentes enregistrées dans /var/log/btmp.

Envisagez de configurer des alertes automatisées pour plusieurs tentatives su échouées, ce qui pourrait indiquer une attaque.

Utilisez Su avec l'option Dash

Lorsque vous utilisez su pour basculer vers un autre utilisateur, surtout root, utilisez l'option dash (-) pour obtenir un environnement propre :

su - username

Cela fournit un shell de connexion avec les variables d'environnement de l'utilisateur cible, ce qui est plus sécurisé et évite les problèmes potentiels causés par l'héritage de l'environnement de l'utilisateur d'origine.

Session de pratique - Utilisation sécurisée de Su

Pratiquons ces meilleures pratiques.

Tout d'abord, au lieu d'utiliser su - pour devenir root puis exécuter une commande, utilisez sudo :

## Au lieu de :
## su -
## cat /etc/shadow

## Utilisez :
sudo cat /etc/shadow

Ensuite, basculez vers testuser avec un environnement propre :

su - testuser

Puis revenez à votre utilisateur d'origine :

exit

Enfin, vérifiez les enregistrements de connexion échoués :

sudo lastb | head

En suivant ces meilleures pratiques, vous pouvez utiliser la commande su en toute sécurité tout en minimisant les risques de sécurité potentiels pour votre système.

Résumé

Dans ce laboratoire, nous avons exploré la commande su sous Linux et appris à dépanner les échecs d'authentification courants. Nous avons couvert :

  1. La compréhension de l'utilisation de base de la commande su et son fonctionnement
  2. L'identification des causes courantes des échecs d'authentification su, notamment les mots de passe incorrects, les restrictions de compte et les problèmes de configuration PAM
  3. La configuration du contrôle d'accès pour la commande su afin d'améliorer la sécurité
  4. Le dépannage et la résolution des échecs d'authentification su par un diagnostic systématique
  5. La mise en œuvre des meilleures pratiques pour une utilisation sécurisée de su, notamment l'utilisation de sudo lorsque cela est possible, la configuration de politiques de mot de passe robustes et l'audit régulier de l'utilisation de su

En appliquant ces techniques et meilleures pratiques, vous pouvez vous assurer que la commande su fonctionne correctement tout en maintenant la sécurité de votre système Linux. N'oubliez pas qu'une gestion appropriée de l'authentification est un aspect crucial de l'administration système et de la sécurité.