Benutzerkonten und Sudo-Berechtigungen unter Linux konfigurieren

CompTIACompTIABeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Labor lernen Sie wesentliche Techniken zur Verwaltung von Benutzerkonten und Sudo-Berechtigungen, um die Sicherheit eines Linux-Systems zu erhöhen. Sie üben die Durchsetzung von Passwortrichtlinien, das Sperren und Entsperren von Benutzerkonten, die Absicherung des Root-Kontos und die Gewährung administrativer Berechtigungen. Diese Fähigkeiten sind grundlegend für jeden Systemadministrator, der für die Wartung einer sicheren und gut verwalteten Linux-Umgebung verantwortlich ist.

Sie beginnen mit der Verwendung des Befehls chage, um Regeln für den Ablauf von Passwörtern festzulegen, und des Befehls passwd, um den Kontozugriff zu steuern. Als Nächstes sichern Sie das System, indem Sie die direkte SSH-Anmeldung für den Root-Benutzer deaktivieren. Abschließend untersuchen Sie zwei Methoden zur Gewährung erhöhter Berechtigungen: das Hinzufügen eines Benutzers zur Gruppe wheel für allgemeinen Sudo-Zugriff und das Erstellen benutzerdefinierter, feingranularer Regeln mit dem Befehl visudo, um spezifische administrative Aufgaben sicher zu delegieren.

Benutzerpasswortrichtlinien mit chage verwalten

In diesem Schritt lernen Sie, wie Sie Benutzerpasswortrichtlinien mit dem Befehl chage verwalten. Die Durchsetzung von Passwortrichtlinien, wie z. B. die Festlegung eines Ablaufdatums, ist eine entscheidende Sicherheitspraxis zum Schutz von Benutzerkonten vor unbefugtem Zugriff. Der Befehl chage (kurz für "change age") ermöglicht es Ihnen, die Alterungsinformationen von Passwörtern für Benutzerkonten anzuzeigen und zu ändern.

Zuerst erstellen wir einen neuen Benutzer, auf dem wir sicher üben können. Wir nennen diesen Benutzer testuser. Führen Sie den folgenden Befehl aus, um den Benutzer hinzuzufügen:

sudo useradd -m testuser

Legen Sie als Nächstes ein Passwort für testuser fest. Sie werden aufgefordert, ein neues Passwort einzugeben und zu bestätigen. Der Einfachheit halber verwenden Sie in diesem Labor password als Passwort.

sudo passwd testuser

Sie sehen eine Ausgabe, die bestätigt, dass das Passwort erfolgreich aktualisiert wurde.

New password:
Retype new password:
passwd: password updated successfully

Nachdem wir nun unseren testuser haben, sehen wir uns dessen standardmäßigen Passwortalterungseinstellungen an. Verwenden Sie den Befehl chage mit der Option -l (list):

sudo chage -l testuser

Die Ausgabe zeigt die aktuelle Richtlinie. Standardmäßig sind die meisten Einstellungen inaktiv und das Passwort läuft nie ab.

Last password change					: <date>
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

Lassen Sie uns eine strengere Richtlinie durchsetzen. Wir konfigurieren das Konto so, dass:

  • -m 7: Der Benutzer muss mindestens 7 Tage warten, bevor er sein Passwort erneut ändert.
  • -M 90: Das Passwort läuft nach 90 Tagen ab.
  • -W 14: Der Benutzer erhält 14 Tage vor Ablauf des Passworts eine Warnung.

Sie können all diese Einstellungen mit einem einzigen chage-Befehl anwenden:

sudo chage -m 7 -M 90 -W 14 testuser

Überprüfen Sie nun, ob die Änderungen angewendet wurden, indem Sie die Einstellungen erneut auflisten:

sudo chage -l testuser

Die Ausgabe sollte nun die von Ihnen gerade festgelegte neue Richtlinie widerspiegeln.

Last password change					: <date>
Password expires					: <date + 90 days>
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 7
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 14

Ein weiterer nützlicher Befehl, um den Passwortstatus eines Benutzers schnell zu überprüfen, ist passwd -S. Probieren wir es mit testuser aus:

sudo passwd -S testuser

