Fehlerbehebung bei Su-Authentifizierungsfehlern unter Linux

LinuxBeginner
Jetzt üben

Einführung

Der Befehl "su" (Substitute User) in Linux ist ein leistungsstarkes Werkzeug, das es Benutzern ermöglicht, vorübergehend zu einem anderen Benutzerkonto zu wechseln, oft zum Root-Benutzer, um administrative Aufgaben auszuführen. Allerdings können bei der Authentifizierung mit "su" Fehler 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 und Best Practices für die sichere Verwendung von "su".

Das Su-Kommando verstehen und die grundlegende Verwendung

Der Befehl su in Linux ermöglicht es Benutzern, ihre aktuelle Benutzeridentität zu einem anderen Benutzer zu wechseln. Dies ist besonders nützlich für die Durchführung administrativer Aufgaben, die erhöhte Berechtigungen erfordern.

Lassen Sie uns die grundlegende Verwendung des su-Befehls untersuchen 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 ausführen, ohne einen Benutzernamen anzugeben, 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 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. Vereinfachen Sie es und verwenden Sie "password" als Passwort für diesen Testbenutzer.

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 der Authentifizierung ändert sich Ihre Eingabeaufforderung, was anzeigt, dass Sie jetzt als testuser arbeiten.

Um zu überprüfen, ob Sie den Benutzer erfolgreich 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 testuser, indem Sie Folgendes eingeben:

exit

Dieses grundlegende Verständnis des su-Befehls hilft uns bei der Fehlerbehebung von Authentifizierungsfehlern in den nächsten Schritten.

Häufige Su-Authentifizierungsfehler und ihre Ursachen

Bei der Verwendung des su-Befehls können aus verschiedenen Gründen Authentifizierungsfehler auftreten. Das Verständnis dieser Fehler ist der erste Schritt zu deren Behebung.

Testen von Authentifizierungsfehlern

Lassen Sie uns absichtlich einige Authentifizierungsfehler erzeugen, um sie besser zu verstehen:

  1. Versuchen Sie, mit einem falschen Passwort zu testuser zu wechseln:
su testuser

Geben Sie ein falsches Passwort ein. Sie sehen eine Fehlermeldung ähnlich der folgenden:

su: Authentication failure
  1. Versuchen Sie, zu einem nicht existierenden Benutzer zu wechseln:
su nonexistentuser

Sie sehen eine Fehlermeldung wie:

su: user nonexistentuser does not exist

Häufige Ursachen für Authentifizierungsfehler

1. Falsches Passwort

Die häufigste Ursache für Authentifizierungsfehler ist einfach die Eingabe des falschen Passworts. Dies kann passieren aufgrund von:

  • Tippfehlern
  • Aktivierter Feststelltaste (Caps Lock)
  • Vergessen des Passworts

2. Kontobeschränkungen

Einige Konten können so konfiguriert sein, dass sie die Anmeldung verhindern oder abgelaufene Passwörter haben:

Ändern wir unseren Testbenutzer, um dies zu demonstrieren:

sudo passwd -l testuser

Dies sperrt das Passwort für testuser. Versuchen Sie nun:

su testuser

Sie sehen einen Authentifizierungsfehler, selbst wenn Sie das richtige Passwort eingeben.

Entsperren Sie das Konto mit:

sudo passwd -u testuser

3. PAM-Konfigurationsprobleme

Das Pluggable Authentication Modules (PAM)-System steuert die Authentifizierung in Linux. Probleme mit der PAM-Konfiguration können zu Su-Fehlern führen.

Untersuchen wir die PAM-Konfiguration für den su-Befehl:

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 z. B.:

auth       required   pam_wheel.so

Diese Zeile würde, wenn sie nicht auskommentiert ist, den Su-Zugriff auf Mitglieder der Wheel-Gruppe beschränken.

4. Berechtigungsprobleme mit der Su-Binärdatei

Die Binärdatei des su-Befehls muss die korrekten Berechtigungen haben, um ordnungsgemäß zu funktionieren:

ls -l $(which su)

Die Ausgabe sollte in 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, wodurch das Programm mit den Berechtigungen seines Eigentümers (Root) anstatt des Benutzers, der es ausführt, ausgeführt werden kann.

5. Untersuchen von Authentifizierungsprotokollen

Bei der Fehlerbehebung von Authentifizierungsfehlern kann die Überprüfung der Systemprotokolle wertvolle Informationen liefern:

sudo tail /var/log/auth.log

Dieser Befehl zeigt aktuelle Authentifizierungsereignisse an, einschließlich fehlgeschlagener Su-Versuche.

