AppArmor („Application Armor“) ist ein Sicherheitsmodul des Linux-Kernels, das einzelne Programme gezielt einschränkt. Statt den Nutzer zu fragen, legt ein Administrator pro Anwendung fest, auf welche Dateien, Netzwerkressourcen und Fähigkeiten (Capabilities) sie zugreifen darf – alles andere wird blockiert. Anders als klassische Dateirechte ist AppArmor eine Mandatory Access Control (MAC): Auch der Besitzer eines Prozesses kann dessen Rechte nicht einfach erweitern.
Wie funktioniert AppArmor?
AppArmor arbeitet pfadbasiert: Zu einem Programm gehört ein Profil, das Zugriffe auf konkrete Dateipfade erlaubt. Die Profile liegen unter /etc/apparmor.d/, zum Beispiel für den Webserver nginx. Läuft ein Programm im Modus enforce, werden Verstöße gegen das Profil verweigert; im Modus complain werden sie nur protokolliert – praktisch zum Testen neuer Profile.
sudo aa-status # geladene Profile anzeigen
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx # Profil erzwingen
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx # nur protokollieren
sudo aa-genprof /usr/bin/mein-programm # Profil interaktiv erzeugen
Geschichte und Verbreitung
AppArmor wurde ab 1998 von der Firma Immunix entwickelt, ging 2005 an Novell/SUSE und wird seit 2009 von Canonical gepflegt. Seit Kernel 2.6.36 (2010) ist es im Linux-Hauptkernel enthalten. Vorinstalliert und standardmäßig aktiv ist AppArmor vor allem auf Ubuntu, Debian und openSUSE. Docker-Container verwenden auf diesen Systemen automatisch AppArmor-Profile, wenn sie nicht deaktiviert werden.
Abgrenzung zu SELinux und Landlock
AppArmor ist nicht das einzige Sicherheitsmodul im Linux-Kernel: SELinux arbeitet labelbasiert statt pfadbasiert und ist bei Red-Hat-Familien Standard. Landlock ergänzt beide als unprivilegierte Sandbox-Funktion. Gemeinsam mit Sandbox-Konzepten, der Virtualisierung und Containern bilden diese Mechanismen die Verteidigungstiefe eines Linux-Systems im Kernel.