Die Ausgabe liefert eine kompakte Zusammenfassung des Passwortstatus, einschließlich des Datums der letzten Änderung, des Mindestalters, des Höchstalters und des Warnzeitraums.

testuser PS <date> 7 90 14 -1

Sie haben nun erfolgreich Passwortalterungsrichtlinien für ein Benutzerkonto konfiguriert und verifiziert.

Benutzerkonto sperren und entsperren mit passwd

In diesem Schritt lernen Sie, wie Sie Benutzerkonten vorübergehend sperren und entsperren. Dies ist eine gängige administrative Aufgabe, beispielsweise wenn ein Mitarbeiter in einen langen Urlaub geht oder wenn der Verdacht besteht, dass ein Konto kompromittiert wurde. Das Sperren eines Kontos verhindert Anmeldungen, bewahrt aber die Daten und Konfiguration des Benutzers. Wir werden das im vorherigen Schritt erstellte Konto testuser verwenden.

Zuerst sperren wir das Konto testuser. Zu diesem Zweck wird der Befehl passwd mit der Option -l (lock) verwendet.

sudo passwd -l testuser

Sie sollten eine Bestätigungsnachricht sehen:

passwd: password expiry information changed.

Um zu überprüfen, ob das Konto gesperrt ist, können Sie seinen Status erneut mit dem Befehl passwd -S überprüfen.

sudo passwd -S testuser

Beachten Sie das Statusfeld in der Ausgabe. Es sollte nun mit L (Locked) beginnen, was darauf hinweist, dass die passwortbasierte Anmeldung deaktiviert ist.

testuser L <date> 7 90 14 -1

Versuchen wir, zum Konto testuser zu wechseln, um zu bestätigen, dass es nicht zugänglich ist. Verwenden Sie den Befehl su (substitute user). Sie werden nach dem Passwort von testuser gefragt.

su - testuser

Geben Sie das Passwort password ein. Der Anmeldeversuch wird fehlschlagen, was das erwartete Verhalten für ein gesperrtes Konto ist.

Password:
su: Authentication failure

Nun entsperren wir das Konto. Dies geschieht mit der Option passwd -u (unlock).

sudo passwd -u testuser

Auch hier sehen Sie eine Bestätigungsnachricht:

passwd: password expiry information changed.

Überprüfen wir den entsperrten Status mit passwd -S:

sudo passwd -S testuser

Der Status sollte nun PS (Password Set) sein, was darauf hinweist, dass das Konto aktiv ist und ein gültiges Passwort hat.

testuser PS <date> 7 90 14 -1

Schließlich versuchen wir, erneut zum Konto testuser zu wechseln.

su - testuser

Geben Sie bei Aufforderung das Passwort password ein. Diesmal sollte die Anmeldung erfolgreich sein, und Ihre Eingabeaufforderung ändert sich, um anzuzeigen, dass Sie jetzt als testuser angemeldet sind.

Password:
testuser@<hostname>:~$

Um zu Ihrer ursprünglichen labex-Benutzersitzung zurückzukehren, geben Sie einfach exit ein und drücken Sie die Eingabetaste.

exit

Sie haben nun erfolgreich das Sperren und Entsperren eines Benutzerkontos geübt.

Root-Konto durch Deaktivieren der SSH-Anmeldung sichern

In diesem Schritt verbessern Sie die Sicherheit Ihres Systems, indem Sie die direkte SSH-Anmeldung für den root-Benutzer deaktivieren. Die Zulassung von Remote-Root-Anmeldungen stellt ein erhebliches Sicherheitsrisiko dar, da sie ein direktes Ziel mit hohen Berechtigungen für Angreifer bietet. Die beste Vorgehensweise ist, sich als Standardbenutzer anzumelden und dann sudo zu verwenden, um administrative Aufgaben auszuführen.

Zuerst müssen Sie die Konfigurationsdatei des SSH-Daemons bearbeiten, die sich unter /etc/ssh/sshd_config befindet. Wir verwenden den Texteditor nano, um diese Datei zu ändern. Da es sich um eine geschützte Systemdatei handelt, müssen Sie sudo verwenden.

sudo nano /etc/ssh/sshd_config

Innerhalb des nano-Editors müssen Sie die Zeile finden, die PermitRootLogin enthält. Sie können die Suchfunktion verwenden, indem Sie Ctrl+W drücken, PermitRootLogin eingeben und dann Enter drücken.