Ein fehlgeschlagener Su-Versuch könnte beispielsweise einen Eintrag wie diesen anzeigen:

May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex

Das Verständnis dieser häufigen Ursachen für Su-Authentifizierungsfehler hilft Ihnen, Probleme in den nächsten Schritten effektiver zu identifizieren und zu beheben.

Konfigurieren der Zugriffskontrolle für den Su-Befehl

Linux bietet verschiedene Mechanismen, um zu steuern, wer den su-Befehl verwenden kann. In diesem Schritt werden wir untersuchen, wie diese Zugriffskontrollen konfiguriert werden können, um die Sicherheit zu erhöhen.

Verstehen der PAM-Konfiguration

Das Pluggable Authentication Modules (PAM)-System ist für die Authentifizierung in Linux verantwortlich. Die Konfiguration für den su-Befehl wird in der Datei /etc/pam.d/su gespeichert.

Untersuchen wir diese Datei im Detail:

cat /etc/pam.d/su

Die Datei enthält verschiedene Direktiven, die steuern, wie die Authentifizierung durchgeführt wird. Eine wichtige Zeile, nach der man suchen 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 Wheel-Gruppe.

Einschränken des Su-Zugriffs auf bestimmte Gruppen

Wir können die Verwendung von su zum Wechseln zu Root auf Mitglieder einer bestimmten Gruppe beschränken. Dies ist eine gängige Sicherheitspraxis.

Erstellen wir zunächst eine neue Gruppe namens sugroup:

sudo groupadd sugroup

Als Nächstes fügen wir 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 ähnlich der folgenden:

## auth       required   pam_wheel.so

