Fehlerbehebung bei su-Authentifizierungsfehlern unter Linux

LinuxBeginner
Jetzt üben

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

Der Befehl zielt auf root, aber Ubuntu sperrt normalerweise die Passwortauthentifizierung für root. Ein Authentifizierungsfehler ist hier zu erwarten. Aktivieren Sie keine Root-Passwortanmeldung und verändern Sie das Plattformkonto nicht; alle nachfolgenden erfolgreichen Anmeldetests verwenden temporäre Lab-Benutzer.

Lassen Sie uns einen Testbenutzer erstellen, um damit zu üben:

sudo adduser testuser

Geben Sie die angeforderten Informationen ein. Verwenden Sie ausschließlich für dieses temporäre Testkonto DemoUser123! als Übungspasswort. Ändern Sie niemals das Passwort oder die sudo-Gruppenzugehörigkeit von labex.

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 usermod -L testuser

Die Option -L sperrt die Passwortauthentifizierung für das temporäre Konto testuser. Versuchen Sie nun:

su testuser

Sie werden einen Authentifizierungsfehler sehen, selbst wenn Sie das korrekte Passwort eingeben.

Die Option -U entfernt diese Passwortsperre. Entsperren Sie ausschließlich dieses Testkonto mit:

sudo usermod -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

In diesem Schritt testen Sie eine PAM-Gruppenregel für ein temporäres Zielkonto. Sie aktivieren weder die Root-Passwortanmeldung noch schränken Sie den Plattformzugriff ein.

Die temporären Konten vorbereiten

Beginnen Sie in Ihrer ursprünglichen labex-Shell. Bestätigen Sie die aktuelle Identität, bevor Sie sudo verwenden:

whoami

Das Ergebnis muss labex sein. Erstellen Sie einen zweiten aufrufenden Benutzer und ein separates Zielkonto. Setzen Sie anschließend Passwörter ausschließlich für diese temporären Konten:

sudo adduser --disabled-password --gecos '' testuser2
sudo adduser --disabled-password --gecos '' su-lab-target
printf '%s\n' 'testuser2:DemoOther123!' 'su-lab-target:DemoTarget123!' | sudo chpasswd
sudo groupadd sugroup
sudo usermod -aG sugroup testuser

Nur testuser gehört zur Gruppe sugroup. Neue Login-Shells übernehmen diese Mitgliedschaft. Für beide Tests ist das Zielpasswort DemoTarget123!.

Eine zielspezifische PAM-Regel anwenden

PAM steuert die Authentifizierung für su über /etc/pam.d/su. Das Setup hat den ursprünglichen Dateiinhalt unter /opt/labex/su-demo gespeichert. Der folgende verwaltete Präfix wendet eine Gruppenprüfung ausschließlich an, wenn das Ziel su-lab-target ist. Die erste Regel überspringt die nächste Regel für jedes andere Ziel, einschließlich labex. use_uid prüft die reale Identität des aufrufenden Benutzers, und group=sugroup benennt die zugelassene Gruppe.

sudo python3 - <<'PY'
from pathlib import Path
original = Path('/opt/labex/su-demo/pam-su.original').read_text()
prefix = """## Lab-only rule for su-lab-target

auth [success=1 default=ignore] pam_succeed_if.so quiet user != su-lab-target

auth required pam_wheel.so use_uid group=sugroup

"""
Path('/etc/pam.d/su').write_text(prefix + original)
PY

Die ursprünglichen PAM-Regeln bleiben hinter diesem Präfix erhalten. Die Gruppenmitgliedschaft ersetzt nicht die Passwortauthentifizierung. Fügen Sie labex nicht zur Demonstrationsgruppe hinzu und bearbeiten Sie keine SSH-, sudo- oder Plattformkontokonfiguration.

Einen aufrufenden Benutzer außerhalb der Gruppe testen

Wechseln Sie von labex zu testuser2 und verwenden Sie DemoOther123!:

su - testuser2

Versuchen Sie von dieser Shell aus, mit dem korrekten Zielpasswort DemoTarget123! zum eingeschränkten Zielkonto zu wechseln:

su - su-lab-target

Dies muss mit einem Authentifizierungsfehler scheitern, weil testuser2 nicht zu sugroup gehört. Ein fehlgeschlagenes su öffnet keine neue Shell. Beenden Sie die Shell einmal, um zu labex zurückzukehren:

