Linux Sicherheit - Benutzer- und Rechteverwaltung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Linux Sicherheit - Benutzer- und Rechteverwaltung

  • Die Benutzer- und Rechteverwaltung ist eine Kernkomponente der Systemsicherheit. Sie definiert, wer auf welche Ressourcen zugreifen darf, und legt fest, mit welchen Rechten Prozesse laufen dürfen. Fehlerhafte Rechtevergabe gehört zu den häufigsten Ursachen für Privilege-Escalation-Angriffe. Eine saubere Rechtepolitik ist daher Grundlage jeder Systemhärtung.*

Grundlagen

  • Jeder Benutzer besitzt eine eindeutige User-ID (UID) und ist mindestens einer Gruppe mit einer Group-ID (GID) zugeordnet.
  • Rechte werden in drei Ebenen vergeben: Benutzer (u), Gruppe (g) und andere (o).
  • Das klassische UNIX-Rechtesystem nutzt die Bits r (read), w (write) und x (execute).
  • Sonderrechte (SUID, SGID, Sticky Bit) erweitern dieses Konzept und erfordern besondere Vorsicht.

Benutzer und Gruppen anzeigen

  • id
  • getent passwd
  • getent group
  • cat /etc/passwd
  • cat /etc/group
  • Die Dateien /etc/passwd und /etc/group enthalten lokale Benutzer- und Gruppeninformationen.
  • Systembenutzer (UID < 1000) sollten nicht für Login verwendet werden.

Benutzer und Gruppen anlegen (sicher)

  • useradd -m -s /bin/bash alice
  • passwd alice
  • groupadd projekte
  • usermod -aG projekte alice
  • chage -d 0 alice
  • Jeder Benutzer sollte ein eigenes Konto besitzen. Kein Konto darf gemeinsam genutzt werden.
  • Root darf nicht für alltägliche Aufgaben verwendet werden.
  • Das Passwort-Ablaufdatum kann mit chage geprüft und angepasst werden.
  • pwck ← Prüft Konsistenz der Passwortdateien.

Dateiberechtigungen anzeigen und richtig setzen

  • ls -l /pfad/zur/datei
  • stat datei.txt
  • chmod 640 datei.txt
  • chown alice:projekte datei.txt
  • chgrp projekte datei.txt
setfacl -m u:alice:rwx datei.txt
getfacl datei.txt
  • Mit ACLs (Access Control Lists) lassen sich Rechte feiner steuern als mit Standard-UNIX-Bits.
  • Rechte sollten so restriktiv wie möglich gesetzt werden – Prinzip des geringsten Privilegs.

Standardrechte (umask)

  • umask
  • umask 027
  • Die umask legt fest, welche Bits beim Erstellen neuer Dateien entfernt werden.
  • Ein Wert von 027 bedeutet, dass Gruppe Schreibrechte und andere alle Rechte verlieren.
  • Restriktive Werte (027 oder 077) sind für sicherheitsrelevante Systeme zu empfehlen.

Sudo statt Root-Login

  • usermod -aG sudo alice
  • visudo
  • sudo whoami
  • sudo -l
  • Direkter Root-Login (ssh root@) sollte deaktiviert werden.
  • sudo ermöglicht kontrollierte Rechteerhöhung und protokolliert jede Nutzung.
  • Zugriffe werden in journald protokolliert und können mit auditd überwacht werden.
  • auditctl -w /etc/sudoers -p wa -k sudo_changes
  • ausearch -k sudo_changes
  • journalctl _COMM=sudo

Sonderrechte (SUID, SGID, Sticky Bit) - Kritisch!

  • Diese Rechte gehören zu den größten lokalen Sicherheitsrisiken in Linux-Systemen. Eine falsche Vergabe kann Root-Rechte ermöglichen.
  • SUID (Set User ID)*
  • Ein Programm mit gesetztem SUID-Bit läuft mit den Rechten des Dateibesitzers, meist root.
  • Wird eine SUID-Binary manipuliert, erhält der Angreifer Root-Rechte.
  • find / -perm -4000 -type f 2>/dev/null
  • ls -l /usr/bin/passwd
  • chmod u-s /pfad/unsicheres_programm
  • SUID darf niemals auf Shellskripte gesetzt werden – der Interpreter ruft Shells mit Root-Rechten auf!
  • Nur vertrauenswürdige, geprüfte Programme (z. B. /usr/bin/passwd, /usr/bin/sudo) dürfen SUID besitzen.
  • SGID (Set Group ID)*
  • Bei Programmen: Prozess läuft mit Gruppenrechten – kritisch!
  • Bei Verzeichnissen: neue Dateien erben Gruppenzugehörigkeit – nützlich bei gemeinsamen Projektverzeichnissen.
  • find / -perm -2000 -type f 2>/dev/null
  • chmod g-s /pfad/unsicheres_programm
  • chmod g+s /srv/projekte
  • SGID auf Programmen vermeiden, auf Verzeichnissen gezielt einsetzen.
  • Sticky Bit*
  • Verhindert, dass Benutzer im selben Verzeichnis Dateien anderer löschen können.
  • In /tmp standardmäßig aktiv und sicher.
  • chmod +t /tmp
  • ls -ld /tmp