Entfernen Sie das Kommentarzeichen (entfernen Sie das ## am Anfang) und ändern Sie es so, dass unsere sugroup anstelle von wheel verwendet wird:

auth       required   pam_wheel.so group=sugroup

Drücken Sie Ctrl+O, um die Datei zu speichern, und dann Ctrl+X, um Nano zu verlassen.

Testen der Konfiguration

Testen wir unsere Konfiguration, indem wir versuchen, su als Benutzer zu verwenden, der sich nicht in der sugroup befindet.

Erstellen Sie zunächst einen weiteren Testbenutzer:

sudo adduser testuser2

Geben Sie die erforderlichen Informationen ein, wenn Sie dazu aufgefordert werden.

Versuchen Sie nun, mit 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 Authentifizierungsfehlermeldung erhalten, selbst wenn Sie das richtige 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 richtige 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 kann, um zum Root-Benutzer zu wechseln, wodurch die Sicherheit Ihres Systems erhöht wird.

Fehlerbehebung und Behebung von Su-Authentifizierungsfehlern

Nachdem wir die häufigen Ursachen von Su-Authentifizierungsfehlern und die Konfiguration der Zugriffskontrolle verstanden haben, wollen wir uns auf die Fehlerbehebung und Behebung dieser Fehler konzentrieren.

Diagnostizieren 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 liefern. Häufige Fehlermeldungen sind:

  • su: Authentication failure - Weist typischerweise 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" (gesperrt) steht, ist das Konto gesperrt.

Schritt 3: Überprüfen Sie die 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 mit pam_wheel.so zurückgibt, könnte der Zugriff auf su auf Mitglieder einer bestimmten Gruppe beschränkt sein.

Schritt 4: Untersuchen Sie die Systemprotokolle

Die Systemprotokolle können detaillierte Informationen über Authentifizierungsfehler liefern:

sudo tail -n 20 /var/log/auth.log

Suchen Sie nach Einträgen, die sich auf Su-Fehler beziehen, die zusätzlichen Kontext liefern können.

Beheben von häufigen Su-Authentifizierungsfehlern

Lassen Sie uns nun die häufigen Su-Authentifizierungsfehler und deren Behebung angehen:

1. Falsches Passwort

Wenn Sie das richtige 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 der erforderlichen Gruppe hinzufügen:

sudo usermod -aG sugroup testuser2

Dies fügt testuser2 der sugroup hinzu.

b. Die Einschränkung vorübergehend deaktivieren, indem Sie die relevante 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, beheben Sie diese:

sudo chmod u+s $(which su)

Dies stellt sicher, dass das Setuid-Bit für die 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 dies erfolgreich ist, sollten Sie sich jetzt als testuser angemeldet haben.

Versuchen Sie, zum Root-Benutzer zu wechseln:

su -

Wenn Sie das Root-Passwort haben und die Zugriffskontrollbeschränkungen ordnungsgemäß behoben wurden, sollten Sie erfolgreich zum Root-Benutzer wechseln können.

Diese Schritte zur Fehlerbehebung und -behebung beheben die häufigsten Su-Authentifizierungsfehler. Durch die systematische Diagnose und Behebung dieser Probleme können Sie sicherstellen, dass der Su-Befehl auf Ihrem System korrekt funktioniert.

Best Practices für die sichere Su-Nutzung

In diesem letzten Schritt werden wir die Best Practices für die sichere Verwendung des su-Befehls untersuchen. Das Befolgen dieser Praktiken hilft, Sicherheitsrisiken zu minimieren und gleichzeitig administrative Aufgaben effektiv ausführen zu können.

Verwenden Sie nach Möglichkeit Sudo anstelle von Su

Der sudo-Befehl gilt im Allgemeinen als sicherer als su, da:

  • Er eine detailliertere Kontrolle über Berechtigungen ermöglicht
  • Er Befehle protokolliert, die mit erhöhten Berechtigungen ausgeführt werden
  • Er erfordert nicht die Weitergabe des Root-Passworts

Beispiel für die Verwendung von sudo anstelle von su:

## Anstelle von:
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-Rechten aus, ohne zum Root-Benutzer zu wechseln.

Konfigurieren Sie den Sudo-Zugriff ordnungsgemäß

Stellen Sie sicher, dass sudo korrekt konfiguriert ist, um nur die erforderlichen Berechtigungen zu gewähren:

sudo visudo

Dies öffnet die Sudoers-Datei in einem sicheren Editor. Die Datei sollte Einträge ähnlich den folgenden enthalten:

## 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 zu beenden, ohne Änderungen vorzunehmen.

Begrenzen Sie die direkte Root-Anmeldung

Entmutigen 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, indem Sie die PAM-Konfiguration bearbeiten:

sudo nano /etc/pam.d/common-password

Suchen Sie nach einer Zeile mit pam_pwquality.so und stellen Sie sicher, dass sie geeignete Parameter wie folgt hat:

password requisite pam_pwquality.so retry=3 minlen=12 difok=3

Drücken Sie Ctrl+X, um zu beenden, ohne Änderungen vorzunehmen, da wir nur die Konfiguration untersuchen.

Überprüfen Sie die Su-Nutzung regelmäßig

Überprüfen Sie die Protokolle, um die su-Nutzung zu überwachen:

sudo grep "su:" /var/log/auth.log | tail -n 10

Dies zeigt aktuelle Su-Versuche, sowohl erfolgreiche als auch fehlgeschlagene.

Erwägen Sie die Einrichtung automatisierter Warnungen für mehrere fehlgeschlagene Su-Versuche, die auf einen Angriff hindeuten könnten.

Verwenden Sie Su mit der Dash-Option

Verwenden Sie bei der Verwendung von su, um zu einem anderen Benutzer, insbesondere Root, zu wechseln, 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.

Übungssitzung - Sichere Su-Nutzung

Lassen Sie uns diese Best Practices üben:

  1. Anstatt su - zu verwenden, um Root zu werden und dann einen Befehl auszuführen, verwenden Sie sudo:
## Anstelle von:
## su -
## cat /etc/shadow

## Verwenden Sie:
sudo cat /etc/shadow
  1. Wechseln Sie mit einer sauberen Umgebung zu testuser:
su - testuser
  1. Kehren Sie zu Ihrem ursprünglichen Benutzer zurück:
exit
  1. Überprüfen Sie das Auth-Protokoll auf die Su-Nutzung:
sudo grep "su:" /var/log/auth.log | tail -n 5

Durch das Befolgen dieser Best Practices 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 in 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 von Su-Authentifizierungsfehlern, einschließlich falscher Passwörter, Kontobeschränkungen und Problemen mit der PAM-Konfiguration
  3. Konfigurieren der Zugriffskontrolle für den su-Befehl zur Verbesserung der Sicherheit
  4. Fehlerbehebung und Behebung von Su-Authentifizierungsfehlern durch systematische Diagnose
  5. Implementierung von Best Practices für die sichere Su-Nutzung, einschließlich der Verwendung von sudo, wann immer möglich, der Konfiguration robuster Passwortrichtlinien und der regelmäßigen Überprüfung der Su-Nutzung

Durch die Anwendung dieser Techniken und Best Practices können Sie sicherstellen, dass der su-Befehl korrekt funktioniert und gleichzeitig die Sicherheit Ihres Linux-Systems gewährleisten. Denken Sie daran, dass ein ordnungsgemäßes Authentifizierungsmanagement ein entscheidender Aspekt der Systemadministration und -sicherheit ist.