AppArmor/HowTo: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
'''AppArmor/HowTo''' - Sicherheitsframework für | '''AppArmor/HowTo''' - Sicherheitsframework für [[Linux]] | ||
[[ | |||
== Beschreibung == | == 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 | |||
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 | * 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 | * Neben den vordefinierten können eigene Profile aufgestellt werden | ||
| Zeile 16: | Zeile 13: | ||
; Zweck | ; Zweck | ||
Ziel ist die Begrenzung der Auswirkungen kompromittierter oder fehlerhafter Anwendungen | 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 | * Typische Kandidaten sind Netzwerkdienste, Browser, Mail- und Büroanwendungen sowie Interpreter für potentiell unsichere Inhalte | ||
== Algorithmus == | == Algorithmus == | ||
; Ablauf (Kurzfassung) | ; Ablauf (Kurzfassung) | ||
# Prüfen, ob AppArmor installiert und aktiviert ist | # Prüfen, ob AppArmor installiert und aktiviert ist | ||
# Netzwerkfähige Prozesse ohne Profil identifizieren | # Netzwerkfähige Prozesse ohne Profil identifizieren | ||
# Profil für einen ausgewählten Dienst erzeugen (ggf. automatisch) und mit Log-Daten verfeinern | # Profil für einen ausgewählten Dienst erzeugen (ggf. automatisch) und mit Log-Daten verfeinern | ||
# Profil in den passenden Modus (''complain''/''enforce''/''audit'') schalten | # Profil in den passenden Modus (''complain''/''enforce''/''audit'') schalten | ||
# Logs und ggf. Desktop-Benachrichtigungen auswerten | # Logs und ggf. Desktop-Benachrichtigungen auswerten | ||
# Optional weitere Profile hinzufügen bzw. vorhandene Profile anpassen | # Optional weitere Profile hinzufügen bzw. vorhandene Profile anpassen | ||
== Installation == | == Installation == | ||
Seit vielen Jahren wird AppArmor auf Debian-basierten Systemen standardmäßig mitinstalliert | Seit vielen Jahren wird AppArmor auf Debian-basierten Systemen standardmäßig mitinstalliert | ||
* Falls Pakete fehlen, können diese nachinstalliert werden | * Falls Pakete fehlen, können diese nachinstalliert werden | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
| Zeile 37: | Zeile 33: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Hilfsprogramme | ; Hilfsprogramme | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo apt install apparmor-utils apparmor-notify apparmor-profiles apparmor-profiles-extra | sudo apt install apparmor-utils apparmor-notify apparmor-profiles apparmor-profiles-extra | ||
| Zeile 61: | Zeile 56: | ||
== Schutz durch AppArmor == | == Schutz durch AppArmor == | ||
AppArmor wird beim Systemstart geladen und aktiviert | 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 | * 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 | * Ohne Profil arbeiten Prozesse nur mit klassischen Unix-Dateirechten, aber ohne zusätzliche MAC-Einschränkungen | ||
== AppArmor-Modi (flags) == | == AppArmor-Modi (flags) == | ||
AppArmor kennt drei Hauptmodi pro Profil | AppArmor kennt drei Hauptmodi pro Profil | ||
{| class="wikitable options big" | {| class="wikitable options big" | ||
! Modus !! Beschreibung | ! Modus !! Beschreibung | ||
|- | |- | ||
| ''complain'' || | | ''complain'' || Lernmodus | ||
* Regelverstöße werden geloggt, aber nicht blockiert | |||
|- | |- | ||
| ''enforce'' | | ''enforce'' || Zwangsmodus | ||
* Regelverstöße werden geloggt und blockiert | |||
|- | |- | ||
| ''audit'' | | ''audit'' || Prüfmodus | ||
* alle Regelanwendungen und -verstöße werden geloggt | |||
|} | |} | ||
; Profil wecheln | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
sudo <aa-complain|aa-enforce|aa-audit> <PROFIL> | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" highlight="" line copy> | ; Mehrere Profile gleichzeitig | ||
sudo aa-complain | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo aa-complain /etc/apparmor.d/* | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
sudo aa-enforce /etc/apparmor.d/* | |||
<syntaxhighlight lang="bash" highlight="" line copy> | |||
sudo aa-enforce | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 103: | Zeile 97: | ||
== Status prüfen == | == Status prüfen == | ||
; Hinweis | ; Hinweis | ||
Alle Befehle zur Steuerung von AppArmor erfordern Root-Rechte (z.B. durch ''sudo'') | Alle Befehle zur Steuerung von AppArmor erfordern Root-Rechte (z. B. durch ''sudo'') | ||
=== AppArmor aktiviert === | === AppArmor aktiviert === | ||
| Zeile 110: | Zeile 104: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Ausgabe | Ausgabe | ||
* ''Yes'' – AppArmor ist aktiv | * ''Yes'' – AppArmor ist aktiv | ||
* ''No'' – AppArmor ist deaktiviert bzw. das Kernel-Modul nicht geladen | * ''No'' – AppArmor ist deaktiviert bzw. das Kernel-Modul nicht geladen | ||
; 1. Basisprofil erzeugen | ; 1. Basisprofil erzeugen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo aa-genprof /usr/sbin/PROGRAMM | sudo aa-genprof /usr/sbin/PROGRAMM | ||
| Zeile 122: | Zeile 116: | ||
* ''aa-genprof'' wertet Log-Einträge aus und fragt interaktiv nach Freigaben/Verboten | * ''aa-genprof'' wertet Log-Einträge aus und fragt interaktiv nach Freigaben/Verboten | ||
; 2. Profil testen | ; 2. Profil testen | ||
* Profil zunächst im ''complain''-Modus belassen | * Profil zunächst im ''complain''-Modus belassen | ||
* Dienst normal verwenden und Logs auswerten | * Dienst normal verwenden und Logs auswerten | ||
* Bei Bedarf ''aa-logprof'' wiederholt ausführen, bis keine relevanten Verstöße mehr auftreten | * Bei Bedarf ''aa-logprof'' wiederholt ausführen, bis keine relevanten Verstöße mehr auftreten | ||
; 3. Profil scharf schalten | ; 3. Profil scharf schalten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo aa-enforce /usr/sbin/PROGRAMM | sudo aa-enforce /usr/sbin/PROGRAMM | ||
| Zeile 136: | Zeile 130: | ||
== Logs auswerten == | == Logs auswerten == | ||
AppArmor schreibt Meldungen je nach Systemkonfiguration z.B. in | AppArmor schreibt Meldungen je nach Systemkonfiguration z.B. in | ||
* '''/var/log/syslog''' | * '''/var/log/syslog''' | ||
* '''/var/log/kern.log''' | * '''/var/log/kern.log''' | ||
*'''/var/log/audit/audit.log | *'''/var/log/audit/audit.log | ||
Ein praktischer Live-Blick auf aktuelle Meldungen ist etwa | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo tail -F /var/log/syslog | grep "apparmor" | sudo tail -F /var/log/syslog | grep "apparmor" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* ''aa-logprof'' verarbeitet typischerweise Meldungen aus '''/var/log/syslog''' | * ''aa-logprof'' verarbeitet typischerweise Meldungen aus '''/var/log/syslog''' | ||
* Für umfangreiche Analysen kann ''audit''-Modus sinnvoll sein, erhöht aber Log-Volumen deutlich | * Für umfangreiche Analysen kann ''audit''-Modus sinnvoll sein, erhöht aber Log-Volumen deutlich | ||
| Zeile 154: | Zeile 145: | ||
== Deaktivieren und Reaktivieren == | == Deaktivieren und Reaktivieren == | ||
Die Steuerung von AppArmor erfolgt über einen Systemdienst | Die Steuerung von AppArmor erfolgt über einen Systemdienst | ||
; Dienst und Profile entladen | ; Dienst und Profile entladen | ||
| Zeile 160: | Zeile 151: | ||
sudo aa-teardown | sudo aa-teardown | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Alle aktiven Profile werden aus dem Kernel entfernt | * Alle aktiven Profile werden aus dem Kernel entfernt | ||
* Danach finden keine AppArmor-Prüfungen mehr statt | * Danach finden keine AppArmor-Prüfungen mehr statt | ||
; Profile neu laden | ; Profile neu laden | ||
<syntaxhighlight lang="bash" highlight="1"line copy> | <syntaxhighlight lang="bash" highlight="1"line copy> | ||
sudo systemctl reload apparmor.service | sudo systemctl reload apparmor.service | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Lädt alle aktiven Profile aus '''/etc/apparmor.d/''' neu | |||
== AppArmor Notify == | == AppArmor Notify == | ||
Nach Installation von ''apparmor-notify'' können Desktop-Benachrichtigungen für verweigerte Zugriffe aktiviert werden | Nach Installation von ''apparmor-notify'' können Desktop-Benachrichtigungen für verweigerte Zugriffe aktiviert werden | ||
Aktivierung | ; Aktivierung | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
aa-notify -p | aa-notify -p | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Test mit einem bewusst restriktiven Zugriff | ; Test mit einem bewusst restriktiven Zugriff | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
sudo tcpdump -i enp8s0 -n -s 0 -w /foo | sudo tcpdump -i enp8s0 -n -s 0 -w /foo | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Der Befehl startet tcpdump und versucht Folgendes | Der Befehl startet tcpdump und versucht Folgendes | ||
* Lesen des Datenverkehrs von der Schnittstelle enp8s0 | * Lesen des Datenverkehrs von der Schnittstelle enp8s0 | ||
* Speichern der erfassten Daten in einer Datei unter dem Pfad /foo (im Stammverzeichnis des Dateisystems) | * 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 | * Normalerweise ist in AppArmor-Profilen das Schreiben in das Stammverzeichnis / verboten | ||
:* ''deny /foo w,'' | :* ''deny /foo w,'' | ||
== Profile bearbeiten == | == Profile bearbeiten == | ||
Grundsätzlich können Profile in '''/etc/apparmor.d/''' manuell editiert werden | Grundsätzlich können Profile in '''/etc/apparmor.d/''' manuell editiert werden | ||
* Es handelt sich um Textdateien mit eigener Regel-Syntax | * 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 | * Ergänzende lokale Anpassungen werden in Dateien unter '''/etc/apparmor.d/local/''' vorgenommen, die per ''#include'' in das Hauptprofil eingebunden sind | ||
; Hinweis | ; Hinweis | ||
* Manuelles Editieren sollte die Ausnahme sein | * Manuelles Editieren sollte die Ausnahme sein | ||
* Typische Änderungen (neue Pfade, zusätzliche Rechte) werden durch ''aa-logprof'' vorgenommen | * 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/''' | * 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 == | == Weitere Profile beziehen == | ||
| Zeile 216: | Zeile 204: | ||
=== ''disable'' und ''force-complain'' === | === ''disable'' und ''force-complain'' === | ||
Enthält '''/etc/apparmor.d/disable''' eine Verknüpfung zu einem Profil, wird dieses nicht automatisch geladen | 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 | * Verknüpfungen unter '''/etc/apparmor.d/force-complain''' sorgen dafür, dass Profile im ''complain''-Modus geladen werden | ||
== Problembehebung == | == Problembehebung == | ||
Typische Schritte bei Problemen mit AppArmor-Profilen | Typische Schritte bei Problemen mit AppArmor-Profilen | ||
* Prüfen, ob der betroffene Prozess durch ein Profil eingeschränkt wird (''aa-status'') | * 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'') | * Log-Meldungen zu diesem Prozess filtern (''grep apparmor'' auf ''syslog'' / ''kern.log'') | ||
* Profil mit ''aa-logprof'' anpassen | * Profil mit ''aa-logprof'' anpassen | ||
* Ggf | * 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 | * Wenn nötig, Profil für die Fehlersuche kurzzeitig deaktivieren – danach wieder aktivieren | ||
<noinclude> | <noinclude> | ||
| Zeile 251: | Zeile 237: | ||
# [https://wiki.kairaven.de/open/os/linux/apparmor AppArmor mit Ubuntu nutzen]- Einführung von Kai Raven | # [https://wiki.kairaven.de/open/os/linux/apparmor AppArmor mit Ubuntu nutzen]- Einführung von Kai Raven | ||
[[Kategorie:AppArmor]] | |||
</noinclude> | </noinclude> | ||
Aktuelle Version vom 12. Dezember 2025, 16:15 Uhr
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