Was ist AppArmor?
AppArmor (Application Armor) ist ein Linux Security Module (LSM), das Anwendungen mithilfe von Sicherheitsprofilen einschränkt.
Im Gegensatz zu klassischen Benutzerrechten entscheidet AppArmor nicht nur, welcher Benutzer auf Dateien zugreifen darf, sondern auch welches Programm welche Aktionen ausführen darf.
Dadurch wird selbst ein Prozess mit Root-Rechten auf die ausdrücklich erlaubten Ressourcen beschränkt.
AppArmor gehört zu den effektivsten Maßnahmen für das sogenannte System-Hardening.
Warum ist AppArmor wichtig?
Viele Angriffe laufen nach einem ähnlichen Muster ab:
- Eine Schwachstelle in einer Anwendung wird ausgenutzt.
- Der Angreifer erhält Zugriff auf den Prozess.
- Anschließend versucht er, auf weitere Dateien oder Dienste zuzugreifen.
- Im schlimmsten Fall übernimmt er den gesamten Server.
Mit AppArmor wird dieser letzte Schritt erheblich erschwert, da jede Anwendung nur auf zuvor definierte Ressourcen zugreifen darf.
Selbst wenn beispielsweise ein Webserver kompromittiert wird, kann er ohne entsprechendes Profil weder beliebige Dateien lesen noch Systembefehle ausführen.
Vorteile von AppArmor
AppArmor bietet zahlreiche Vorteile:
- Open Source
- direkt im Linux-Kernel integriert
- geringer Ressourcenverbrauch
- einfache Profilverwaltung
- anwendungsbezogene Zugriffskontrolle
- Schutz vor Privilegienausweitung
- ideal für Server und Desktop-Systeme
- bereits bei vielen Distributionen vorinstalliert
- hervorragend für Container geeignet
AppArmor und Mandatory Access Control (MAC)
Linux verwendet standardmäßig das klassische Berechtigungssystem (DAC – Discretionary Access Control).
Dabei entscheidet der Eigentümer einer Datei über deren Zugriffsrechte.
AppArmor ergänzt dieses Modell um Mandatory Access Control (MAC).
Das bedeutet:
Selbst wenn Dateiberechtigungen einen Zugriff erlauben würden, kann AppArmor diesen trotzdem verbieten.
Dadurch entsteht eine zusätzliche Sicherheitsebene.
Installation unter Debian 13
Unter Debian 13 ist AppArmor meist bereits installiert.
Prüfen:
sudo aa-status
Ist AppArmor nicht vorhanden, erfolgt die Installation mit:
sudo apt update sudo apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
Anschließend den Dienst aktivieren:
sudo systemctl enable apparmor sudo systemctl start apparmor
Status prüfen:
sudo systemctl status apparmor
Läuft AppArmor?
Status anzeigen:
sudo aa-status
Beispiel:
apparmor module is loaded 120 profiles are loaded 95 profiles are in enforce mode 25 profiles are in complain mode
Diese Ausgabe zeigt bereits, welche Programme geschützt werden.
Die Betriebsmodi
AppArmor kennt hauptsächlich zwei Betriebsarten.
Enforce Mode
Hier werden Verstöße aktiv blockiert.
enforce
Die Anwendung darf ausschließlich die erlaubten Aktionen durchführen.
Complain Mode
complain
Alle Verstöße werden lediglich protokolliert.
Dies eignet sich hervorragend zum Erstellen neuer Profile.
Profile finden
Alle Profile befinden sich unter:
/etc/apparmor.d/
Beispiele:
/usr/sbin/apache2 /usr/bin/man /usr/bin/evince
Jede Anwendung besitzt ein eigenes Profil.
Profilstatus anzeigen
sudo aa-status
Nur geladene Profile:
sudo apparmor_status
Profil in den Enforce-Modus setzen
sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2
Profil in den Complain-Modus setzen
sudo aa-complain /etc/apparmor.d/usr.sbin.apache2
Profil deaktivieren
sudo ln -s /etc/apparmor.d/usr.sbin.apache2 \ /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.apache2
Profil wieder aktivieren
sudo rm /etc/apparmor.d/disable/usr.sbin.apache2 sudo systemctl reload apparmor
Eigenes Profil erstellen
Neue Profile lassen sich komfortabel erzeugen.
sudo aa-genprof /usr/local/bin/meinprogramm
Während der Programmausführung analysiert AppArmor alle Zugriffe.
Anschließend können diese übernommen werden.
Profile automatisch erweitern
sudo aa-logprof
Dieses Werkzeug analysiert die Logdateien.
Neue Zugriffe können anschließend bequem übernommen werden.
Gerade bei der Profilerstellung spart dies enorm viel Arbeit.
Logs auswerten
AppArmor protokolliert Verstöße im Journal.
Beispielsweise:
journalctl -xe | grep apparmor
oder
dmesg | grep apparmor
Typische Meldung:
apparmor="DENIED"
Hier wird genau angezeigt:
- Anwendung
- Benutzer
- Datei
- Zugriffstyp
Typische geschützte Anwendungen
AppArmor eignet sich besonders für:
- Apache
- Nginx
- PHP-FPM
- MariaDB
- PostgreSQL
- Redis
- OpenSSH
- Dovecot
- Postfix
- Docker
- Podman
- Samba
- Bind9
Gerade öffentlich erreichbare Dienste profitieren erheblich.
AppArmor bei Docker
Auch Docker nutzt AppArmor.
Aktuelles Profil anzeigen:
docker inspect CONTAINERNAME
Dort erscheint beispielsweise:
docker-default
Eigene Profile können Container zusätzlich absichern.
Unterschiede zu SELinux
Beide Systeme verfolgen dasselbe Ziel.
FunktionAppArmorSELinuxEinrichtungEinfachKomplexProfilePfadbasiertKontextbasiertLernaufwandGeringHochDebianStandardOptionalUbuntuStandardOptionalRHELOptionalStandardPerformanceSehr gutSehr gutFlexibilitätHochSehr hoch
Für Debian- und Ubuntu-Server ist AppArmor meist die unkompliziertere Wahl.
Kombination mit weiteren Sicherheitswerkzeugen
AppArmor ergänzt andere Sicherheitslösungen ideal.
Empfehlenswert sind:
- UFW
- Fail2ban
- Lynis
- RKHunter
- AIDE
- auditd
- ClamAV
- Wazuh
- OSSEC
Während beispielsweise AIDE Dateiveränderungen erkennt, verhindert AppArmor viele Angriffe bereits im Vorfeld.
Best Practices
Für einen sicheren Linux-Server empfiehlt sich:
- AppArmor direkt nach der Installation aktivieren.
- Alle vorhandenen Profile im Enforce-Modus betreiben.
- Eigene Anwendungen mit Profilen absichern.
- Logs regelmäßig kontrollieren.
- Neue Profile zunächst im Complain-Modus testen.
- Nur benötigte Zugriffe erlauben.
- Profile regelmäßig überprüfen.
- AppArmor aktuell halten.
- Mit Firewalls und Intrusion Detection kombinieren.
- Nach Softwareupdates die Profile erneut testen.
Grenzen von AppArmor
AppArmor erhöht die Systemsicherheit erheblich, ersetzt jedoch keine weiteren Schutzmaßnahmen.
Nicht abgedeckt werden beispielsweise:
- Netzwerk-Firewall
- Malware-Erkennung
- Rootkit-Erkennung
- Schwachstellenscanner
- Integritätsprüfungen
- Sicherheitsupdates
AppArmor sollte deshalb immer Bestandteil eines umfassenden Sicherheitskonzepts sein.
AppArmor gehört zu den wirkungsvollsten Sicherheitsmechanismen unter Linux. Durch die konsequente Einschränkung von Anwendungen auf die tatsächlich benötigten Ressourcen lassen sich zahlreiche Angriffe bereits im Ansatz verhindern. Selbst wenn eine Anwendung kompromittiert wird, begrenzt AppArmor die möglichen Auswirkungen erheblich.
Besonders auf Debian-13-Servern ist AppArmor schnell eingerichtet und dank der mitgelieferten Profile sofort einsatzbereit. In Kombination mit einer Firewall, regelmäßigen Sicherheitsupdates, Intrusion-Detection-Werkzeugen wie AIDE und RKHunter sowie Hardening-Analysen mit Lynis entsteht ein mehrschichtiges Sicherheitskonzept, das Linux-Systeme nachhaltig schützt.