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 su peuvent survenir, entraînant des refus d'accès et des risques potentiels pour la sécurité. Ce tutoriel vous guidera à travers le processus de dépannage des échecs d'authentification su sous Linux, en couvrant 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

La commande su sous Linux permet aux utilisateurs de changer leur identité d'utilisateur actuelle pour un autre utilisateur. Ceci est particulièrement utile pour effectuer des tâches administratives qui nécessitent des privilèges élevés.

Explorons l'utilisation de base de la commande su et comprenons comment elle fonctionne.

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 utilise par défaut l'utilisateur root :

su

Vous serez invité à entrer le mot de passe root. 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é. Pour simplifier, vous pouvez utiliser "password" comme mot de passe pour cet utilisateur de test.

Maintenant, essayons de passer à 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 changera, indiquant que vous opérez désormais en tant que testuser.

Pour vérifier que vous avez bien changé 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 change non seulement l'identité de l'utilisateur, mais aussi :

  • 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

Lorsque vous utilisez la commande su, vous pouvez rencontrer des échecs d'authentification pour diverses raisons. Comprendre ces échecs est la première étape pour les résoudre.

Tester les échecs d'authentification

Créons intentionnellement des échecs d'authentification pour mieux les comprendre :

  1. Essayez de passer à 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
  1. Essayez de passer à 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 courante d'échec d'authentification est simplement la saisie d'un mauvais mot de passe. Cela peut se produire en raison 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 le démontrer :

sudo passwd -l testuser

Cela verrouille le mot de passe pour testuser. Maintenant, essayez :

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. Les problèmes de configuration PAM peuvent provoquer des échecs 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 qui pourraient 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 permissions correctes 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. Examiner les journaux d'authentification

Lors du dépannage des échecs d'authentification, la vérification des journaux système peut fournir des informations précieuses :

sudo tail /var/log/auth.log

Cette commande affiche les événements d'authentification récents, y compris les tentatives su ayant échoué.

Par exemple, une tentative su ayant échoué pourrait afficher une entrée comme :

May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex

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 allons explorer comment configurer ces contrôles d'accès pour améliorer 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 commence 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 passer à root aux membres d'un groupe spécifique. Il s'agit d'une pratique de sécurité courante.

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

sudo groupadd sugroup

Ensuite, ajoutons 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

Maintenant, ouvrez 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 sur Ctrl+X pour quitter nano.

Tester la configuration

Testons notre configuration en essayant d'utiliser su en tant qu'utilisateur qui ne fait pas partie du 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 passer à l'utilisateur root en utilisant testuser2 :

su - testuser2

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

Maintenant, essayez de passer à l'utilisateur root :

su -

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

Maintenant, revenez à 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 passer à l'utilisateur root :

su -

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

Annuler les modifications

Pour les besoins du reste de ce laboratoire, annulons nos modifications de 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 passer à l'utilisateur root, améliorant ainsi la sécurité de votre système.

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

Maintenant que nous comprenons les causes courantes des échecs d'authentification su et comment configurer le contrôle d'accès, concentrons-nous sur le dépannage et la résolution de ces échecs.

Diagnostic des é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 - Les 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 l'état du compte. S'il indique "L" (verrouillé), 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 peut être restreint aux membres d'un groupe spécifique.

Étape 4 : Examiner les journaux système

Les journaux système peuvent fournir des informations détaillées sur les échecs d'authentification :

sudo tail -n 20 /var/log/auth.log

Recherchez les entrées liées aux échecs su, qui peuvent fournir un contexte supplémentaire.

Résolution des é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 devra 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 les 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 permissions de fichiers

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 corrections

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

su - testuser

Entrez le mot de passe de testuser lorsque vous y êtes invité. En cas de succès, vous devriez maintenant être connecté en tant que testuser.

Essayez de passer à 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 passer à l'utilisateur root avec succès.

Ces étapes de dépannage et ces corrections 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.

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

Dans cette dernière étape, nous allons explorer les bonnes pratiques pour utiliser la commande su en toute sécurité. Suivre ces pratiques permet de minimiser les risques de sécurité tout en permettant d'effectuer efficacement les tâches administratives.

Utiliser Sudo au lieu de Su lorsque cela est possible

La commande sudo est généralement considérée comme plus sûre 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 les commandes en tant que root

## Utiliser :
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.

Configurer 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.

Limiter la connexion directe en tant que root

Découragez la connexion directe en tant que root, en particulier via SSH. Au lieu de cela, les utilisateurs doivent se connecter avec leurs comptes réguliers 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.

Mettre en œuvre des politiques de mots 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 mots 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 possède des paramètres appropriés tels que :

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

Appuyez sur Ctrl+X pour quitter sans effectuer de modifications, car nous examinons simplement la configuration.

Auditer régulièrement l'utilisation de Su

Examinez les journaux pour surveiller l'utilisation de su :

sudo grep "su:" /var/log/auth.log | tail -n 10

Cela montre les tentatives récentes de su, réussies et échouées.

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

Utiliser Su avec l'option tiret

Lorsque vous utilisez su pour basculer vers un autre utilisateur, en particulier root, utilisez l'option tiret (-) 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ûr et évite les problèmes potentiels causés par l'héritage de l'environnement de l'utilisateur d'origine.

Session pratique - Utilisation sécurisée de Su

Pratiquons ces bonnes pratiques :

  1. Au lieu d'utiliser su - pour devenir root, puis d'exécuter une commande, utilisez sudo :
## Au lieu de :
## su -
## cat /etc/shadow

## Utiliser :
sudo cat /etc/shadow
  1. Basculer vers testuser avec un environnement propre :
su - testuser
  1. Revenir à votre utilisateur d'origine :
exit
  1. Vérifier le journal d'authentification pour l'utilisation de su :
sudo grep "su:" /var/log/auth.log | tail -n 5

En suivant ces bonnes pratiques, vous pouvez utiliser la commande su en toute sécurité tout en minimisant les risques potentiels pour la sécurité de 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. Comprendre l'utilisation de base de la commande su et son fonctionnement
  2. Identifier les 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. Configurer le contrôle d'accès pour la commande su afin d'améliorer la sécurité
  4. Dépanner et résoudre les échecs d'authentification su grâce à un diagnostic systématique
  5. Mettre en œuvre les meilleures pratiques pour une utilisation sécurisée de su, notamment l'utilisation de sudo lorsque cela est possible, la configuration de politiques de mots de passe robustes et l'audit régulier de l'utilisation de su

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