AppArmor/HowTo
AppArmor/HowTo - Sicherheitsframework für Linux
Beschreibung
- AppArmor ist ein Mandatory-Access-Control-(MAC)-Framework für Linux
- Prozesse werden durch Profile eingeschränkt, die erlaubte Zugriffe auf Dateien, Verzeichnisse, Netzwerke und Fähigkeiten definieren
- Auf Debian-basierten Systemen (z. B. Debian, Ubuntu) ist AppArmor typischerweise bereits installiert und beim Systemstart aktiv
- AppArmor wird häufig als einfacher zu verwaltende Alternative zu SELinux eingesetzt
- Als Mandatory Access Control (MAC) System kontrolliert es Anwendungen einzeln
- Für diese können in Profilen Zugriffsrechte festgelegt werden, die feiner als die allgemeinen Dateirechte sind
- Neben den vordefinierten können eigene Profile aufgestellt werden
- Für jedes Profil kann einer von drei Eingriffs-Modi gesetzt werden
- Zweck
Ziel ist die Begrenzung der Auswirkungen kompromittierter oder fehlerhafter Anwendungen
- Typische Kandidaten sind Netzwerkdienste, Browser, Mail- und Büroanwendungen sowie Interpreter für potentiell unsichere Inhalte
Algorithmus
- Ablauf (Kurzfassung)
- Prüfen, ob AppArmor installiert und aktiviert ist
- Netzwerkfähige Prozesse ohne Profil identifizieren
- Profil für einen ausgewählten Dienst erzeugen (ggf. automatisch) und mit Log-Daten verfeinern
- Profil in den passenden Modus (complain/enforce/audit) schalten
- Logs und ggf. Desktop-Benachrichtigungen auswerten
- Optional weitere Profile hinzufügen bzw. vorhandene Profile anpassen
Installation
Seit vielen Jahren wird AppArmor auf Debian-basierten Systemen standardmäßig mitinstalliert
- Falls Pakete fehlen, können diese nachinstalliert werden
sudo apt install apparmor
- Hilfsprogramme
sudo apt install apparmor-utils apparmor-notify apparmor-profiles apparmor-profiles-extra
| Tool | Beschreibung |
|---|---|
| apparmor-utils | Kommandozeilenwerkzeuge (aa-*) |
| apparmor-notify | Desktop-Benachrichtigung für AppArmor-Meldungen |
| apparmor-profiles | zusätzliche, vorkonfigurierte Profile |
| apparmor-profiles-extra | weitere, teilweise experimentelle Profile |
Schutz durch AppArmor
AppArmor wird beim Systemstart geladen und aktiviert
- Prozesse werden einem Profil zugeordnet, wenn ein dazu passender Regelsatz in /etc/apparmor.d/ vorhanden und geladen ist
- Ohne Profil arbeiten Prozesse nur mit klassischen Unix-Dateirechten, aber ohne zusätzliche MAC-Einschränkungen
AppArmor-Modi (flags)
AppArmor kennt drei Hauptmodi pro Profil
| Modus | Beschreibung |
|---|---|
| complain | Lernmodus
|
| enforce | Zwangsmodus
|
| audit | Prüfmodus
|
- Profil wecheln
sudo <aa-complain|aa-enforce|aa-audit> <PROFIL>
- Mehrere Profile gleichzeitig
sudo aa-complain /etc/apparmor.d/*
sudo aa-enforce /etc/apparmor.d/*
- Hinweis
- Neue oder stark angepasste Profile zunächst im complain-Modus testen
- Nach Stabilisierung auf enforce umstellen
- audit ist sinnvoll für detaillierte Analysen, erzeugt aber viele Log-Einträge
Status prüfen
- Hinweis
Alle Befehle zur Steuerung von AppArmor erfordern Root-Rechte (z. B. durch sudo)
AppArmor aktiviert
sudo aa-enabled
Ausgabe
- Yes – AppArmor ist aktiv
- No – AppArmor ist deaktiviert bzw. das Kernel-Modul nicht geladen
- 1. Basisprofil erzeugen
sudo aa-genprof /usr/sbin/PROGRAMM
- Der Dienst wird gestartet/benutzt
- aa-genprof wertet Log-Einträge aus und fragt interaktiv nach Freigaben/Verboten
- 2. Profil testen
- Profil zunächst im complain-Modus belassen
- Dienst normal verwenden und Logs auswerten
- Bei Bedarf aa-logprof wiederholt ausführen, bis keine relevanten Verstöße mehr auftreten
- 3. Profil scharf schalten
sudo aa-enforce /usr/sbin/PROGRAMM
- Der Dienst wird nun strikt gemäß Profil ausgeführt
- Weitere Verstöße erscheinen als abgewiesene Zugriffe in den Logs
Logs auswerten
AppArmor schreibt Meldungen je nach Systemkonfiguration z.B. in
- /var/log/syslog
- /var/log/kern.log
- /var/log/audit/audit.log
Ein praktischer Live-Blick auf aktuelle Meldungen ist etwa
sudo tail -F /var/log/syslog | grep "apparmor"
- aa-logprof verarbeitet typischerweise Meldungen aus /var/log/syslog
- Für umfangreiche Analysen kann audit-Modus sinnvoll sein, erhöht aber Log-Volumen deutlich
Die Protokollierungseinstellungen werden über die Datei /etc/apparmor/logprof.conf verwaltet
Deaktivieren und Reaktivieren
Die Steuerung von AppArmor erfolgt über einen Systemdienst
- Dienst und Profile entladen
sudo aa-teardown
- Alle aktiven Profile werden aus dem Kernel entfernt
- Danach finden keine AppArmor-Prüfungen mehr statt
- Profile neu laden
sudo systemctl reload apparmor.service
Lädt alle aktiven Profile aus /etc/apparmor.d/ neu
AppArmor Notify
Nach Installation von apparmor-notify können Desktop-Benachrichtigungen für verweigerte Zugriffe aktiviert werden
- Aktivierung
aa-notify -p
- Test mit einem bewusst restriktiven Zugriff
sudo tcpdump -i enp8s0 -n -s 0 -w /foo
Der Befehl startet tcpdump und versucht Folgendes
- Lesen des Datenverkehrs von der Schnittstelle enp8s0
- Speichern der erfassten Daten in einer Datei unter dem Pfad /foo (im Stammverzeichnis des Dateisystems)
- Normalerweise ist in AppArmor-Profilen das Schreiben in das Stammverzeichnis / verboten
- deny /foo w,
Profile bearbeiten
Grundsätzlich können Profile in /etc/apparmor.d/ manuell editiert werden
- Es handelt sich um Textdateien mit eigener Regel-Syntax
- Ergänzende lokale Anpassungen werden in Dateien unter /etc/apparmor.d/local/ vorgenommen, die per #include in das Hauptprofil eingebunden sind
- Hinweis
- Manuelles Editieren sollte die Ausnahme sein
- Typische Änderungen (neue Pfade, zusätzliche Rechte) werden durch aa-logprof vorgenommen
- Bei Profilen, die über Paketverwaltung geliefert werden, gehen direkte Änderungen in /etc/apparmor.d/ bei Updates verloren - lokale Anpassungen gehören nach /etc/apparmor.d/local/
- Details zur Profilsprache (Regeln, Rechte, Globbing, Ausführungsmodi, Abstractions) sind in AppArmor/Policy beschrieben.
Weitere Profile beziehen
- Debian-basierte Systeme liefern bereits Profile für viele Standardprogramme
- Zusätzliche Regeln können über Pakete (apparmor-profiles, apparmor-profiles-extra) installiert werden
- Fremde Profile sollten nur nach Prüfung der Quelle und anschließender Anpassung an die eigenen Anforderungen übernommen werden
Konfiguration
Verzeichnisstruktur
- Globale Einstellungen: /etc/apparmor
- Profile: /etc/apparmor.d/
- Deaktivierte Profile: symbolische Links in /etc/apparmor.d/disable
- Profile, die zwangsweise im complain-Modus geladen werden: Links in /etc/apparmor.d/force-complain
disable und force-complain
Enthält /etc/apparmor.d/disable eine Verknüpfung zu einem Profil, wird dieses nicht automatisch geladen
- Verknüpfungen unter /etc/apparmor.d/force-complain sorgen dafür, dass Profile im complain-Modus geladen werden
Problembehebung
Typische Schritte bei Problemen mit AppArmor-Profilen
- Prüfen, ob der betroffene Prozess durch ein Profil eingeschränkt wird (aa-status)
- Log-Meldungen zu diesem Prozess filtern (grep apparmor auf syslog / kern.log)
- Profil mit aa-logprof anpassen
- Ggf
- Profil temporär in complain-Modus versetzen, um Verhalten zu analysieren
- Wenn nötig, Profil für die Fehlersuche kurzzeitig deaktivieren – danach wieder aktivieren
Anhang
Siehe auch
Dokumentation
- Man-Page
- Info-Page
Links
Projekt
Weblinks
- https://wiki.ubuntuusers.de/AppArmor/
- AppArmor-Übersichtsseite Im englischen Ubuntu-Wiki
- Using AppArmor Eintrag im englischen Wiki der Ubuntu-Community
- AppArmor mit Ubuntu nutzen- Einführung von Kai Raven