Benutzer und Gruppen unter Linux
Benutzer und Gruppen werden in Linux ebenso wie in Windows definiert. Unter Windows geschieht das im beruflichen Umfeld meist über Active Directory (AD). In Linux sieht die Welt etwas anders aus.
Viele haben allerdings Mühe, korrekt mit Benutzern und Gruppen umzugehen. Oft will man sich nicht ab- oder mit einem anderen Benutzer anmelden. Der eigene Account soll alles können, was man für die Arbeit braucht - ohne ständiges Anmelden oder erneutes Authentifizieren.
Genau hier liegt das Problem: Die Benutzer haben zu viele Rechte.
Erläuterung zu Active Directory (AD)
Active Directory ist der von Microsoft mit Windows 2000 eingeführte Verzeichnisdienst.
Kernkomponente ist Active Directory Domain Services (AD DS). Er dient als zentrales Verzeichnis für Benutzer, Computer, Gruppen und weitere Ressourcen in einem Windows-Netzwerk - vergleichbar mit einem Telefonbuch, das Rufnummern den jeweiligen Anschlüssen zuordnet.
Wie viel soll ein Benutzer können?
Ein normaler Benutzer braucht nicht viele Rechte.
Hat er zu viele, ist das schlecht für das Geschäft.
Man muss sich immer vor Augen führen: Wird ein System kompromittiert und der Angreifer übernimmt den Benutzeraccount, dann kann er genau das, was dieser Benutzer darf.
Trotzdem vergeben viele leichtfertig immer mehr Berechtigungen.
Ein „normaler“ Benutzer soll sich am System anmelden und die Anwendungen starten können, die er für seine Arbeit benötigt.
Um verarbeitete Informationen zu speichern, braucht er Schreibrechte auf ein Dateisystem - lokal oder auf einem Server.
Damit ist der Bedarf im Wesentlichen gedeckt; weitere Rechte sind für einen normalen Benutzer nicht nötig.
Was ist mit dem chef?
Ein chef braucht keine Berechtigugen auf jedes System - es kann sein, dass ein chef in meheren gruppen eingetragen wird, aber nicht in allen! Wenn ein chef bspw. bei einem server genauer reinschauen möchte, dann geht der zu dem administrator - sein benutzer soll keine rechte erhalten für irgendwelche einsichten und möglichkeiten zum konfigurieren oder dergleichen. Das ist schlicht weg nicht notwendig.
Was ist mit dem Chef?
Ein Chef braucht keine umfassenden Berechtigungen auf jedem System. Er kann in mehreren Gruppen eingetragen sein, aber nicht in allen. Möchte er sich einen Server genauer ansehen, wendet er sich an den Administrator - sein Benutzerkonto erhält keine zusätzlichen Rechte für Konfiguration oder Einsicht. Das ist schlicht nicht notwendig.
Merke:
Ein Chef ist ein normaler Benutzer des Systems.
Benötigt der Chef Administrationsrechte, legt er den „Chef-Hut“ ab und meldet sich als Administrator an. Das bedeutet: Abmelden mit dem normalen Account und erneute Anmeldung mit einem dedizierten Administrator-Benutzer.
Keine Sonderbehandlungen, keine Ausnahmen für das Chef-Konto.
Was ist mit dem Administrator?
Administratoren besitzen in vielen Firmen zu weitreichende Berechtigungen.
Ein Administrator sollte nur Zugriff auf das eine System haben, für das er verantwortlich ist - nicht mit demselben Account auf alle Server der Firma.
Ein zentraler All-Access-Administrator ist ein No-Go.
Dennoch sieht man es häufig: Ein einzelner Administrator-Account kann unternehmensweit alles.
Solche Zustände müssen konsequent verhindert werden.
Wie sieht das bei Windows aus?
Eine bessere Praxis ist das Prinzip des „Least Privilege“ - also die Vergabe von nur so vielen Rechten wie unbedingt nötig. So lässt sich die Sicherheit deutlich erhöhen.
Wichtige Massnahmen:
-
Prinzip der minimalen Berechtigungen
Jeder Benutzer - auch Administratoren - erhält nur die Rechte, die für seine Aufgaben zwingend erforderlich sind. Administratorrechte werden nicht standardmässig vergeben. -
Verwendung von Gruppenkonten
Statt einem einzelnen Administrator-Account umfassenden Zugriff zu gewähren, werden Gruppen erstellt, die für bestimmte administrative Aufgaben auf definierten Servern zuständig sind. Jedes Konto hat nur die Rechte, die für diese Aufgaben notwendig sind. -
Just-in-Time-Privileged Access
Administrative Zugriffe werden zeitlich begrenzt und nur bei Bedarf freigeschaltet. Administratoren stellen eine Zugriffsanfrage, die genehmigt werden muss, bevor sie vorübergehend erhöhte Berechtigungen erhalten. -
Zwei-Faktor-Authentifizierung (2FA)
Administrator-Konten sollten grundsätzlich mit 2FA abgesichert sein, sodass neben dem Passwort ein zweiter Faktor erforderlich ist. -
Audit und Überwachung
Alle Administrator-Aktivitäten müssen protokolliert und regelmässig überprüft werden, um verdächtige Aktionen schnell zu erkennen. -
Regelmässige Überprüfung der Berechtigungen
Benutzerkonten und ihre Rechte sollten in festen Intervallen kontrolliert und nicht mehr benötigte Berechtigungen konsequent entfernt werden.
Bei Linux sieht das etwas anders aus
Auch unter Linux können ähnliche Sicherheitspraktiken eingesetzt werden, um den Zugriff auf Systeme zu schützen. Wichtige Empfehlungen:
-
Prinzip der minimalen Berechtigungen
Benutzern und Administratoren nur die Rechte geben, die für ihre jeweiligen Aufgaben erforderlich sind. Standardbenutzer erhalten keine administrativen Rechte. -
Separate Benutzerkonten
Für einzelne Administrationsaufgaben eigene Konten anlegen. Jedes Konto bekommt nur die nötigen Berechtigungen und bleibt auf bestimmte Server oder Aufgaben beschränkt. -
Sudo-Konfiguration
Statt einem einzigen Administrator-Account uneingeschränkten Zugriff zu geben, sudo verwenden, um einzelnen Benutzern temporär erhöhte Rechte zu gewähren. So können Administratoren gezielt Aufgaben ausführen, während privilegierte Operationen kontrolliert bleiben. -
Gruppen verwenden
Gruppen bündeln gemeinsame Berechtigungen. Erstelle Gruppen, die auf bestimmte Server oder Aufgabenbereiche beschränkt sind, und weise nur die passenden Benutzer zu. -
Schlüsselbasierte Authentifizierung
Nur autorisierte Benutzer dürfen per SSH zugreifen. Nutze Schlüssel anstelle von Passwörtern, am besten mit dem Algorithmus ed25519.- Alte Schlüssel auf dem Server löschen und neue ed25519-Schlüssel generieren.
- SSH so konfigurieren, dass ausschliesslich ed25519 akzeptiert wird.
- Der zugreifende Benutzer muss Mitglied der Gruppe ssh-user sein, sonst klappt der Login nicht.
Mehr dazu im Abschnitt Konfiguration SSH.
-
Audit und Überwachung
Ein zentrales Protokollierungssystem einrichten, Administratoraktivitäten überwachen und die Logs regelmässig auf verdächtige Vorgänge prüfen. -
Regelmässige Überprüfung der Berechtigungen
Benutzerkonten, Gruppenmitgliedschaften und Rechte in festen Abständen kontrollieren und unnötige oder übermässige Zugriffe konsequent entfernen.
Wie sieht es mit Ausnahmen aus?
Im System gibt es keine Ausnahmen.
Unter Linux lässt sich das zum Glück strikt umsetzen.
In Active Directory kann man zwar „reinwurschteln“, sollte es aber nicht: Sonderrechte werden dort leicht vergessen.
Verlässt ein Benutzer mit solchen Rechten die Firma, bleibt dessen Konto oft nur deaktiviert - und kann jederzeit wieder aktiviert werden, inklusive aller Sonderrechte.
Grundsatz:
Keine Sonderrechte vergeben.
Wenn ein Benutzer einmal speziellen Zugriff benötigt, wird das über reguläre Benutzer- und Gruppenzuweisungen geregelt - keine Schnellschüsse.
Benutzerkonten, die nicht mehr benötigt werden, werden gelöscht, nicht nur deaktiviert.
Wenn ein Mitarbeiter nach Monaten zurückkehrt, wird er neu angelegt und erhält die Berechtigungen, die zu seinen aktuellen Aufgaben passen.
Keine Ausnahmen.
Sonderfall: sudo
sudo ist ein spezielles Werkzeug:
Damit lassen sich systemrelevante Befehle ausführen - und wer dauerhaft mit sudo arbeitet, bewegt sich faktisch als root.
Das ist gefährlich.
Sinnvoll ist es, beim Aufruf den Parameter -k zu verwenden, damit das Passwort sofort wieder verworfen wird.
Bei manchen Linux-Distributionen wird sudo automatisch installiert und der erste Benutzer der gleichnamigen Gruppe hinzugefügt.
Debian macht das nicht:
Es existieren weder Benutzer noch Gruppe „sudo“.
Wer diese Funktion möchte, kann sie nachinstallieren - auf Servern ist das nicht zu empfehlen.
Begründung:
Ein Server ist kein System, auf dem man ständig arbeitet.
Man muss nicht permanent darauf zugreifen.
Nimm dir die Zeit und melde dich bei Bedarf direkt als root an (su -).
Das ist sicherer.
Auf einem privaten Rechner oder Laptop sieht es anders aus:
Hier kannst du sudo bedenkenlos installieren und deinen Benutzer der Gruppe sudo hinzufügen - aber nicht auf produktiven Servern.
Der root und SSH
In vielen Firmen erlebe ich, dass man sich per SSH direkt als root anmelden kann - ein absolutes No-Go.
SSH-Zugriffe erfolgen immer mit einem normalen Benutzerkonto, nie mit root.
Hat man sich verbunden, kann man bei Bedarf mit su - zu root wechseln, die notwendigen Arbeiten erledigen und sich danach wieder abmelden.
Wenn ich in einer Firma einen Server per SSH öffne und sofort als root eingeloggt bin, stehen mir die Haare zu Berge.
Im Fall eines Angriffs hätte ein Angreifer sofort den kompletten Root-Zugang - geschenkt.
Deshalb:
In der SSH-Serverkonfiguration muss root für direkte Logins gesperrt sein.
Merke:
permitrootlogin no
Das Zahlenspiel der Berechtigungen
Alles steht und fällt mit den Benutzern und den definierten Gruppen.
Legt Benutzer und unterschiedliche Gruppen an - aber überlegt genau, welcher Benutzer tatsächlich in welche Gruppe gehört.
Beim Auflisten von Verzeichnissen erkennt man das Berechtigungsschema sofort, z. B.:
-rwxrwxrwx it it 55K 14. Mai 14:07 test.txt
Das rwx teilt sich in drei Bereiche: Eigentümer, Gruppe, Rest der Welt. Die ersten drei Zeichen stehen für den Eigentümer, die nächsten drei für die Gruppe und die letzten drei für alle anderen.
-
r - read (lesen)
-
w - write (schreiben)
-
x - execute (ausführen)
Für jede der drei Kategorien (Eigentümer, Gruppe, Welt) wird separat festgelegt, welche Rechte gelten.
Die numerische Schreibweise basiert auf festen Werten:
-
r = 4
-
w = 2
-
x = 1
Durch Addition erhält man die jeweilige Berechtigungszahl. Beispiele:
-
6 = 4 + 2 (lesen + schreiben)
-
7 = 4 + 2 + 1 (lesen + schreiben + ausführen)
Für alle drei Bereiche kombiniert man diese Werte zu einem dreistelligen Code, z. B. 644:
-
6 für den Eigentümer
-
4 für die Gruppe
-
4 für alle anderen
Typische Vorgaben:
-
Dateien: 644
-
Verzeichnisse: 755
Sollen mehrere Benutzer auf ein Verzeichnis zugreifen, erstellt man eine Gruppe und fügt die betreffenden Benutzer hinzu.
Alle Mitglieder dieser Gruppe erhalten dieselben Rechte - keine Sonderzugriffe, keine Ausnahmen.
So bleibt klar geregelt, wer worauf zugreifen darf, und niemand wird „vergessen“.
Der Benutzer „rwx“
Wer etwas Spass haben möchte, kann einen Benutzer mit dem Namen rwx anlegen.
Dazu wird automatisch auch eine gleichnamige Gruppe erstellt.
Beim Anzeigen von Dateiberechtigungen sorgt das für Verwirrung, da in der Ausgabe sowohl Benutzer als auch Gruppe „rwx“ heissen - ideal, wenn man Kollegen testen will, die beim Lesen der Rechte noch unsicher sind.
Technisch ist ein Benutzer mit diesem Namen völlig zulässig.
Es steht nichts im Weg, einen solchen Account anzulegen - feel free und geniesst den Effekt.
Erstellung von Linux-Benutzern
-
Benutzer [username] mit eigenem Home-Verzeichnis anlegen:
useradd -m [username] -
Benutzer test mit Home-Verzeichnis /testordner anlegen:
useradd -m -d /testordner test -
Benutzer test mit Home-Verzeichnis /testordner und Ablaufdatum 2098-07-16 anlegen:
useradd -m -d /testordner -e 2098-07-16 test
Anmeldung als anderer Benutzer
Unter Linux kann man sich zur Laufzeit mit einem anderen Benutzerkonto anmelden.
Dazu dient der Befehl:
su [username]
Linux-Benutzer löschen
Früher oder später müssen Benutzerkonten entfernt werden.
Das lässt sich einfach erledigen, ohne das System neu aufzusetzen.
-
Benutzerkonto löschen
userdel [username] -
Benutzerkonto inkl. Home-Verzeichnis und Mailqueue löschen
userdel -r [username]
Anmeldung als root
Es gibt mehrere Möglichkeiten, sich als root anzumelden.
-
Häufig genutzte Variante
sudo suWechselt in eine Root-Shell, bleibt jedoch im aktuellen Verzeichnis - oft nicht ideal.
-
Sauberer Wechsel in die Root-Umgebung
su -Meldet sich vollständig als root an und wechselt in das Home-Verzeichnis /root. -
Alternative über sudo
sudo -i
Hat denselben Effekt wie su - und startet ebenfalls in /root.
-
Einmalige Ausführung mit sofortigem Passwort-Reset
sudo -k <befehl>Führt genau einen Befehl mit Root-Rechten aus und verwirft das Passwort anschliessend sofort aus dem Cache - praktisch, wenn mehrere Nutzer am System arbeiten.