Apparmor From Scratch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 8: | Zeile 8: | ||
*Wir machen eine kopie von "cat" mit den Namen "katze" | *Wir machen eine kopie von "cat" mit den Namen "katze" | ||
*Für diese erstellen wir dann ein apparmor-Profil | *Für diese erstellen wir dann ein apparmor-Profil | ||
| + | =Einige wichtige Punkte für die Profildefinition= | ||
| + | *Sie können sowohl absolute Pfade als auch Glob-Muster einbeziehen. | ||
| + | *Sie können beispielsweise entweder den absoluten Pfad /etc/passwd hinzufügen oder alle Dateien über das Glob-Muster /tmp/* einbinden lassen. | ||
| + | *Sie können einen oder mehrere Zugriffstypen auf die Datei aus der folgenden Liste haben | ||
| + | **r ⇒ bietet Lesezugriff auf die Datei | ||
| + | **w ⇒ bietet Schreibzugriff auf die Datei | ||
| + | **m ⇒ Memory Map als ausführbar. Es wird für Programmdateien oder *.so-Dateien verwendet | ||
| + | **l ⇒ bietet Erstellung für Symlinks | ||
| + | **k ⇒ Sperren von Zeiten. Dies wird normalerweise verwendet, wenn mehr als ein Prozess die Datei öffnen könnte, zum Beispiel das /tmp-Verzeichnis. Es wird meistens in Verbindung mit Schreibzugriff verwendet | ||
| + | *Es gibt weitere Berechtigungen wie ix, Px, Cx und Ux, aber in den meisten Fällen werden die oben genannten verwendet | ||
| + | *Unterstützt auch Zugriffskontrollen von Fähigkeiten, Netzwerken, DBus, PTrace und UNIX-Domain-Sockets. | ||
| + | *Auch Variablen werden im Profil unterstützt, zum Beispiel @{MY_VAR}. | ||
| + | *Einige gemeinsame Variablen sind in /etc/apparmor.d/tunables/global definiert. | ||
| + | *Sie können #include <tunables/global>-Makros am Anfang der Datei haben | ||
| + | *Explizite Verweigerungsregeln werden unterstützt. | ||
| + | *Dies haben wir bereits im letzten Beitrag besprochen | ||
| + | |||
=Quellen= | =Quellen= | ||
*https://tbhaxor.com/writing-apparmor-profile-from-scratch/ | *https://tbhaxor.com/writing-apparmor-profile-from-scratch/ | ||
Version vom 11. Mai 2022, 11:26 Uhr
Einführung
- Man kann fast jedes Profil für AppArmor im Community-Forum oder beim Projektautor erhalten
- Es gibt aber auch einige Tools zum Erstellen Ihres Profils von Grund auf bereitstellt
- Die geschieht sowohl interaktiv (unter Verwendung des Audit-Protokolls) als auch mit Hilfe von Vorlagen.
Konkret
- Wir wollen hier ein Programmprofil für das cat-Programm schreiben, das es daran hindert, den Inhalt der Dateien /etc/passwd und /etc/group zu lesen
- Jede andere Datei im /tmp-Verzeichnis und im Home-Verzeichnis soll aber gelesen werden können
- Wir machen eine kopie von "cat" mit den Namen "katze"
- Für diese erstellen wir dann ein apparmor-Profil
Einige wichtige Punkte für die Profildefinition
- Sie können sowohl absolute Pfade als auch Glob-Muster einbeziehen.
- Sie können beispielsweise entweder den absoluten Pfad /etc/passwd hinzufügen oder alle Dateien über das Glob-Muster /tmp/* einbinden lassen.
- Sie können einen oder mehrere Zugriffstypen auf die Datei aus der folgenden Liste haben
- r ⇒ bietet Lesezugriff auf die Datei
- w ⇒ bietet Schreibzugriff auf die Datei
- m ⇒ Memory Map als ausführbar. Es wird für Programmdateien oder *.so-Dateien verwendet
- l ⇒ bietet Erstellung für Symlinks
- k ⇒ Sperren von Zeiten. Dies wird normalerweise verwendet, wenn mehr als ein Prozess die Datei öffnen könnte, zum Beispiel das /tmp-Verzeichnis. Es wird meistens in Verbindung mit Schreibzugriff verwendet
- Es gibt weitere Berechtigungen wie ix, Px, Cx und Ux, aber in den meisten Fällen werden die oben genannten verwendet
- Unterstützt auch Zugriffskontrollen von Fähigkeiten, Netzwerken, DBus, PTrace und UNIX-Domain-Sockets.
- Auch Variablen werden im Profil unterstützt, zum Beispiel @{MY_VAR}.
- Einige gemeinsame Variablen sind in /etc/apparmor.d/tunables/global definiert.
- Sie können #include <tunables/global>-Makros am Anfang der Datei haben
- Explizite Verweigerungsregeln werden unterstützt.
- Dies haben wir bereits im letzten Beitrag besprochen