Einführung
In diesem Lab lernen Sie grundlegende Techniken zur Verwaltung von Benutzerkonten und Sudo-Berechtigungen kennen, um die Sicherheit eines Linux-Systems zu erhöhen. Sie werden das Durchsetzen von Passwortrichtlinien, das Sperren und Entsperren von Benutzerkonten, das Absichern des Root-Kontos und das Erteilen von administrativen Berechtigungen üben. Diese Fähigkeiten sind elementar für jeden Systemadministrator, der für die Wartung einer sicheren und gut verwalteten Linux-Umgebung verantwortlich ist.
Sie beginnen mit dem Befehl chage, um Regeln für den Ablauf von Passwörtern festzulegen, und nutzen den Befehl passwd, um den Kontozugriff zu steuern. Als Nächstes sichern Sie das System ab, indem Sie den direkten SSH-Login für den Root-Benutzer deaktivieren. Schließlich untersuchen Sie zwei Methoden zur Vergabe erweiterter Berechtigungen: das Hinzufügen eines Benutzers zur wheel-Gruppe für allgemeinen Sudo-Zugriff und das Erstellen benutzerdefinierter, feingranularer Regeln mit dem Befehl visudo, um spezifische administrative Aufgaben sicher zu delegieren.
Passwortrichtlinien für Benutzer mit chage verwalten
In diesem Schritt lernen Sie, wie Sie Passwortrichtlinien für Benutzer mit dem Befehl chage verwalten. Das Durchsetzen von Passwortrichtlinien, wie z. B. das Festlegen eines Ablaufdatums, ist eine entscheidende Sicherheitspraxis, um Benutzerkonten vor unbefugtem Zugriff zu schützen. Der Befehl chage (kurz für „change age“) ermöglicht es Ihnen, Informationen über das Alter von Passwörtern für Benutzerkonten anzuzeigen und zu ändern.
Zuerst erstellen wir einen neuen Benutzer, um sicher üben zu 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. Verwenden Sie der Einfachheit halber in diesem Lab 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 unseren testuser erstellt haben, schauen wir uns dessen Standardeinstellungen für das Passwortalter 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 wie folgt:
-m 7: Der Benutzer muss mindestens 7 Tage warten, bevor er sein Passwort erneut ändern kann.-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 übernommen wurden, indem Sie die Einstellungen erneut auflisten:
sudo chage -l testuser
Die Ausgabe sollte nun die neue Richtlinie widerspiegeln, die Sie gerade festgelegt haben.
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 schnell den Passwortstatus eines Benutzers zu prüfen, ist passwd -S. Probieren wir es bei 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 Passwort-Alterungsrichtlinien für ein Benutzerkonto konfiguriert und überprüft.
Ein Benutzerkonto mit passwd sperren und entsperren
In diesem Schritt lernen Sie, wie Sie Benutzerkonten vorübergehend sperren und entsperren. Dies ist eine gängige administrative Aufgabe, zum Beispiel 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 Konfigurationen des Benutzers. Wir verwenden das im vorherigen Schritt erstellte Konto testuser.
Zuerst sperren wir das Konto testuser. Dazu wird der Befehl passwd mit der Option -l (lock) verwendet.
sudo passwd -l testuser
Sie sollten eine Bestätigungsmeldung sehen:
passwd: password expiry information changed.
Um zu überprüfen, ob das Konto gesperrt ist, können Sie den Status erneut mit dem Befehl passwd -S abfragen.
sudo passwd -S testuser
Achten Sie auf 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 wieder. Dies geschieht mit der Option passwd -u (unlock).
sudo passwd -u testuser
Auch hier sehen Sie eine Bestätigungsmeldung:
passwd: password expiry information changed.
Überprüfen wir den entsperrten Status mit passwd -S:
sudo passwd -S testuser
Der Status sollte nun wieder PS (Password Set) lauten, was bedeutet, dass das Konto aktiv ist und über ein gültiges Passwort verfügt.
testuser PS <date> 7 90 14 -1
Versuchen wir schließlich 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 nun 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.
Das Root-Konto durch Deaktivieren des SSH-Logins absichern
In diesem Schritt erhöhen Sie die Sicherheit Ihres Systems, indem Sie den direkten SSH-Login für den Benutzer root deaktivieren. Das Erlauben von Remote-Root-Logins stellt ein erhebliches Sicherheitsrisiko dar, da es Angreifern ein direktes Ziel mit höchsten Privilegien bietet. Die bewährte Methode besteht darin, 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
Im nano-Editor müssen Sie die Zeile suchen, die PermitRootLogin enthält. Sie können die Suchfunktion nutzen, indem Sie Strg+W drücken, PermitRootLogin eingeben und Enter drücken.
Hinweis: Auf einigen Betriebssystemen oder in bestimmten Browserumgebungen kann das Tastenkürzel
Strg+Wmit Browser-Shortcuts kollidieren. Wenn SieStrg+Wnicht zum Suchen verwenden können, scrollen Sie manuell durch die Datei, um die ZeilePermitRootLoginzu finden, die sich normalerweise im Abschnitt für die Authentifizierung befindet.
Wahrscheinlich finden Sie eine Zeile, die so 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 vorhanden, da dieses Zeichen die Zeile auskommentiert und somit inaktiv macht. Die fertige Zeile sollte genau so aussehen:
PermitRootLogin no
Nachdem Sie die Änderung vorgenommen haben, speichern Sie die Datei und beenden Sie nano. Drücken Sie Strg+X, dann J (oder Y bei englischer Tastaturbelegung), um das Speichern zu bestätigen, und 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 erzeugt keine Ausgabe, wenn er erfolgreich ausgeführt wurde. Um sicherzugehen, dass der Dienst korrekt läuft, können Sie den Status überprüfen:
sudo service ssh status
Sie sollten sehen, dass der Dienst den Status running hat.
Testen wir nun, ob die Änderung funktioniert. Wir versuchen, uns per SSH als root von der Maschine selbst aus anzumelden (über localhost). Zuerst müssen Sie ein Passwort für den Benutzer root festlegen, damit der Test aussagekräftig ist. Verwenden Sie password als Passwort.
sudo passwd root
New password:
Retype new password:
passwd: password updated successfully
Versuchen Sie nun den SSH-Login als root:
ssh root@localhost
Die Verbindung sollte sofort mit der Fehlermeldung „Permission denied“ abgelehnt werden. Dies bestätigt, dass Ihre Sicherheitsmaßnahme korrekt funktioniert.
root@localhost: Permission denied (publickey,password).
Sie haben Ihr System erfolgreich abgesichert, indem Sie den direkten Root-Login über SSH deaktiviert haben.
Sudo-Zugriff über die wheel-Gruppe gewähren
In diesem Schritt lernen Sie eine Standardmethode zur Vergabe von administrativen Berechtigungen kennen: das Hinzufügen eines Benutzers zu einer speziellen Gruppe (üblicherweise wheel oder sudo), die bereits für den sudo-Zugriff vorkonfiguriert ist. Dieser Ansatz ist übersichtlicher und skalierbarer als das Hinzufügen einzelner Benutzereinträge in die sudoers-Datei. Wir arbeiten weiter mit dem Konto testuser.
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-Rechte erfordert, wie zum Beispiel whoami mit sudo. Sie werden nach dem Passwort von testuser gefragt.
sudo whoami
Nach Eingabe des Passworts wird der Befehl fehlschlagen. Sie sehen eine Meldung, dass testuser nicht in der sudoers-Datei steht. 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 überprüft, um zu verhindern, dass Sie sich versehentlich aus dem System aussperren.
sudo visudo
Dies öffnet die Datei /etc/sudoers in einem Texteditor (meist vi oder nano). Suchen Sie nach einer Zeile, die sich auf die Gruppe %wheel bezieht. Sie ist wahrscheinlich mit einem #-Zeichen auskommentiert.
## %wheel ALL=(ALL) ALL
oder
## %wheel ALL=(ALL:ALL) ALL
Sie müssen diese Zeile einkommentieren, indem Sie das # am Anfang löschen. Das Ergebnis sollte so 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, geben Sie dann :wq ein und drücken Sie Enter, um zu speichern und zu beenden. In nano löschen Sie einfach das #, drücken Strg+X, dann J (oder Y) und dann Enter.
Da die wheel-Gruppe nun berechtigt ist, fügen wir testuser hinzu. Verwenden Sie den Befehl usermod mit den Optionen -aG, wobei -a für „append“ (anhängen) steht und -G die zusätzliche 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 schließlich, ob die neuen Berechtigungen funktionieren. Wechseln Sie zurück zu testuser.
su - testuser
Versuchen Sie den sudo-Befehl erneut. 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 über sudo-Berechtigungen verfügt.
[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 allgemeine, gruppenbasierte Berechtigungen hinaus und lernen, wie man feingranulare sudo-Regeln erstellt. Dies ist essenziell für die Umsetzung des Prinzips der minimalen Rechtevergabe (Least Privilege), bei dem Benutzern nur genau die Berechtigungen gewährt werden, die sie zur Erfüllung 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 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 lassen ihn mit sudo im Hintergrund laufen. Vor dem Start stellen wir sicher, dass keine anderen top-Prozesse laufen.
pgrep top || echo "No top processes running"
sudo top &
Sie sehen die Prozess-ID (PID) des Hintergrundjobs. Drücken Sie Enter, falls 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 mit dem Befehl visudo. Dies ist der einzige sichere Weg, diese Datei zu bearbeiten.
sudo visudo
Dies öffnet /etc/sudoers in einem Editor. Gehen Sie zum Ende der Datei. Fügen Sie die folgenden Zeilen hinzu, um einen Befehls-Alias und einen Benutzer-Alias zu definieren und dann die Regel zu erstellen, die beide 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
Erklärung dieser Zeilen:
Cmnd_Alias: Erstellt eine benannte Liste von Befehlen. Wir haben unsereKILL_CMDSgenannt. Beachten Sie, dass Sie den vollständigen Pfad zu den Befehlen verwenden müssen.User_Alias: Erstellt eine benannte Liste von Benutzern. Wir haben unsereJUNIOR_ADMINSgenannt.- Die letzte Zeile ist die eigentliche Regel. Sie gewährt den Benutzern in
JUNIOR_ADMINSdie Erlaubnis, die Befehle inKILL_CMDSauf 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 korrekt zu testen, müssen wir testuser zuerst aus der wheel-Gruppe entfernen, um den im vorherigen Schritt gewährten vollen sudo-Zugriff zu widerrufen. Nur so ist unser Test aussagekräftig.
sudo gpasswd -d testuser wheel
Sie sehen eine Bestätigungsmeldung:
Removing user testuser from group wheel
Testen wir nun die neuen, eingeschränkten Berechtigungen. Wechseln Sie zum Konto testuser. Das Passwort ist password.
su - testuser
Bestätigen Sie zuerst, dass der volle sudo-Zugriff entzogen wurde. Versuchen Sie einen Befehl auszuführen, der nicht in unserem KILL_CMDS-Alias enthalten ist, wie zum Beispiel whoami.
sudo whoami
Dieser Versuch sollte mit einer Meldung fehlschlagen, die besagt, dass testuser diesen Befehl nicht 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. Wir verwenden pkill, um den zuvor gestarteten top-Prozess zu stoppen. Mit sudo pkill -u root top zielen wir spezifisch auf den als Root laufenden top-Prozess ab.
sudo pkill -u root 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 prüfen Sie den Prozess.
exit
Prüfen Sie nun, ob der top-Prozess noch läuft.
pgrep -u root 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 grundlegende Techniken zur Verwaltung von Benutzerkonten und deren Sicherheitsrichtlinien in einer Linux-Umgebung gelernt. Sie haben geübt, den Befehl chage zu verwenden, um Regeln für das Passwortalter durchzusetzen, wie z. B. das Festlegen von Mindest- und Höchstlaufzeiten für Passwörter sowie Warnzeiträumen. Sie haben außerdem gelernt, wie man Benutzerkonten mit dem Befehl passwd sperrt und entsperrt, um den Anmeldezugriff zu steuern. Zur Erhöhung der Systemsicherheit haben Sie die Konfiguration des SSH-Daemons geändert, um den direkten Root-Login zu deaktivieren – eine kritische Sicherheitsmaßnahme zum Schutz des privilegiertesten Kontos im System.
Darüber hinaus haben Sie Methoden zur sicheren Delegation von administrativen Privilegien mittels sudo untersucht. Sie haben die gängige Praxis kennengelernt, vollen Sudo-Zugriff zu gewähren, indem Sie einen Benutzer mit dem Befehl usermod zur wheel-Gruppe hinzufügen. Für eine präzisere Steuerung haben Sie den Befehl visudo verwendet, um die sudoers-Datei sicher zu bearbeiten und benutzerdefinierte Regeln zu erstellen. Diese ermöglichen es bestimmten Benutzern, festgelegte Befehle mit erweiterten Rechten auszuführen, ohne das Root-Passwort zu benötigen. Dieser Ansatz unterstützt das Prinzip der minimalen Rechtevergabe, indem Benutzern nur die Berechtigungen gewährt werden, die sie für ihre Aufgaben tatsächlich benötigen.



