Einführung
Der Befehl "su" (substitute user) unter Linux ist ein leistungsstarkes Werkzeug, mit dem Benutzer vorübergehend zu einem anderen Benutzerkonto wechseln können, häufig zum Root-Benutzer, um administrative Aufgaben auszuführen. Es können jedoch su-Authentifizierungsfehler auftreten, die zu Zugriffsverweigerungen und potenziellen Sicherheitsrisiken führen. Dieses Tutorial führt Sie durch den Prozess der Fehlerbehebung bei su-Authentifizierungsfehlern unter Linux und behandelt häufige Ursachen, Konfigurationseinstellungen sowie bewährte Methoden für eine sichere su-Nutzung.
Den su-Befehl und die grundlegende Verwendung verstehen
In diesem Schritt lernen Sie, wie der su-Befehl unter Linux es Benutzern ermöglicht, ihre aktuelle Benutzeridentität zu einem anderen Benutzer zu wechseln. Dies ist besonders nützlich für die Durchführung administrativer Aufgaben, die erweiterte Berechtigungen erfordern.
Lassen Sie uns die grundlegende Verwendung des su-Befehls erkunden und verstehen, wie er funktioniert.
Grundlegende Verwendung von su
Öffnen Sie ein Terminal in Ihrer LabEx-VM-Umgebung. Sie können den su-Befehl mit der folgenden Syntax verwenden:
su [options] [username]
Wenn Sie su ohne Angabe eines Benutzernamens ausführen, wird standardmäßig der Root-Benutzer verwendet:
su
Sie werden nach dem Root-Passwort gefragt. In vielen modernen Linux-Distributionen, einschließlich Ubuntu, ist das Root-Konto jedoch aus Sicherheitsgründen standardmäßig deaktiviert.
Lassen Sie uns einen Testbenutzer erstellen, um damit zu üben:
sudo adduser testuser
Geben Sie die erforderlichen Informationen ein, wenn Sie dazu aufgefordert werden. Der Einfachheit halber können Sie "password" als Passwort für diesen Testbenutzer verwenden.
Versuchen wir nun, zu diesem Benutzer zu wechseln:
su testuser
Geben Sie bei Aufforderung das Passwort ein, das Sie für testuser erstellt haben. Nach erfolgreicher Authentifizierung ändert sich Ihre Eingabeaufforderung, was anzeigt, dass Sie nun als testuser agieren.
Um zu überprüfen, ob Sie erfolgreich den Benutzer gewechselt haben, führen Sie aus:
whoami
Die Ausgabe sollte Folgendes anzeigen:
testuser
Um zu Ihrem ursprünglichen Benutzer zurückzukehren, geben Sie einfach Folgendes ein:
exit
Verwendung von su mit Optionen
Der su-Befehl unterstützt mehrere Optionen. Die gebräuchlichste ist die Option - (Bindestrich), die eine vollständige Login-Umgebung bereitstellt:
su - testuser
Dies wechselt nicht nur die Benutzeridentität, sondern auch:
- Wechselt in das Home-Verzeichnis des Zielbenutzers
- Richtet die Umgebungsvariablen des Zielbenutzers ein
- Stellt eine Login-Shell bereit
Probieren Sie diesen Befehl aus und beobachten Sie die Unterschiede:
pwd
Die Ausgabe sollte das Home-Verzeichnis von testuser anzeigen:
/home/testuser
Beenden Sie die Sitzung von testuser durch Eingabe von:
exit
Dieses grundlegende Verständnis des su-Befehls wird uns helfen, Authentifizierungsfehler in den nächsten Schritten zu beheben.
Häufige su-Authentifizierungsfehler und ihre Ursachen
In diesem Schritt werden Sie häufige su-Authentifizierungsfehler erzeugen und untersuchen. Das Verständnis dieser Fehler ist der erste Schritt zu deren Lösung.
Testen von Authentifizierungsfehlern
Lassen Sie uns absichtlich einige Authentifizierungsfehler erzeugen, um sie besser zu verstehen.
Versuchen Sie zunächst, mit einem falschen Passwort zu testuser zu wechseln:
su testuser
Geben Sie ein falsches Passwort ein. Sie werden eine Fehlermeldung sehen, die etwa so aussieht:
su: Authentication failure
Versuchen Sie als Nächstes, zu einem nicht existierenden Benutzer zu wechseln:
su nonexistentuser
Sie werden eine Fehlermeldung sehen wie:
su: user nonexistentuser does not exist
Häufige Ursachen für Authentifizierungsfehler
1. Falsches Passwort
Die häufigste Ursache für einen Authentifizierungsfehler ist einfach die Eingabe des falschen Passworts. Dies kann passieren durch:
- Tippfehler
- Aktivierte Feststelltaste (Caps Lock)
- Vergessen des Passworts
2. Kontobeschränkungen
Einige Konten sind möglicherweise so konfiguriert, dass sie die Anmeldung verhindern, oder sie haben abgelaufene Passwörter:
Lassen Sie uns unseren Testbenutzer ändern, um dies zu demonstrieren:
sudo passwd -l testuser
Dies sperrt das Passwort für testuser. Versuchen Sie nun:
su testuser
Sie werden einen Authentifizierungsfehler sehen, selbst wenn Sie das korrekte Passwort eingeben.
Entsperren Sie das Konto mit:
sudo passwd -u testuser
3. Probleme mit der PAM-Konfiguration
Das System der Pluggable Authentication Modules (PAM) steuert die Authentifizierung unter Linux. Probleme mit der PAM-Konfiguration können zu su-Fehlern führen.
Lassen Sie uns die PAM-Konfiguration für den su-Befehl untersuchen:
cat /etc/pam.d/su
Diese Datei enthält die PAM-Konfiguration, die spezifisch für den su-Befehl ist. Suchen Sie nach Zeilen, die den Zugriff einschränken könnten, wie zum Beispiel:
auth required pam_wheel.so
Diese Zeile würde, falls sie nicht auskommentiert ist, den su-Zugriff auf Mitglieder der Gruppe wheel beschränken.
4. Berechtigungsprobleme mit der su-Binärdatei
Die Binärdatei des su-Befehls muss über die korrekten Berechtigungen verfügen, um ordnungsgemäß zu funktionieren:
ls -l $(which su)
Die Ausgabe sollte etwa so aussehen:
-rwsr-xr-x 1 root root 71816 Apr 18 2022 /usr/bin/su
Das s in den Berechtigungen zeigt an, dass das setuid-Bit gesetzt ist, was es dem Programm ermöglicht, mit den Berechtigungen seines Eigentümers (root) anstatt des Benutzers, der es ausführt, zu laufen.
5. Überprüfung der Authentifizierungsprotokolle
Wenn Sie Authentifizierungsfehler in dieser LabEx-VM beheben, überprüfen Sie fehlgeschlagene Anmeldeversuche mit lastb:
sudo lastb | head
Dieser Befehl liest /var/log/btmp und zeigt kürzlich fehlgeschlagene Authentifizierungsversuche an, einschließlich fehlgeschlagener su-Versuche, wenn diese vom System aufgezeichnet wurden.
Zum Beispiel könnte ein fehlgeschlagener su-Versuch einen Eintrag zeigen, der den Zielbenutzer und die Terminalsitzung enthält.
Das Verständnis dieser häufigen Ursachen für su-Authentifizierungsfehler wird Ihnen helfen, Probleme in den nächsten Schritten effektiver zu identifizieren und zu lösen.
Konfiguration der Zugriffskontrolle für den su-Befehl
Linux bietet verschiedene Mechanismen, um zu steuern, wer den su-Befehl verwenden darf. In diesem Schritt werden wir untersuchen, wie diese Zugriffskontrollen konfiguriert werden können, um die Sicherheit zu erhöhen.
Verständnis der PAM-Konfiguration
Das System der Pluggable Authentication Modules (PAM) ist für die Authentifizierung unter Linux verantwortlich. Die Konfiguration für den su-Befehl ist in der Datei /etc/pam.d/su gespeichert.
Lassen Sie uns diese Datei im Detail untersuchen:
cat /etc/pam.d/su
Die Datei enthält verschiedene Anweisungen, die steuern, wie die Authentifizierung durchgeführt wird. Eine wichtige Zeile, auf die man achten sollte, ist:
auth required pam_wheel.so
Wenn diese Zeile nicht auskommentiert ist (nicht mit ## beginnt), beschränkt sie den su-Zugriff auf Mitglieder der Gruppe wheel.
Einschränkung des su-Zugriffs auf bestimmte Gruppen
Wir können die Verwendung von su zum Wechseln zum Root-Benutzer auf Mitglieder einer bestimmten Gruppe beschränken. Dies ist eine gängige Sicherheitspraxis.
Lassen Sie uns zunächst eine neue Gruppe namens sugroup erstellen:
sudo groupadd sugroup
Fügen Sie als Nächstes unseren Testbenutzer dieser Gruppe hinzu:
sudo usermod -aG sugroup testuser
Nun müssen wir die PAM-Konfiguration ändern, um den su-Zugriff auf Mitglieder dieser Gruppe zu beschränken:
sudo cp /etc/pam.d/su /etc/pam.d/su.bak
Öffnen Sie nun die PAM-Konfigurationsdatei im nano-Editor:
sudo nano /etc/pam.d/su
Suchen Sie nach einer Zeile, die etwa so aussieht:
## auth required pam_wheel.so
Entkommentieren Sie diese Zeile (entfernen Sie das ## am Anfang) und ändern Sie sie so, dass sie unsere sugroup anstelle von wheel verwendet:
auth required pam_wheel.so group=sugroup
Drücken Sie Ctrl+O, um die Datei zu speichern, und dann Ctrl+X, um nano zu beenden.
Testen der Konfiguration
Lassen Sie uns unsere Konfiguration testen, indem wir versuchen, su als ein Benutzer zu verwenden, der nicht in der sugroup ist.
Erstellen Sie zunächst einen weiteren Testbenutzer:
sudo adduser testuser2
Geben Sie die erforderlichen Informationen ein, wenn Sie dazu aufgefordert werden.
Versuchen Sie nun, als testuser2 zum Root-Benutzer zu wechseln:
su - testuser2
Geben Sie bei Aufforderung das Passwort für testuser2 ein.
Versuchen Sie nun, zum Root-Benutzer zu wechseln:
su -
Sie sollten eine Fehlermeldung zur Authentifizierung erhalten, selbst wenn Sie das korrekte Root-Passwort eingeben. Dies liegt daran, dass testuser2 kein Mitglied der sugroup ist.
Wechseln Sie nun zurück zu Ihrem ursprünglichen Benutzer:
exit
Und versuchen Sie, su mit testuser zu verwenden, der Mitglied der sugroup ist:
su - testuser
Geben Sie bei Aufforderung das Passwort für testuser ein.
Versuchen Sie nun, zum Root-Benutzer zu wechseln:
su -
Wenn Sie das korrekte Root-Passwort eingeben, sollten Sie erfolgreich zum Root-Benutzer wechseln können.
Rückgängigmachen der Änderungen
Um den Rest dieses Labs abzuschließen, lassen Sie uns unsere Änderungen an der PAM-Konfiguration rückgängig machen:
sudo cp /etc/pam.d/su.bak /etc/pam.d/su
Diese Konfiguration ermöglicht es Ihnen zu steuern, wer den su-Befehl verwenden darf, um zum Root-Benutzer zu wechseln, was die Sicherheit Ihres Systems erhöht.
Fehlerbehebung und Lösung von su-Authentifizierungsfehlern
In diesem Schritt verwenden Sie einen systematischen Prozess, um su-Authentifizierungsfehler zu beheben.
Diagnose von Authentifizierungsfehlern
Wenn Sie auf einen su-Authentifizierungsfehler stoßen, befolgen Sie diese systematischen Schritte, um das Problem zu diagnostizieren:
Schritt 1: Überprüfen Sie die Fehlermeldung
Die Fehlermeldung kann wertvolle Hinweise auf die Art des Fehlers geben. Häufige Fehlermeldungen sind:
su: Authentication failure- Weist normalerweise auf ein falsches Passwort hin.su: user username does not exist- Das angegebene Benutzerkonto existiert nicht.su: permission denied- Zugriffskontrollbeschränkungen verhindern den Vorgang.
Schritt 2: Überprüfen Sie das Benutzerkonto
Stellen Sie sicher, dass das Zielbenutzerkonto existiert und nicht gesperrt ist:
grep testuser /etc/passwd
Dies sollte den Eintrag für testuser in der Passwortdatei anzeigen und bestätigen, dass das Konto existiert.
Überprüfen Sie, ob das Konto gesperrt ist:
sudo passwd -S testuser
Die Ausgabe enthält den Status des Kontos. Wenn dort "L" (locked) steht, ist das Konto gesperrt.
Schritt 3: Überprüfen Sie auf Zugriffskontrollbeschränkungen
Wie wir im vorherigen Schritt gelernt haben, kann die PAM-Konfiguration den su-Zugriff einschränken. Überprüfen Sie auf solche Einschränkungen:
grep -v "^#" /etc/pam.d/su | grep pam_wheel
Wenn dies eine Zeile zurückgibt, die pam_wheel.so enthält, ist der Zugriff auf su möglicherweise auf Mitglieder einer bestimmten Gruppe beschränkt.
Schritt 4: Überprüfen Sie die Systemprotokolle
Die Aufzeichnungen fehlgeschlagener Anmeldungen können nützliche Informationen über Authentifizierungsfehler liefern:
sudo lastb | head
Suchen Sie nach Einträgen, die sich auf Ihre fehlgeschlagenen su-Versuche beziehen, da diese zusätzlichen Kontext liefern können.
Lösung häufiger su-Authentifizierungsfehler
Lassen Sie uns nun häufige su-Authentifizierungsfehler angehen und wie man sie löst:
1. Falsches Passwort
Wenn Sie das korrekte Passwort eingeben, aber immer noch Authentifizierungsfehler erhalten, muss das Passwort möglicherweise zurückgesetzt werden:
sudo passwd testuser
Geben Sie bei Aufforderung ein neues Passwort für testuser ein.
2. Konto gesperrt
Wenn das Konto gesperrt ist, entsperren Sie es:
sudo passwd -u testuser
3. Zugriffskontrollbeschränkungen
Wenn Zugriffskontrollbeschränkungen den su-Zugriff verhindern, können Sie entweder:
a. Den Benutzer zur erforderlichen Gruppe hinzufügen:
sudo usermod -aG sugroup testuser2
Dies fügt testuser2 zur sugroup hinzu.
b. Die Einschränkung vorübergehend deaktivieren, indem Sie die entsprechende Zeile in der PAM-Konfiguration auskommentieren:
sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su
Dieser Befehl kommentiert die Zeile mit pam_wheel.so in der su-PAM-Konfiguration aus.
4. Probleme mit Dateiberechtigungen
Wenn die su-Binärdatei falsche Berechtigungen hat, korrigieren Sie diese:
sudo chmod u+s $(which su)
Dies stellt sicher, dass das setuid-Bit auf der su-Binärdatei gesetzt ist.
Testen der Korrekturen
Testen Sie nach dem Anwenden der Korrekturen, ob die su-Authentifizierung korrekt funktioniert:
su - testuser
Geben Sie bei Aufforderung das Passwort für testuser ein. Wenn erfolgreich, sollten Sie nun als testuser angemeldet sein.
Versuchen Sie, zum Root-Benutzer zu wechseln:
su -
Wenn Sie das Root-Passwort haben und die Zugriffskontrollbeschränkungen ordnungsgemäß behandelt wurden, sollten Sie erfolgreich zum Root-Benutzer wechseln können.
Diese Schritte zur Fehlerbehebung und Korrekturen beheben die häufigsten su-Authentifizierungsfehler. Durch die systematische Diagnose und Lösung dieser Probleme können Sie sicherstellen, dass der su-Befehl auf Ihrem System korrekt funktioniert.
Bewährte Methoden für eine sichere su-Nutzung
In diesem Schritt untersuchen Sie bewährte Methoden für die sichere Verwendung des su-Befehls. Das Befolgen dieser Praktiken hilft, Sicherheitsrisiken zu minimieren und gleichzeitig administrative Aufgaben effektiv durchführen zu können.
Verwenden Sie nach Möglichkeit sudo anstelle von su
Der sudo-Befehl gilt im Allgemeinen als sicherer als su, weil:
- Er eine feinere Kontrolle über Berechtigungen ermöglicht
- Er Befehle protokolliert, die mit erweiterten Berechtigungen ausgeführt wurden
- Er das Teilen des Root-Passworts nicht erfordert
Beispiel für die Verwendung von sudo anstelle von su:
## Anstatt:
su -
## Dann Befehle als root eingeben
## Verwenden Sie:
sudo command
Probieren Sie dieses Beispiel aus:
sudo ls /root
Dies führt den ls-Befehl mit Root-Berechtigungen aus, ohne zum Root-Benutzer zu wechseln.
Konfigurieren Sie den sudo-Zugriff ordnungsgemäß
Stellen Sie sicher, dass sudo korrekt konfiguriert ist, um nur notwendige Berechtigungen zu gewähren:
sudo visudo
Dies öffnet die sudoers-Datei in einem sicheren Editor. Die Datei sollte Einträge enthalten, die etwa so aussehen:
## User privilege specification
root ALL=(ALL:ALL) ALL
## Members of the sudo group may gain root privileges
%sudo ALL=(ALL:ALL) ALL
Drücken Sie Ctrl+X, um ohne Änderungen zu beenden.
Begrenzen Sie die direkte Root-Anmeldung
Unterbinden Sie die direkte Anmeldung als Root, insbesondere über SSH. Stattdessen sollten sich Benutzer mit ihren regulären Konten anmelden und bei Bedarf su oder sudo verwenden.
Überprüfen Sie, ob die direkte Root-Anmeldung über SSH deaktiviert ist:
grep "PermitRootLogin" /etc/ssh/sshd_config
Wenn dies PermitRootLogin no zurückgibt, ist die direkte Root-Anmeldung ordnungsgemäß deaktiviert.
Implementieren Sie robuste Passwortrichtlinien
Stellen Sie sicher, dass das Root-Passwort und die Passwörter von Benutzern mit su-Zugriff stark sind:
sudo apt-get install -y libpam-pwquality
Dies installiert ein PAM-Modul zur Überprüfung der Passwortqualität.
Konfigurieren Sie Passwortrichtlinien durch Bearbeiten der PAM-Konfiguration:
sudo nano /etc/pam.d/common-password
Suchen Sie nach einer Zeile, die pam_pwquality.so enthält, und stellen Sie sicher, dass sie geeignete Parameter hat, wie zum Beispiel:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3
Drücken Sie Ctrl+X, um ohne Änderungen zu beenden, da wir die Konfiguration nur untersuchen.
Überprüfen Sie regelmäßig die su-Nutzung
Überprüfen Sie die Aufzeichnungen fehlgeschlagener Anmeldungen, wenn Sie erfolglose Authentifizierungsversuche untersuchen müssen:
sudo lastb | head
Dies zeigt kürzlich fehlgeschlagene Authentifizierungsversuche, die in /var/log/btmp aufgezeichnet wurden.
Erwägen Sie die Einrichtung automatisierter Warnmeldungen für mehrere fehlgeschlagene su-Versuche, was auf einen Angriff hindeuten könnte.
Verwenden Sie su mit der Dash-Option
Wenn Sie su verwenden, um zu einem anderen Benutzer zu wechseln, insbesondere zu root, verwenden Sie die Dash-Option (-), um eine saubere Umgebung zu erhalten:
su - username
Dies stellt eine Login-Shell mit den Umgebungsvariablen des Zielbenutzers bereit, was sicherer ist und potenzielle Probleme verhindert, die durch das Erben der Umgebung des ursprünglichen Benutzers verursacht werden könnten.
Übungssitzung - Sichere su-Nutzung
Lassen Sie uns diese bewährten Methoden üben.
Verwenden Sie zunächst anstelle von su -, um root zu werden und dann einen Befehl auszuführen, sudo:
## Anstatt:
## su -
## cat /etc/shadow
## Verwenden Sie:
sudo cat /etc/shadow
Wechseln Sie als Nächstes zu testuser mit einer sauberen Umgebung:
su - testuser
Beenden Sie dann die Sitzung zurück zu Ihrem ursprünglichen Benutzer:
exit
Überprüfen Sie abschließend die Aufzeichnungen fehlgeschlagener Anmeldungen:
sudo lastb | head
Durch das Befolgen dieser bewährten Methoden können Sie den su-Befehl sicher verwenden und gleichzeitig potenzielle Sicherheitsrisiken für Ihr System minimieren.
Zusammenfassung
In diesem Lab haben wir den su-Befehl unter Linux untersucht und gelernt, wie man häufige Authentifizierungsfehler behebt. Wir haben Folgendes behandelt:
- Verständnis der grundlegenden Verwendung des
su-Befehls und seiner Funktionsweise - Identifizierung häufiger Ursachen für su-Authentifizierungsfehler, einschließlich falscher Passwörter, Kontobeschränkungen und Probleme mit der PAM-Konfiguration
- Konfiguration der Zugriffskontrolle für den
su-Befehl zur Erhöhung der Sicherheit - Fehlerbehebung und Lösung von su-Authentifizierungsfehlern durch systematische Diagnose
- Implementierung bewährter Methoden für eine sichere su-Nutzung, einschließlich der Verwendung von sudo, wenn möglich, der Konfiguration robuster Passwortrichtlinien und der regelmäßigen Überprüfung der su-Nutzung
Durch die Anwendung dieser Techniken und bewährten Methoden können Sie sicherstellen, dass der su-Befehl korrekt funktioniert, während die Sicherheit Ihres Linux-Systems gewahrt bleibt. Denken Sie daran, dass ein ordnungsgemäßes Authentifizierungsmanagement ein entscheidender Aspekt der Systemadministration und Sicherheit ist.