Sie werden wahrscheinlich eine Zeile finden, die wie folgt aussieht:

#PermitRootLogin prohibit-password

Oder sie ist auf yes gesetzt. Ihre Aufgabe ist es, diese Zeile in PermitRootLogin no zu ändern. Stellen Sie sicher, dass Sie das # am Anfang der Zeile entfernen, falls es vorhanden ist, da dieses Zeichen die Zeile auskommentiert und sie inaktiv macht. Die endgültige Zeile sollte genau so aussehen:

PermitRootLogin no

Nachdem Sie die Änderung vorgenommen haben, speichern Sie die Datei und beenden Sie nano. Drücken Sie Ctrl+X, dann Y, um zu bestätigen, dass Sie die Änderungen speichern möchten, und drücken Sie schließlich Enter, um den Dateinamen zu bestätigen.

Damit die neue Konfiguration wirksam wird, müssen Sie den SSH-Dienst neu starten. Verwenden Sie dazu service:

sudo service ssh restart

Der Befehl gibt keine Ausgabe aus, wenn er erfolgreich ausgeführt wird. Um sicherzugehen, dass der Dienst korrekt ausgeführt wird, können Sie seinen Status überprüfen:

sudo service ssh status

Sie sollten sehen, dass der Dienst running ist.

Testen wir nun, ob die Änderung funktioniert. Wir werden versuchen, uns von derselben Maschine (über localhost) als root per SSH anzumelden. Zuerst müssen Sie ein Passwort für den root-Benutzer festlegen, um den Test gültig zu machen. Verwenden Sie password als Passwort.

sudo passwd root
New password:
Retype new password:
passwd: password updated successfully

Versuchen Sie nun, sich als root per SSH anzumelden:

ssh root@localhost

Die Verbindung sollte sofort mit einer Fehlermeldung "Permission denied" abgelehnt werden. Dies bestätigt, dass Ihre Sicherheitsverbesserung korrekt funktioniert.

root@localhost: Permission denied (publickey,password).

Sie haben Ihr System erfolgreich gesichert, indem Sie die direkte Root-Anmeldung über SSH deaktiviert haben.

Sudo-Zugriff über die wheel-Gruppe gewähren

In diesem Schritt lernen Sie eine Standardmethode, um administrative Berechtigungen zu gewähren: das Hinzufügen eines Benutzers zu einer speziellen Gruppe (üblicherweise wheel oder sudo), die vordefiniert ist, um sudo-Zugriff zu haben. Dieser Ansatz ist besser zu verwalten und skalierbarer als das Hinzufügen einzelner Benutzereinträge zur sudoers-Datei. Wir werden weiterhin das Konto testuser verwenden.

Zuerst bestätigen wir, dass testuser derzeit keine sudo-Berechtigungen hat. Wechseln Sie zum Konto testuser. Das Passwort lautet password.

su - testuser

Versuchen Sie nun als testuser, einen Befehl auszuführen, der Root-Privilegien erfordert, wie z. B. whoami mit sudo. Sie werden nach dem Passwort von testuser gefragt.

sudo whoami

Nach Eingabe des Passworts schlägt der Befehl fehl. Sie sehen eine Meldung, die darauf hinweist, dass testuser nicht in der sudoers-Datei enthalten ist. Dies ist das erwartete Ergebnis.

[sudo] password for testuser:
testuser is not in the sudoers file.  This incident will be reported.

Geben Sie nun exit ein, um zu Ihrer labex-Benutzersitzung zurückzukehren.

exit

Als Nächstes müssen wir die sudoers-Konfiguration bearbeiten, um allen Mitgliedern der wheel-Gruppe sudo-Zugriff zu gewähren. Der sicherste Weg, diese Konfiguration zu bearbeiten, ist der Befehl visudo, der die Syntax vor dem Speichern validiert, um zu verhindern, dass Sie vom System ausgesperrt werden.

sudo visudo

Dadurch wird die Datei /etc/sudoers in einem Texteditor (wahrscheinlich vi oder nano) geöffnet. Suchen Sie nach einer Zeile, die sich auf die %wheel-Gruppe bezieht. Sie wird wahrscheinlich mit einem #-Zeichen auskommentiert sein.

