Apparmor From Scratch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Test) |
|||
| Zeile 64: | Zeile 64: | ||
</pre> | </pre> | ||
| − | + | =Terminal 2= | |
| − | |||
*katze /etc/passwd | *katze /etc/passwd | ||
katze: /etc/passwd: Keine Berechtigung | katze: /etc/passwd: Keine Berechtigung | ||
Version vom 11. Mai 2022, 12:23 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
Profil für /bin/rcat wird erstellt
Es gibt zwei Möglichkeiten, die Profile für ein Programm zu erstellen
aa-genprof
- Mit aa-genprof können Sie ein Profil erstellen und die Binärdatei als Audit markieren.
- Danach werden Sie aufgefordert, die Binärdatei auszuführen, und dies erzeugt Protokolle in der Datei /var/log/audit/audit.log.
- Es wird dann diese Datei scannen und Ihnen automatisch Einträge und Optionen dafür anzeigen.
- Dies wird für laufende Programme/Anwendungen verwendetfür eine begrenzte Zeit (z. B. Webbrowser, Mailclient) und in diesem Fall /bin/rcat
aa-autodep
- Mit aa-autodep können Sie ein Profil erstellen, das sich auf mehrere Programme auswirkt,
- Die auf unbestimmte Zeit oder kontinuierlich über Neustarts hinweg ausgeführt werden. Zum Beispiel Webserver usw.
konkret
- Da der Befehl in diesem Fall für eine endliche Zeit eins ist, verwenden wir den Befehl aa-genprof zum Generieren des Profils.
- Um mit der Profilerstellung zu beginnen, führen Sie den Befehl gefolgt vom Pfad des Programms sudo aa-genprof /bin/katze aus.
- Dies dient dazu, eine grundlegende Profildatei zu erstellen und sie mit „Beschweren“ zu kennzeichnen.
Terminal 1
- aa-genprof /bin/katze
Aktualisiertes Profil für /usr/bin/katze wird geschrieben. /usr/bin/katze wird in den Complain-Modus versetzt. Bevor Sie beginnen, möchten Sie vielleicht prüfen, ob bereits ein Profil für das Programm besteht, das Sie einschränken möchten. Weitere Informationen können Sie auf der folgenden Wiki-Seite erhalten: https://gitlab.com/apparmor/apparmor/wikis/Profiles Profilerstellung: /usr/bin/katze Starten Sie die Anwendung, für die ein Profil erstellt werden soll, in einem anderen Fenster, und führen Sie die Funktionalität jetzt aus. Nach Abschluss dieses Vorgangs bitte unten »Durchsuchen« wählen, um in den Systemprotokollen nach AppArmor-Ereignissen zu suchen. Für jedes AppArmor-Ereignis haben Sie die Gelegenheit anzugeben, ob der Zugriff zugelassen oder verweigert werden soll. [(S)can system log for AppArmor events] / En(d)e
Terminal 2
- katze /etc/passwd
katze: /etc/passwd: Keine Berechtigung
/var/log/syslog
May 11 14:18:14 iandeb kernel: [ 201.510824] audit: type=1400 audit(1652271494.740:18): apparmor="ALLOWED" operation="open" profile="/usr/bin/katze" name="/etc/passwd" pid=689 comm="katze" requested_mask="r" denied_mask="r" fsuid=0 ouid=0