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:
- 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
- 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:
- 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
- Wechseln Sie mit einer sauberen Umgebung zu testuser:
su - testuser
- Kehren Sie zu Ihrem ursprünglichen Benutzer zurück:
exit
- Ü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:
- Verständnis der grundlegenden Verwendung des
su-Befehls und seiner Funktionsweise - Identifizierung häufiger Ursachen von Su-Authentifizierungsfehlern, einschließlich falscher Passwörter, Kontobeschränkungen und Problemen mit der PAM-Konfiguration
- Konfigurieren der Zugriffskontrolle für den
su-Befehl zur Verbesserung der Sicherheit - Fehlerbehebung und Behebung von Su-Authentifizierungsfehlern durch systematische Diagnose
- 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.