## %wheel ALL=(ALL) ALL

oder

## %wheel ALL=(ALL:ALL) ALL

Sie müssen diese Zeile auskommentieren, indem Sie das # am Anfang löschen. Das Ergebnis sollte wie folgt aussehen:

%wheel ALL=(ALL) ALL

Wenn Sie sich im vi-Editor befinden, navigieren Sie mit den Pfeiltasten zum #, drücken Sie x, um es zu löschen, und geben Sie dann :wq ein und drücken Sie Enter, um zu speichern und zu beenden. Wenn Sie sich in nano befinden, löschen Sie einfach das #, drücken Sie Ctrl+X, dann Y und schließlich Enter.

Nachdem die wheel-Gruppe nun berechtigt ist, fügen Sie testuser hinzu. Verwenden Sie den Befehl usermod mit den Optionen -aG, wobei -a für anhängen steht und -G die ergänzende Gruppe angibt.

sudo usermod -aG wheel testuser

Um zu überprüfen, ob testuser nun Mitglied der wheel-Gruppe ist, verwenden Sie den Befehl groups:

groups testuser

Die Ausgabe sollte wheel in der Liste der Gruppen für testuser anzeigen.

testuser : testuser wheel

Testen wir abschließend, ob die neuen Berechtigungen funktionieren. Wechseln Sie zurück zu testuser.

su - testuser

Versuchen Sie erneut den sudo-Befehl. Geben Sie bei Aufforderung password ein.

sudo whoami

Diesmal sollte der Befehl erfolgreich ausgeführt werden und root ausgeben, was bestätigt, dass testuser nun sudo-Berechtigungen hat.

[sudo] password for testuser:
root

Geben Sie exit ein, um zu Ihrer labex-Sitzung zurückzukehren. Sie haben erfolgreich sudo-Zugriff gewährt, indem Sie einen Benutzer zur wheel-Gruppe hinzugefügt haben.

Benutzerdefinierte Sudo-Regeln mit visudo erstellen

In diesem Schritt gehen wir über breite, gruppenbasierte Berechtigungen hinaus und lernen, wie man granulare sudo-Regeln erstellt. Dies ist unerlässlich für die Umsetzung des Prinzips der geringsten Rechte (principle of least privilege), bei dem Benutzern nur die exakten Berechtigungen gewährt werden, die sie zur Ausübung ihrer Aufgaben benötigen. Wir werden Aliase innerhalb der sudoers-Datei verwenden, um eine Gruppe von Benutzern und eine Gruppe von Befehlen zu definieren und diese dann in einer Regel miteinander zu verknüpfen.

Zuerst schaffen wir eine Situation, um unsere Regel zu testen. Wir starten einen Prozess als root-Benutzer. Der Befehl top, ein einfacher Prozessmonitor, ist dafür perfekt geeignet. Wir führen ihn im Hintergrund mit sudo aus.

sudo top &

Sie sehen die Prozess-ID (PID) des Hintergrundjobs. Drücken Sie Enter, wenn Ihre Eingabeaufforderung nicht sofort wieder erscheint.

[1] <PID>

Nun erstellen wir die benutzerdefinierte Regel. Wir gewähren unserem testuser die spezifische Fähigkeit, Prozesse mit den Befehlen kill und pkill zu beenden. Öffnen Sie die sudoers-Datei zur Bearbeitung mit dem Befehl visudo. Dies ist der einzig sichere Weg, diese Datei zu bearbeiten.

sudo visudo

Dadurch wird /etc/sudoers in einem Editor geöffnet. Gehen Sie zum Ende der Datei. Fügen Sie die folgenden Zeilen hinzu, um einen Befehlsalias und einen Benutzeralias zu definieren und dann die Regel zu erstellen, die sie verbindet.

## Custom rule for junior administrators
Cmnd_Alias      KILL_CMDS = /usr/bin/kill, /usr/bin/pkill
User_Alias      JUNIOR_ADMINS = testuser

JUNIOR_ADMINS   ALL=(ALL) KILL_CMDS

