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 :
- La compréhension de l'utilisation de base de la commande
suet son fonctionnement - 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
- La configuration du contrôle d'accès pour la commande
suafin d'améliorer la sécurité - Le dépannage et la résolution des échecs d'authentification su par un diagnostic systématique
- 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é.



