Zum Inhalt springen

AppArmor/HowTo: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(89 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''AppArmor/HowTo''' - Kurzbeschreibung
'''AppArmor/HowTo''' - Sicherheitsframework für [[Linux]]


== Beschreibung ==
== Beschreibung ==
== Installation ==
; AppArmor ist ein Mandatory-Access-Control-(MAC)-Framework für Linux
Seit 2007 ist AppArmor mit Hilfswerkzeugen in der Standardinstallation von Ubuntu enthalten. Ansonsten kann es über die folgenden Pakete nachinstalliert werden [https://wiki.ubuntuusers.de/AppArmor/#source-1 [1]]:* '''apparmor'''
* 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


Befehl zum Installieren der Pakete:
; 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


sudo apt-get install apparmor
; 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


Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://apparmor apt://apparmor]
== 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


=== Hilfsprogramme ===
== Installation ==
Seit vielen Jahren wird AppArmor auf Debian-basierten Systemen standardmäßig mitinstalliert
* Falls Pakete fehlen, können diese nachinstalliert werden


Die Hilfsprogramme zu AppArmor sind im Paket* '''apparmor-utils'''
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo apt install apparmor
</syntaxhighlight>


; Hilfsprogramme
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo apt install apparmor-utils apparmor-notify apparmor-profiles apparmor-profiles-extra
</syntaxhighlight>


{| class="wikitable options big"
! 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
|}


Befehl zum Installieren der Pakete:
== 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


sudo apt-get install apparmor-utils
== AppArmor-Modi (flags) ==
AppArmor kennt drei Hauptmodi pro Profil


Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://apparmor-utils apt://apparmor-utils]
{| class="wikitable options big"
! Modus !! Beschreibung
|-
| ''complain'' || Lernmodus
* Regelverstöße werden geloggt, aber nicht blockiert
|-
| ''enforce'' || Zwangsmodus
* Regelverstöße werden geloggt und blockiert
|-
| ''audit'' || Prüfmodus
* alle Regelanwendungen und -verstöße werden geloggt
|}


enthalten, welches man manuell nachinstallieren muss.
; Profil wecheln
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo <aa-complain|aa-enforce|aa-audit> <PROFIL>
</syntaxhighlight>


Wer <tt>DENIED</tt> Nachrichten in der Desktopumgebung erhalten möchte, muss zusätzlich das Paket* '''apparmor-notify''' (''universe'')
; Mehrere Profile gleichzeitig
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-complain /etc/apparmor.d/*
</syntaxhighlight>


<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-enforce /etc/apparmor.d/*
</syntaxhighlight>


; 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


Befehl zum Installieren der Pakete:
== Status prüfen ==
; Hinweis
Alle Befehle zur Steuerung von AppArmor erfordern Root-Rechte (z.&nbsp;B.&nbsp;durch ''sudo'')


sudo apt-get install apparmor-notify
=== AppArmor aktiviert ===
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-enabled
</syntaxhighlight>


Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://apparmor-notify apt://apparmor-notify]
Ausgabe
* ''Yes'' – AppArmor ist aktiv
* ''No'' – AppArmor ist deaktiviert bzw.&nbsp;das Kernel-Modul nicht geladen


installieren. Dies ist normalerweise nur notwendig, wenn man ein Programm oder selber erstellte Profile sehr gezielt beobachten möchte. Bei normaler Nutzung des Rechners wird das Paket nicht benötigt.
; 1.&nbsp;Basisprofil erzeugen
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-genprof /usr/sbin/PROGRAMM
</syntaxhighlight>


=== weitere Regelsätze ===
* Der Dienst wird gestartet/benutzt
* ''aa-genprof'' wertet Log-Einträge aus und fragt interaktiv nach Freigaben/Verboten


In der Installation sind nur sehr wenige Regeln enthalten. Ein größerer Regelsatz kann über die Pakete* '''apparmor-profiles'''
; 2.&nbsp;Profil testen
* '''apparmor-profiles-extra''' (''universe'')
* 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.&nbsp;Profil scharf schalten
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-enforce /usr/sbin/PROGRAMM
</syntaxhighlight>


* Der Dienst wird nun strikt gemäß Profil ausgeführt
* Weitere Verstöße erscheinen als abgewiesene Zugriffe in den Logs


Befehl zum Installieren der Pakete:
== Logs auswerten ==
AppArmor schreibt Meldungen je nach Systemkonfiguration z.B.&nbsp;in
* '''/var/log/syslog'''
* '''/var/log/kern.log'''
*'''/var/log/audit/audit.log


sudo apt-get install apparmor-profiles apparmor-profiles-extra
Ein praktischer Live-Blick auf aktuelle Meldungen ist etwa
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo tail -F /var/log/syslog | grep "apparmor"
</syntaxhighlight>
* ''aa-logprof'' verarbeitet typischerweise Meldungen aus '''/var/log/syslog'''
* Für umfangreiche Analysen kann ''audit''-Modus sinnvoll sein, erhöht aber Log-Volumen deutlich


Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://apparmor-profiles,apparmor-profiles-extra apt://apparmor-profiles,apparmor-profiles-extra]
Die Protokollierungseinstellungen werden über die Datei '''/etc/apparmor/logprof.conf''' verwaltet


installiert werden. Darin sind eine Reihe von AppArmor Profilen für diverse Programme enthalten.
== Deaktivieren und Reaktivieren ==
Die Steuerung von AppArmor erfolgt über einen Systemdienst


== Syntax ==
; Dienst und Profile entladen
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo aa-teardown
</syntaxhighlight>
* Alle aktiven Profile werden aus dem Kernel entfernt
* Danach finden keine AppArmor-Prüfungen mehr statt


; Profile neu laden
<syntaxhighlight lang="bash" highlight="1"line copy>
sudo systemctl reload apparmor.service
</syntaxhighlight>
</syntaxhighlight>
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Anwendung ==
=== Fehlerbehebung ===
== Konfiguration ==
=== Dateien ===
<noinclude>
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
==== Dokumentation ====
===== RFC =====
{| class="wikitable sortable options"
|-
! RFC !! Titel
|-
| [https://www.rfc-editor.org/rfc/0000 0000] ||
|}


===== Man-Pages =====
Lädt alle aktiven Profile aus '''/etc/apparmor.d/''' neu
===== Info-Pages =====
==== Links ====
===== Projekt =====
===== Weblinks =====
# https://wiki.ubuntuusers.de/AppArmor/
# [https://gitlab.com/apparmor/apparmor/wikis/home/ Homepage der AppArmor-Entwickler] mit ausführlicher
## [https://gitlab.com/apparmor/apparmor/wikis/Documentation Dokumentation] und
## [https://gitlab.com/apparmor/apparmor/wikis/FAQ FAQ]
# [https://wiki.ubuntu.com/AppArmor AppArmor-Übersichtsseite]im englischen Ubuntu-Wiki, enthält Infos zu allen unterstützen Ubuntu-Versionen plus Server-Guides für die LTS-Versionen
# [https://help.ubuntu.com/community/AppArmor Using AppArmor]- Eintrag im englischen Wiki der Ubuntu-Community
# [https://wiki.kairaven.de/open/os/linux/apparmor AppArmor mit Ubuntu nutzen]- Einführung von Kai Raven


= TMP  =
== AppArmor Notify ==
[[Image:apparmor.png]]
Nach Installation von ''apparmor-notify'' können Desktop-Benachrichtigungen für verweigerte Zugriffe aktiviert werden
; Zum Verständnis dieses Artikels sind folgende Seiten hilfreich
# [https://wiki.ubuntuusers.de/Pakete_installieren/ Installation von Programmen]
# [https://wiki.ubuntuusers.de/Terminal/ Ein Terminal öffnen]
# [https://wiki.ubuntuusers.de/mit_Root-Rechten_arbeiten/ mit Root-Rechten arbeiten]


[https://gitlab.com/apparmor/apparmor/ AppArmor] ist ein Sicherheitsframework für Linux. Als [https://de.wikipedia.org/wiki/Mandatory_Access_Control Mandatory Access Control] (MAC) System kontrolliert es Anwendungen einzeln. Für diese können in Profilen Zugriffsrechte festgelegt werden, die feiner als die allgemeinen [https://wiki.ubuntuusers.de/Rechte/ Dateirechte] sind. Neben den [https://wiki.ubuntuusers.de/AppArmor/#regel_default vordefinierten] können [https://wiki.ubuntuusers.de/Archiv/AppArmor/Profile_erstellen/ eigene] Profile aufgestellt werden. Für jedes Profil kann einer von drei [https://wiki.ubuntuusers.de/AppArmor/#modi Eingriffs-Modi] gesetzt werden.
; Aktivierung
<syntaxhighlight lang="bash" highlight="1" line copy>
aa-notify -p
</syntaxhighlight>


Zweck von AppArmor ist der Schutz von sicherheitskritischen Anwendungen, in erster Linie also Anwendungen/Prozesse mit Netzwerkzugriff, aber auch von z.B. Büroanwendungen, die durch das Laden verseuchter Dokumente u.U. das System kompromittieren könnten.
; Test mit einem bewusst restriktiven Zugriff
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo tcpdump -i enp8s0 -n -s 0 -w /foo
</syntaxhighlight>


AppArmor ist seit Kernel 2.6.36 offiziell [https://kernelnewbies.org/Linux_2_6_36 integriert] Ab [https://wiki.ubuntuusers.de/Gutsy_Gibbon/ Ubuntu 7.10] wird es beim Systemstart geladen. Das gilt auch für die zugehörigen Profile (Regelsätze).
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,''


Von 2005 bis 2007 wurde AppArmor maßgeblich von Novell entwickelt. Seit 2009 engagiert sich Canonical verstärkt für das Sicherheitsframework, wodurch dann auch die bereits erwähnte Aufnahme in den Linux-Kernel erreicht wurde.
== 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


AppArmor wurde als Alternative zum als schwer konfigurierbar geltenden [https://de.wikipedia.org/wiki/SELinux SELinux] konzipiert. Von den "großen" Linux-Distributionen verwendet neben Ubuntu noch openSUSE in der Standardinstallation das Framework.
; 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.


== Verzeichnisstruktur ==
== 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


Globale und Systemeinstellungen sind in '''/etc/apparmor''' gespeichert. Die Anwendungsprofile sowie mehrere vordefinierte Unterverzeichnisse befinden sich in '''/etc/apparmor.d/'''. Eine ausführliche Darstellung der Verzeichnisstruktur nebst Inhalten ist unter [https://gitlab.com/apparmor/apparmor/wikis/Policy_Layout Policy Layout] verfügbar.
== 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 ===
=== ''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


Enthält '''/etc/apparmor.d/disable''' eine Verknüpfung zu einem Profil, so wird dieses nicht automatisch geladen. Ähnlich sorgen Verknüpfungen unter '''/etc/apparmor.d/force-complain''' dafür, dass Profile nur im <tt>complain</tt>-Modus geladen werden ([https://wiki.ubuntuusers.de/AppArmor/#AppArmor-Modi-flags siehe unten]).
== 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


== Schutz durch AppArmor ==
<noinclude>


AppArmor wird automatisch geladen. Möchte man eine neue Regel laden, so muss man dies von Hand erledigen. Grundsätzlich sollte jedes Programm, das eine Angriffsfläche bietet, durch AppArmor geschützt werden. Eine Auflistung der nicht profilierten Online-Anwendungen erhält man durch ein AppArmor-Werkzeug, das man im Terminal[https://wiki.ubuntuusers.de/AppArmor/#source-2 [2]] aufruft:
== Anhang ==
 
=== Siehe auch ===
sudo aa-unconfined
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
 
=== Dokumentation ===
Dieses ermittelt mittels [https://wiki.ubuntuusers.de/netstat/ netstat], welche Programme offene Netzwerk-Sockets (TCP/UDP) besitzen und ob sie ein AppArmor-Profil besitzen. Eine Ausgabe kann folgendermaßen aussehen:
; Man-Page
 
;Info-Page
5460 /usr/sbin/avahi-daemon not confined
=== Links ===
5460 /usr/sbin/avahi-daemon not confined
==== Projekt ====
5806 /sbin/dhclient3 not confined
# [https://gitlab.com/apparmor/apparmor/ AppArmor]
18367 /usr/sbin/cupsd confined by '/usr/sbin/cupsd (enforce)'
#* [https://gitlab.com/apparmor/apparmor/wikis/home/ Wiki]
 
#* [https://gitlab.com/apparmor/apparmor/wikis/Documentation Dokumentation]
Man sieht hier drei Dienste, von denen nur einer geschützt wird (<tt>cups</tt>). Man besitzt also zwei ungeschützte Dienste: <tt>avahi-daemon</tt> und <tt>dhclient3</tt>. <tt>avahi-daemon</tt> wird wahrscheinlich doppelt gelistet, weil es sowohl auf TCP wie auch UDP lauscht. Diese beiden Dienste sind standardmäßig auf Ubuntu installiert. Sie sind nur aus dem lokalen Netzwerk, aber nicht aus dem Internet zu erreichen und gelten deshalb als sicher und nicht ausnutzbar. Mehr dazu kann man im Artikel [https://wiki.ubuntuusers.de/Offene_Ports/ Offene Ports] lesen. Paranoide werden wahrscheinlich trotzdem eine Regel dafür haben wollen, aber nach derzeitigem Kenntnisstand ist dies nicht erforderlich.
#* [https://gitlab.com/apparmor/apparmor/wikis/FAQ FAQ]
 
Sollte aa-unconfined weitere Dienste anzeigen, wie zum Beispiel [https://wiki.ubuntuusers.de/Privoxy/ Privoxy] oder [https://wiki.ubuntuusers.de/Tor/ Tor], sollte man diese von AppArmor schützen lassen. Als Anmerkung sei noch gesagt, dass aa-unconfined mit großer Wahrscheinlichkeit nur Dienste anzeigen wird und nicht normale Internetanwendungen (wie zum Beispiel einen Browser). Das bedeutet aber nicht, dass diese nicht geschützt werden sollten. Wie bereits gesagt ist die aa-unconfined-Liste nur ein kleiner Ausschnitt der schützenswerten Anwendungen und in keinem Fall vollständig.
 
Auch Windows-Anwendungen über [https://wiki.ubuntuusers.de/Wine/ Wine] lassen sich mit AppArmor kontrollieren. Ausführliche Hinweise dazu finden sich unter [https://gitlab.com/apparmor/apparmor/wikis/AppArmorWine AppArmorWine] und [https://forum.ubuntuusers.de/topic/apparmor-profil-fuer-wine/ im Forum].
 
== Woher weitere Profile beziehen? ==
 
Ubuntu bringt bereits für ein paar Programme Profile mit, wobei diese jedoch teilweise [https://wiki.ubuntuusers.de/AppArmor/#disable-und-force-complain deaktiviert] sein könnten. Um nun weitere Profile zu beziehen kann man* Pakete mit weiteren Regeln installieren (siehe [https://wiki.ubuntuusers.de/AppArmor/#weitere-Regelsaetze Abschnitt Installation])
* fremde Profile übernehmen
* selber Profile selber erstellen.
 
 
 
Es sollte aber bedacht werden, dass diese Regeln nicht blind übernommen werden sollen/können, sondern den individuellen Bedürfnissen angepasst werden müssen.
 
Im Internet kursieren noch zahlreiche weitere Profile für AppArmor, doch es sollte immer überlegt werden, wie vertrauenswürdig die Quelle ist und wie kompetent im Erstellen von Profilen. Außerdem sind diese Regeln meist nicht auf die eigenen Bedürfnisse angepasst, sondern müssen nachträglich feinjustiert werden. Auch hier gilt, dass keine Profile blind übernommen werden sollten.


==== Weblinks ====
# https://wiki.ubuntuusers.de/AppArmor/
# [https://wiki.ubuntu.com/AppArmor AppArmor-Übersichtsseite] Im englischen Ubuntu-Wiki
# [https://help.ubuntu.com/community/AppArmor Using AppArmor] Eintrag im englischen Wiki der Ubuntu-Community
# [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)
  1. Prüfen, ob AppArmor installiert und aktiviert ist
  2. Netzwerkfähige Prozesse ohne Profil identifizieren
  3. Profil für einen ausgewählten Dienst erzeugen (ggf. automatisch) und mit Log-Daten verfeinern
  4. Profil in den passenden Modus (complain/enforce/audit) schalten
  5. Logs und ggf. Desktop-Benachrichtigungen auswerten
  6. 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
  • Regelverstöße werden geloggt, aber nicht blockiert
enforce Zwangsmodus
  • Regelverstöße werden geloggt und blockiert
audit Prüfmodus
  • alle Regelanwendungen und -verstöße werden geloggt
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

  1. AppArmor

Weblinks

  1. https://wiki.ubuntuusers.de/AppArmor/
  2. AppArmor-Übersichtsseite Im englischen Ubuntu-Wiki
  3. Using AppArmor Eintrag im englischen Wiki der Ubuntu-Community
  4. AppArmor mit Ubuntu nutzen- Einführung von Kai Raven