Sicherheitswarnungen

  • SUID/SGID-Binaries gehören zu den häufigsten Privilege-Escalation-Vektoren in realen Angriffen.
  • SUID/SGID dürfen niemals auf Skripte, Compiler, Editoren oder Netzwerktools gesetzt werden.
  • Systeme sollten regelmäßig auf neue oder manipulierte SUID/SGID-Dateien geprüft werden.
  • Verdächtige Dateien sofort untersuchen und deren Herkunft klären.
  • find / -perm /6000 -type f 2>/dev/null
  • dpkg -S /pfad/datei ← Zugehöriges Paket prüfen
  • rpm -qf /pfad/datei ← Für RPM-basierte Systeme

POSIX-Capabilities als sichere Alternative

  • Anstelle des SUID-Bits können Programme gezielt mit einzelnen Fähigkeiten ausgestattet werden.
  • setcap cap_net_bind_service=+ep /usr/bin/myservice
  • getcap /usr/bin/myservice
  • Damit kann ein Programm z. B. Ports <1024 öffnen, ohne Root-Rechte zu erhalten.
  • Vorteil: geringeres Risiko, keine vollständige UID-Erhöhung.

Auditieren & Protokollierung

  • auditctl -w /usr/bin/passwd -p x -k passwd_usage
  • ausearch -k passwd_usage
  • ausearch -m USER_CMD
  • journalctl -u ssh
  • Sicherheitsrelevante Aktionen sollten über auditd oder zentrale Syslog-Server überwacht werden.
  • SUID-/SGID-Änderungen gehören in ein automatisiertes Überwachungssystem (z. B. Wazuh, Elastic, Graylog).

Quick Checklist

  • Nur notwendige Pakete und Dienste installieren.
  • Regelmäßig Sicherheitsupdates einspielen.
  • /tmp, /var/tmp und andere Schreibverzeichnisse mit noexec,nosuid,nodev mounten.
  • Restriktive umask (027 oder 077) global setzen.
  • sudo gezielt konfigurieren, keine globalen NOPASSWD-Ausnahmen.
  • SUID/SGID regelmäßig scannen und Änderungen dokumentieren.
  • Capabilities bevorzugen, wo möglich.
  • Inaktive Konten regelmäßig sperren oder löschen.
  • Root-Login via SSH deaktivieren (PermitRootLogin no).

Monitoring und Automatisierung

  • cronjob oder systemd-Timer: find / -perm /6000 -type f > /var/local/suid_sgid_list.txt
  • Baseline-Scan regelmäßig mit CMDB oder Versionskontrolle vergleichen.
  • Bei Abweichung: Alarm auslösen und forensisch prüfen.

Troubleshooting

  • Verlorenes SUID-Bit bei Systemtools: Paketintegrität prüfen.
  • dpkg -V coreutils
  • rpm -V coreutils
  • Neue unbekannte SUID-Dateien: sofort prüfen, ggf. isolieren.
  • Verdacht auf Angriff: Netzwerk trennen, forensisches Image erstellen, Logs sichern.
  • ausearch -m USER_LOGIN --success no
  • journalctl -t sudo -S today

Zusammenfassung

  • Sonderrechte sind ein notwendiges, aber gefährliches Werkzeug. Sie müssen gezielt, dokumentiert und regelmäßig überprüft werden.
  • SUID und SGID nur, wenn technisch unvermeidbar. Sticky Bit in gemeinsam genutzten Verzeichnissen Pflicht.
  • Besser: POSIX-Capabilities, restriktive umask, kontrolliertes sudo.
  • Prinzip: Minimalrechte, Dokumentation jeder Ausnahme, regelmäßige Audits und Monitoring.

Nützliche Befehle (Schnellreferenz)

  • find / -perm /4000 -type f 2>/dev/null
  • find / -perm /2000 -type f 2>/dev/null
  • find / -perm /6000 -type f 2>/dev/null
  • chmod u-s /pfad/datei
  • chmod g-s /pfad/datei
  • chmod +t /tmp
  • setcap cap_net_bind_service=+ep /usr/local/bin/myservice
  • getcap /usr/local/bin/myservice
  • auditctl -w /etc/sudoers -p wa -k sudo_changes
  • ausearch -k sudo_changes
  • journalctl -u ssh