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 :
- 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
- 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 :
- 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
- Basculer vers testuser avec un environnement propre :
su - testuser
- Revenir à votre utilisateur d'origine :
exit
- 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 :
- Comprendre l'utilisation de base de la commande
suet son fonctionnement - 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
- Configurer le contrôle d'accès pour la commande
suafin d'améliorer la sécurité - Dépanner et résoudre les échecs d'authentification su grâce à un diagnostic systématique
- 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.



