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

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:

  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.