Einführung
Unter Linux gehören die Verwaltung von Benutzerberechtigungen und die Zugriffskontrolle zu den grundlegenden Aufgaben der Systemadministration und Sicherheit. Mit dem Befehl sudo (kurz für „superuser do“) können berechtigte Benutzer Befehle mit erhöhten Rechten ausführen, normalerweise mit den Rechten des Superusers oder des Kontos root.
In diesem Lab lernen Sie, wie Sie Benutzern in einer Linux-Umgebung Berechtigungen erteilen und entziehen. Sie fügen Benutzer zur Gruppe sudo hinzu, damit sie administrative Aufgaben ausführen können, und beschränken ihre Berechtigungen auf bestimmte Befehle. Diese Fähigkeiten sind wichtig, um Systeme zu schützen, in denen der Zugriff auf sensible Vorgänge sorgfältig kontrolliert werden muss.
Benutzerverwaltung und sudo-Grundlagen
In diesem Schritt lernen Sie die Benutzerverwaltung unter Linux und die Grundlagen des Befehls sudo kennen. Sie erstellen einen neuen Benutzer und erfahren, wie Sie ihm administrative Rechte erteilen.
Was ist sudo?
Mit dem Befehl sudo können berechtigte Benutzer Befehle mit den Sicherheitsrechten eines anderen Benutzers ausführen, in der Regel mit den Rechten des Superusers (root). So lassen sich administrative Aufgaben erledigen, ohne sich als Benutzer root anzumelden. Das gilt als bewährte Sicherheitsmaßnahme.
Einen neuen Benutzer erstellen
Erstellen Sie zunächst ein neues Benutzerkonto. Öffnen Sie ein Terminal und führen Sie diesen Befehl aus:
sudo adduser trusted_advisor
Sie werden aufgefordert, ein Passwort und einige optionale Angaben für den neuen Benutzer einzugeben. Für dieses Lab können Sie ein einfaches Passwort wie password123 festlegen. Lassen Sie die übrigen Felder leer, indem Sie jeweils die Eingabetaste drücken.
Die Ausgabe sollte ungefähr so aussehen:
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Benutzerinformationen überprüfen
Prüfen Sie den Inhalt der Datei /etc/passwd, um sicherzustellen, dass der Benutzer angelegt wurde:
grep trusted_advisor /etc/passwd
Die Ausgabe sollte eine Zeile mit den Benutzerinformationen enthalten.
sudo-Berechtigungen erteilen
Um einem Benutzer sudo-Berechtigungen zu erteilen, fügen Sie ihn der Gruppe sudo hinzu. Unter Ubuntu dürfen Mitglieder dieser Gruppe den Befehl sudo verwenden. Führen Sie dazu diesen Befehl aus:
sudo usermod -aG sudo trusted_advisor
Der Befehl fügt (-a) den Benutzer trusted_advisor zur Gruppe sudo hinzu (-G sudo). Der Benutzer kann nun Befehle mit administrativen Rechten ausführen.
sudo-Zugriff überprüfen
Wechseln Sie zum Benutzerkonto, um den sudo-Zugriff zu überprüfen. Versuchen Sie anschließend, den Inhalt des Verzeichnisses /root aufzulisten, auf das normalerweise nur der Benutzer root zugreifen kann:
su - trusted_advisor
Geben Sie bei der Aufforderung das Passwort ein, das Sie für diesen Benutzer festgelegt haben. Führen Sie anschließend diesen Befehl aus:
sudo ls /root
Bei der ersten Verwendung von sudo werden Sie erneut nach dem Passwort gefragt. Nach der Eingabe sollten Sie den Inhalt des Verzeichnisses /root sehen. Das bestätigt, dass der Benutzer sudo-Berechtigungen hat.
Beenden Sie zum Schluss die Sitzung des Benutzers trusted_advisor, um zu Ihrem ursprünglichen Benutzer zurückzukehren:
exit
sudo-Zugriff mit der sudoers-Datei einschränken
In diesem Schritt lernen Sie, sudo-Berechtigungen eines Benutzers mithilfe der sudoers-Datei auf bestimmte Befehle zu beschränken. Damit setzen Sie das Prinzip der minimalen Rechte um: Benutzer sollten nur die Berechtigungen erhalten, die sie für ihre Aufgaben benötigen.
Die sudoers-Datei verstehen
In der Datei /etc/sudoers ist festgelegt, wer den Befehl sudo verwenden darf und welche Befehle ausgeführt werden dürfen. Bearbeiten Sie diese Datei niemals direkt mit einem gewöhnlichen Texteditor. Syntaxfehler könnten dazu führen, dass Sie sich selbst aus dem System aussperren. Verwenden Sie stattdessen immer den Befehl visudo, der die Syntax vor dem Speichern überprüft.
Umfassenden Gruppenzugriff entfernen
Berechtigungen aus passenden sudo-Regeln werden miteinander kombiniert. Eine Regel für bestimmte Befehle hebt den umfassenden Zugriff durch die Gruppe sudo nicht auf. Entfernen Sie diesen umfassenden Zugriff zuerst in Ihrer ursprünglichen labex-Sitzung:
sudo deluser trusted_advisor sudo
Öffnen Sie für Tests eine neue Sitzung mit su - trusted_advisor, damit die aktualisierte Gruppenmitgliedschaft übernommen wird.
Die sudoers-Datei bearbeiten
Verwenden Sie zum sicheren Bearbeiten der sudoers-Datei den Befehl visudo:
sudo EDITOR=vim visudo
Damit wird ausdrücklich Vim geöffnet, sodass die folgenden Tasteneingaben zum Bearbeiten und Speichern für diesen Editor gelten. Drücken Sie G, um zur letzten Zeile zu springen, und dann o, um eine neue Zeile im Einfügemodus zu öffnen.
Die Syntax der sudoers-Datei verstehen
Ein sudo-Eintrag in der sudoers-Datei hat grundsätzlich folgende Syntax:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Dabei gilt:
user_or_group: Der Benutzer oder die Gruppe, für den beziehungsweise die diese Regel gilthost: Der Hostname, für den die Regel gilt (normalerweiseALL)run_as_user: Der Benutzer, als der die Befehle ausgeführt werden (root, wenn nurrootzulässig ist, oderALLfür beliebige Benutzer)run_as_group: Die Gruppe, als der die Befehle ausgeführt werden (kann weggelassen werden)NOPASSWD: Ein optionales Tag, mit dem Befehle ohne Passworteingabe ausgeführt werden könnencommands: Die einzelnen Befehle, die mitsudoausgeführt werden dürfen
sudo-Zugriff auf bestimmte Befehle beschränken
Gehen Sie ans Ende der Datei und fügen Sie die folgende Zeile hinzu. Sie erlaubt trusted_advisor, ausschließlich die Befehle cp und mv ohne Passwort auszuführen:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Fügen Sie außerdem diese separate Zeile hinzu, um in diesem Container ein eigenes sudo-Protokoll zu aktivieren. Der Container stellt /var/log/auth.log nicht bereit:
Defaults logfile="/var/log/sudo.log"
Drücken Sie Esc, geben Sie :wq ein und drücken Sie die Eingabetaste, um die Änderungen zu speichern und Vim zu schließen. Meldet visudo einen Syntaxfehler, drücken Sie e, um die Datei erneut zu bearbeiten und den Fehler zu korrigieren. Um die Änderungen in Vim zu verwerfen, drücken Sie Esc, geben Sie :q! ein und drücken Sie die Eingabetaste.
Bei dieser Übung geht es nur darum, passende Befehle zu erkennen: Unbeschränkter Zugriff auf cp oder mv mit Root-Rechten kann sensible Dateien überschreiben und ist keine sichere Einschränkung für den Produktionseinsatz.
Den eingeschränkten sudo-Zugriff testen
Testen Sie nun, ob der eingeschränkte sudo-Zugriff wie erwartet funktioniert. Kehren Sie zuerst zum Lab-Arbeitsverzeichnis zurück und erstellen Sie eine Testdatei:
cd /home/labex/project
echo "This is a test file" > important_file.txt
Wechseln Sie anschließend zum Benutzer trusted_advisor:
su - trusted_advisor
Geben Sie bei der Aufforderung das Passwort ein.
Versuchen Sie, die Datei in das Verzeichnis root zu kopieren. Dieser Vorgang sollte erlaubt sein:
sudo cp /home/labex/project/important_file.txt /root/
Der Befehl sollte erfolgreich ausgeführt werden, ohne nach einem Passwort zu fragen.
Versuchen Sie nun, einen nicht freigegebenen Befehl wie cat auszuführen:
sudo -n cat /root/important_file.txt
Der Befehl muss fehlschlagen, weil cat nicht erlaubt ist. Die Option -n verhindert eine Passwortabfrage. Die Fehlermeldung kann darauf hinweisen, dass ein Passwort erforderlich ist oder der Befehl nicht erlaubt ist. Der Dateiinhalt darf nicht ausgegeben werden.
Beenden Sie die Sitzung des eingeschränkten Benutzers, bevor Sie die Kopie überprüfen, denn auch ls gehört nicht zu den erlaubten Befehlen:
exit
Überprüfen Sie als labex, ob die Datei kopiert wurde:
sudo ls /root/
Die Ausgabe sollte important_file.txt enthalten.
Testdatei entfernen
Entfernen Sie zum Aufräumen die Testdatei:
sudo rm /home/labex/project/important_file.txt /root/important_file.txt
sudo-Protokolle und Sicherheitsaspekte
In diesem Schritt lernen Sie die Protokollierung von sudo-Aktivitäten und bewährte Sicherheitsmaßnahmen kennen. Die Überwachung der sudo-Nutzung ist für Sicherheitsprüfungen und die Nachvollziehbarkeit wichtig.
sudo-Protokollierung
Wenn Benutzer Befehle mit sudo ausführen, werden diese Aktionen protokolliert. So entsteht ein Prüfprotokoll, das bei der Sicherheitsüberwachung und der Fehlerbehebung hilfreich sein kann.
Bei Ubuntu-Installationen mit einem Systemprotokollierungsdienst wird häufig /var/log/auth.log verwendet. Dieser Container nutzt stattdessen das in Schritt 2 eingerichtete separate Protokoll. Prüfen Sie als labex die letzten sudo-Aktivitäten:
sudo tail -n 10 /var/log/sudo.log
Dieser Befehl zeigt die letzten 10 sudo-bezogenen Protokolleinträge an. Die Ausgabe sollte Zeitstempel, Benutzernamen und die mit sudo ausgeführten Befehle enthalten.
Bewährte Sicherheitsmaßnahmen für sudo
Beachten Sie beim Verwalten von sudo-Berechtigungen die folgenden bewährten Maßnahmen:
Prinzip der minimalen Rechte: Benutzer sollten nur die Berechtigungen erhalten, die sie für ihre Aufgaben benötigen.
Bestimmte Befehle freigeben: Legen Sie genau fest, welche Befehle ein Benutzer ausführen darf, anstatt umfassenden sudo-Zugriff zu gewähren.
Passworteingabe verlangen: Stellen Sie bei sensiblen Vorgängen sicher, dass Benutzer bei der Verwendung von
sudoihr Passwort eingeben müssen.Regelmäßige Prüfungen: Überprüfen Sie regelmäßig die sudo-Protokolle und die sudoers-Datei, um eine korrekte Konfiguration sicherzustellen.
Nicht mehr benötigte Berechtigungen entziehen: Entfernen Sie Benutzer umgehend aus der Gruppe
sudo, wenn sie keine erhöhten Rechte mehr benötigen.
sudo-Zugriff entfernen
In Schritt 2 haben Sie trusted_advisor bereits aus der Gruppe sudo entfernt. Um auch den verbleibenden, auf bestimmte Befehle beschränkten Zugriff zu widerrufen, entfernen Sie zusätzlich die entsprechende Regel:
sudo EDITOR=vim visudo
Drücken Sie Esc, geben Sie /^trusted_advisor ein und drücken Sie die Eingabetaste, um die Regel zu suchen. Drücken Sie dd, um die gesamte Zeile zu löschen:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Lassen Sie die Zeile Defaults logfile stehen. Geben Sie :wq ein und drücken Sie die Eingabetaste, um die Änderungen zu speichern und Vim zu schließen. Überprüfen Sie die Gruppenmitgliedschaft:
groups trusted_advisor
Die Ausgabe darf sudo nicht enthalten.
Widerrufenen sudo-Zugriff testen
Überprüfen Sie nun, ob der Benutzer keine Befehle mehr mit sudo ausführen kann:
su - trusted_advisor
Geben Sie bei der Aufforderung das Passwort ein.
Versuchen Sie, einen Befehl mit sudo auszuführen:
sudo -n ls /root
Nun sollte die Meldung trusted_advisor is not in the sudoers file erscheinen. Der Befehl muss fehlschlagen.
Beenden Sie die Sitzung des Benutzers trusted_advisor:
exit
sudo-Zugriff wieder erteilen
Fügen Sie den Benutzer für dieses Lab wieder zur Gruppe sudo hinzu:
sudo usermod -aG sudo trusted_advisor
Überprüfen Sie, ob der Benutzer wieder Mitglied der Gruppe sudo ist:
groups trusted_advisor
Die Ausgabe sollte sudo nun in der Liste der Gruppen enthalten.
Zusammenfassung
In diesem Lab haben Sie wichtige Techniken zur Linux-Benutzerverwaltung und zur Kontrolle von Berechtigungen kennengelernt. Sie haben die folgenden Konzepte und Arbeitsschritte praktisch angewendet:
Benutzer erstellen: Sie haben gelernt, mit dem Befehl
adduserneue Benutzerkonten anzulegen.sudo-Berechtigungen erteilen: Sie haben erfahren, wie Sie Benutzern administrative Rechte erteilen, indem Sie sie zur Gruppe
sudohinzufügen.sudo-Zugriff einschränken: Sie haben das Prinzip der minimalen Rechte umgesetzt, indem Sie den sudo-Zugriff eines Benutzers über die sudoers-Datei auf bestimmte Befehle beschränkt haben.
sudo-Aktivitäten protokollieren und überwachen: Sie haben sich mit der Protokollierung von sudo-Aktivitäten und der Bedeutung der Protokollüberwachung für die Sicherheit beschäftigt.
sudo-Zugriff verwalten: Sie haben gelernt, Benutzern sudo-Berechtigungen je nach Bedarf zu erteilen und zu entziehen.
Diese Fähigkeiten sind wichtige Grundlagen der Linux-Systemadministration und -Sicherheit. Wenn Sie Benutzerberechtigungen sorgfältig verwalten, können Sie ein sicheres System betreiben, in dem Benutzer auf die benötigten Ressourcen zugreifen können, ohne die Integrität oder Sicherheit des Systems zu gefährden.