Lassen Sie uns diese Zeilen aufschlüsseln:

  • Cmnd_Alias: Erstellt eine benannte Liste von Befehlen. Wir haben unsere KILL_CMDS genannt. Beachten Sie, dass Sie den vollständigen Pfad zu den Befehlen verwenden müssen.
  • User_Alias: Erstellt eine benannte Liste von Benutzern. Wir haben unsere JUNIOR_ADMINS genannt.
  • Die letzte Zeile ist die Regel selbst. Sie gewährt den Benutzern in JUNIOR_ADMINS die Berechtigung, die Befehle in KILL_CMDS auf allen Hosts (ALL) auszuführen.

Nachdem Sie die Zeilen hinzugefügt haben, speichern Sie die Datei und beenden Sie den Editor.

Um diese spezifische Regel ordnungsgemäß zu testen, müssen wir zuerst testuser aus der wheel-Gruppe entfernen, um die im vorherigen Schritt gewährten vollen sudo-Zugriffe zu widerrufen. Dies stellt sicher, dass unser Test gültig ist.

sudo gpasswd -d testuser wheel

Sie sehen eine Bestätigungsnachricht:

Removing user testuser from group wheel

Testen wir nun die neuen, eingeschränkten Berechtigungen. Wechseln Sie zum Konto testuser. Das Passwort lautet password.

su - testuser

Bestätigen Sie zunächst, dass der volle sudo-Zugriff nicht mehr besteht. Versuchen Sie, einen Befehl auszuführen, der nicht in unserem KILL_CMDS-Alias enthalten ist, wie z. B. whoami.

sudo whoami

Dieser Versuch sollte mit einer Meldung fehlschlagen, die besagt, dass testuser diesen Befehl nicht als root ausführen darf.

[sudo] password for testuser:
Sorry, user testuser is not allowed to execute '/usr/bin/whoami' as root on <hostname>.

Versuchen Sie als Nächstes einen der erlaubten Befehle. Verwenden wir pkill, um den zuvor gestarteten top-Prozess zu beenden.

sudo pkill top

Dieser Befehl sollte ohne Fehlermeldung erfolgreich ausgeführt werden. Um zu bestätigen, dass der top-Prozess beendet wurde, kehren Sie zu Ihrem labex-Benutzer zurück und überprüfen Sie den Prozess.

exit

Überprüfen Sie nun, ob der top-Prozess noch läuft.

pgrep top

Der Befehl sollte keine Ausgabe erzeugen, was bestätigt, dass der Prozess erfolgreich von testuser beendet wurde. Sie haben nun erfolgreich eine granulare sudo-Regel erstellt und getestet.

Zusammenfassung

In diesem Lab haben Sie wesentliche Techniken zur Verwaltung von Benutzerkonten und deren Sicherheitsrichtlinien in einer Linux-Umgebung erlernt. Sie haben den Befehl chage verwendet, um Regeln für das Passwort-Aging durchzusetzen, wie z. B. die Festlegung von minimalen und maximalen Passwortlebensdauern und Warnperioden. Sie haben auch gelernt, Benutzerkonten mit dem Befehl passwd zu sperren und zu entsperren, um den Anmeldezugriff zu steuern. Zur Erhöhung der Systemsicherheit haben Sie die SSH-Daemon-Konfiguration geändert, um die direkte Root-Anmeldung zu deaktivieren, eine kritische Best Practice zum Schutz des privilegiertesten Kontos des Systems.

Darüber hinaus haben Sie Methoden zur sicheren Delegation administrativer Berechtigungen mit sudo untersucht. Sie haben die Standardpraxis erlernt, vollen sudo-Zugriff zu gewähren, indem Sie einen Benutzer mit dem Befehl usermod zur wheel-Gruppe hinzufügen. Für eine feinere Steuerung haben Sie den Befehl visudo verwendet, um die sudoers-Datei sicher zu bearbeiten und benutzerdefinierte Regeln zu erstellen, die es bestimmten Benutzern ermöglichen, bestimmte Befehle mit erhöhten Berechtigungen auszuführen, ohne das Root-Passwort zu benötigen. Dieser Ansatz ermöglicht das Prinzip der geringsten Rechte (principle of least privilege), indem Benutzern nur die Berechtigungen gewährt werden, die sie zur Ausführung ihrer Aufgaben benötigen.