exit
whoami

Bestätigen Sie vor dem Fortfahren, dass whoami labex ausgibt.

Einen aufrufenden Benutzer innerhalb der Gruppe testen

Wechseln Sie zu testuser mit dessen Passwort DemoUser123! aus Schritt 1:

su - testuser
id
su - su-lab-target

Geben Sie DemoTarget123! für das Zielkonto ein. Dieser Wechsel sollte erfolgreich sein. Bestätigen Sie die Zielidentität:

whoami

Die Ausgabe sollte su-lab-target sein. Es wurden zwei Shells geöffnet. Beenden Sie deshalb zweimal: zuerst zurück zu testuser, dann zu labex:

exit
exit
whoami

Bestätigen Sie, dass whoami labex ausgibt. Führen Sie den Wiederherstellungsbefehl niemals aus der Shell eines temporären Benutzers aus.

Die ursprüngliche Richtlinie wiederherstellen

Stellen Sie als labex die gespeicherte Konfiguration wieder her und vergleichen Sie sie mit dem Original:

sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su

Ein erfolgreicher Vergleich gibt nichts aus. Die Demonstrationsgruppe und die Benutzer bleiben für die Diagnose verfügbar, während su wieder seine ursprüngliche Richtlinie verwendet.

Fehlerbehebung und Lösung von su-Authentifizierungsfehlern

In diesem Schritt verwenden Sie ein systematisches Verfahren, um su-Authentifizierungsfehler zu diagnostizieren und zu beheben.

Authentifizierungsfehler diagnostizieren

Gehen Sie bei einem su-Authentifizierungsfehler nach diesen Schritten vor:

Schritt 1: Die Fehlermeldung prüfen

Die Fehlermeldung kann wertvolle Hinweise auf die Art des Fehlers geben. Häufige Meldungen 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: Das Benutzerkonto prüfen

Stellen Sie sicher, dass das Zielkonto vorhanden und nicht gesperrt ist:

grep testuser /etc/passwd

Dies sollte den Eintrag für testuser in der Passwortdatei anzeigen und damit bestätigen, dass das Konto existiert.

Prüfen Sie, ob das Konto gesperrt ist:

sudo getent shadow testuser | cut -d: -f2 | cut -c1

Dies zeigt nur das erste Zeichen des Passwortfelds des temporären Kontos, nicht den Passwort-Hash. Ein führendes ! bedeutet, dass die Passwortauthentifizierung gesperrt ist.

Schritt 3: Zugriffskontrollbeschränkungen prüfen

Wie im vorherigen Schritt erläutert, kann die PAM-Konfiguration den su-Zugriff einschränken. Prüfen Sie solche Einschränkungen:

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

Wenn eine Zeile mit pam_wheel.so zurückgegeben wird, ist der su-Zugriff möglicherweise auf Mitglieder einer bestimmten Gruppe beschränkt.

Schritt 4: Systemprotokolle untersuchen

Die Aufzeichnungen fehlgeschlagener Anmeldungen können nützliche Informationen über Authentifizierungsfehler liefern:

sudo lastb | head

Suchen Sie nach Einträgen zu Ihren fehlgeschlagenen su-Versuchen, die zusätzlichen Kontext liefern können.

Häufige su-Authentifizierungsfehler beheben

Betrachten wir nun häufige su-Authentifizierungsfehler und deren Behebung:

1. Falsches Passwort

Wenn Sie das korrekte Passwort eingeben, aber weiterhin Authentifizierungsfehler erhalten, muss das Passwort möglicherweise zurückgesetzt werden:

printf '%s\n' 'testuser:DemoUser123!' | sudo chpasswd

Dies setzt nur das Passwort des temporären testuser auf den bekannten Übungswert zurück; labex und root bleiben unverändert.

2. Gesperrtes Konto

Entsperren Sie das Konto, falls es gesperrt ist:

sudo usermod -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. In diesem Lab ausschließlich die Demonstrationsrichtlinie entfernen, indem Sie die gespeicherte Originaldatei wiederherstellen:

sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su

Dies stellt die exakte ursprüngliche su-Richtlinie wieder her, statt beliebige Authentifizierungsregeln zu deaktivieren.

