### Gemeinsames Sorgerecht

#### Ein Überblick über Rechtetrennung in modernen Betriebssystemen

CC-BY-SA 2018-02-06 Helix/RaumZeitLabor

### Agenda

- warum braucht man Rechte?
- Rechtetrennung in Unix
- Erweiterungen in GNU/Linux
- Rechtetrennung in Windows
- Grenzen und Lücken.

#### Warum braucht man überhaupt

### Rechte?

### Authentifizierung vs. Autorisierung

### Subjekte und Objekte

- Subjekte greifen auf Objekte zu
- Nicht jedes Subjekt darf jedes Objekt benutzen
- Böse Subjekte schon gar nicht.

### Beispiele

- Subjekte:
  - Prozesse
- Objekte:
  - Dateien
  - Ordner
  - Sockets
  - Prozesse
  - virtueller Speicher.

#### Rechtetrennung in

### Unix / POSIX

### Benutzer und Gruppen

- Besitzer (u)
- Gruppe (g)
- Andere (o)
- Alle (a).

### Dateirechte

Bei jeder Datei:

`u g o a`

und für jedes Besitzverhältnis

`r w x`

### Oktale Notation

- r = 4
- w = 2
- x = 1

Ausrechnen:

- r + x = 4 + 1 = 5
- r + w = 6
- r + w + x = 7
- w + x = 3.

### Oktal notierte Dateirechte

    % ls -l datei.txt
    -rw-rw-r--. 1 helix helix 0  5. Feb 19:17 datei.txt

    % chmod 777 datei.txt
    % ls -l datei.txt
    -rwxrwxrwx. 1 helix helix 0  5. Feb 19:17 datei.txt

### Berechtigungen ändern

- Der Besitzer darf das, Gruppen nicht
- Root darf eh alles.

### ACLs

- pro Benutzer (u)
- pro Gruppe (g)
- Rechtemaske (m)
- Benutzer, die nicht in Gruppen oder ACL sind (o).

#### Erweiterungen in

### GNU/Linux

### Capabilities (Fähigkeiten)

- mit seccomp-Erweiterung verfügbar
- derzeit 35 Stück im Linux-Kernel
- Beispiele:
  chown, setuid, setgid, net_raw, net_bind_service, …
- fallenlassen möglich und erwünscht.

### Namespaces

- Leichtgewichtige Prozess-Virtualisierung
- Isolierung: Ein Prozess hat eine andere Sicht auf das System
- Kein Hypervisor (wie bei VMs)
- Besonders nützlich: netns / veth
- Weitere Namespaces: PID, UTS (hostname), Mount, user.

### Control Groups

- regeln den Zugriff auf Systemressourcen
- Implementieren Möglichkeiten zur Steuerung der Auslastung
- RAM, CPU, Netzwerkprioritäten, Geräte, etc.

### Mandatory Access Controls

Geben jedem Benutzer und jeder Gruppe einen Kontext und Freigaben für ihre Arbeit mit "Regeln".

#### Beispiele:

- SELinux
- AppArmor
- Smack
- TOMOYO

Die meisten Systeme nutzen Linux Security Modules im Kernel.

#### Übersicht über das Rechtemodell in GNU/Linux

### MAC vs. DAC, RBAC

### Was kann man damit machen?

- Sandbox (chroot, firejail)
- Container (LXC, Docker)
- VMs (VirtualBox, VMWare, KVM).

#### Natürlich gibt es Rechtetrennung auch in

### Windows

### Das Dateisystem

- i.d.R. NTFS
- hat auch Benutzer, Gruppen
- POSIX-Modus
- und ACLs.

### Verwirrende Grafik aus einem Buch

### Die wichtigsten Komponenten

- SRM – Security checks
- LSASS/LSASRV – lokale System-Sicherheitsrichtlinienverwaltung
- SAM – Service/DB mit Benutzer- und Gruppendaten
- HAL, KSecDD – Hardware-Abstraktion
- AppLocker – MAC.

### Kommunikation der Komponenten

### Benutzerkontensteuerung

### Gegen was Rechtemanagement nicht hilft

- Kernel-Bugs (ring0)
- Fehler im Rechtemanagement (Bugs/Konfiguration)
- Hardware-Bugs
- verwanzte Hardware
- BENUTZER.

#### Quellen

- Kerberos – akreon (DeviantArt)
- Understanding and Hardening Linux Containers (NCC Group Whitepaper)
- Windows Internals Part 1 (6th Edition)
- Label based Mandatory Access Control on PostgreSQL (PGcon2011, Kohei KaiGai)

### Danke für's Zuhören!