4. Probleme mit Dateiberechtigungen

Untersuchen Sie die Berechtigungen der su-Binärdatei, ohne die Plattform-Binärdatei zu verändern:

ls -l "$(command -v su)"

Das erwartete setuid-Bit erscheint als s an der Ausführungsposition des Eigentümers. Verwenden Sie bei einer beschädigten Plattform-Binärdatei eine neue VM, statt ihre Berechtigungen zu ändern.

Die Korrekturen testen

Testen Sie nach den Korrekturen, ob die su-Authentifizierung funktioniert:

su - testuser

Geben Sie bei Aufforderung das Passwort von testuser ein. Bei Erfolg sollten Sie nun als testuser angemeldet sein.

Führen Sie whoami aus, um testuser zu bestätigen, und anschließend einmal exit, um zu labex zurückzukehren. Verwenden Sie die Root-Passwortanmeldung nicht als Erfolgstest: Die Anmeldung beim temporären Konto ist der positive Testfall.

Diese Diagnoseschritte und Korrekturen behandeln die häufigsten su-Authentifizierungsfehler. Durch systematische Diagnose und Behebung 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 betrachten Sie den sicheren Einsatz von Berechtigungen und bestätigen, dass die Demonstration den Plattformzugriff unverändert gelassen hat.

Sudo für einzelne administrative Befehle bevorzugen

Sudo kann einzelne administrative Aktionen erlauben und protokollieren, ohne das Root-Passwort zu teilen. Listen Sie aus Ihrer labex-Shell das Home-Verzeichnis von root auf, ohne eine Root-Login-Shell zu starten:

sudo ls /root

Erhalten Sie die bestehende sudo-Richtlinie der Plattform. Sie können Ihre erlaubten Befehle einsehen, ohne die Richtlinie zu ändern:

sudo -l

Authentifizierungsänderungen gezielt begrenzen

Auf Produktionssystemen verwalten Administratoren die Root-Anmeldung, Passwortqualität und Authentifizierungsrichtlinien über genehmigte Konfigurationsabläufe. Diese Übung verändert weder SSH-Einstellungen noch das Passwort oder die Gruppenzugehörigkeit von labex. Eine starke Passwortrichtlinie oder Multi-Faktor-Authentifizierung benötigt eine eigene Implementierung; dieses Tutorial konfiguriert beides nicht.

Bestätigen Sie, dass die temporäre su-Richtlinie entfernt wurde:

sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su

Keine Ausgabe bedeutet, dass die Richtlinie mit dem gespeicherten Original übereinstimmt.

Fehlgeschlagene Authentifizierungsversuche prüfen

Verwenden Sie die Datenbank fehlgeschlagener Anmeldungen, um erfolglose Versuche zu untersuchen:

sudo lastb | head

Dies liest /var/log/btmp; es zeigt nicht jede erfolgreiche su-Sitzung an. Interpretieren Sie ausschließlich die tatsächlich vom System geschriebenen Einträge und untersuchen Sie wiederholte Fehlschläge in einer Produktionsumgebung.

Eine Login-Umgebung verwenden und ausdrücklich zurückkehren

Die Bindestrichoption startet die Login-Umgebung des Zielbenutzers. Verwenden Sie das Passwort DemoUser123! von testuser:

su - testuser
whoami
exit
whoami

Die beiden Identitätsprüfungen sollten zuerst testuser und anschließend labex anzeigen. exit schließt ausschließlich die durch su erstellte Shell. Die ursprüngliche Plattformanmeldung, der sudo-Zugriff und die su-Richtlinie der VM bleiben erhalten.

Zusammenfassung

In diesem Lab haben wir den su-Befehl unter Linux untersucht und gelernt, wie man häufige Authentifizierungsfehler behebt. Wir haben Folgendes behandelt:

  1. Verständnis der grundlegenden Verwendung des su-Befehls und seiner Funktionsweise
  2. Identifizierung häufiger Ursachen für su-Authentifizierungsfehler, einschließlich falscher Passwörter, Kontobeschränkungen und Probleme mit der PAM-Konfiguration
  3. Konfiguration der Zugriffskontrolle für den su-Befehl zur Erhöhung der Sicherheit
  4. Fehlerbehebung und Lösung von su-Authentifizierungsfehlern durch systematische Diagnose
  5. 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.