Mandatory Access Contro in Linuxl AppArmor steuert Zugriffsrechte von Prozessen in Linux-Systemen

Von Thomas Joos 4 min Lesedauer

Anbieter zum Thema

Mandatory Access Control (MAC) ist ein Sicherheitsmodell, das den Zugriff auf Ressourcen strikt kontrolliert und durchsetzt. In diesem Beitrag zeigen wir die Hintergründe von MAC und wie es sich in der Praxis in Linux-Systemen einsetzen lässt.

AppArmor ist ein Mandatory Access Control-System für Linux und bietet eine flexible und leistungsfähige Methode, um die Sicherheit in Linux-Umgebungen zu erhöhen.(Bild:  Dall-E / KI-generiert)
AppArmor ist ein Mandatory Access Control-System für Linux und bietet eine flexible und leistungsfähige Methode, um die Sicherheit in Linux-Umgebungen zu erhöhen.
(Bild: Dall-E / KI-generiert)

Mandatory Access Control (MAC) unterscheidet sich von Discretionary Access Control (DAC) durch die zentrale Verwaltung und die Unabhängigkeit vom Benutzer. In Linux-Systemen spielt AppArmor eine bedeutende Rolle bei der Implementierung von MAC, indem es die Zugriffsrechte von Prozessen und Anwendungen steuert. AppArmor bietet eine flexible und leistungsfähige Methode, um die Sicherheit in Linux-Umgebungen zu erhöhen, indem es Profile erstellt, die definieren, welche Ressourcen ein Prozess nutzen darf.

Grundlagen von Mandatory Access Control

Der Hauptunterschied zwischen DAC und MAC liegt in der Art und Weise, wie Zugriffskontrollen verwaltet und durchgesetzt werden. Während DAC dem Besitzer der Ressource die Kontrolle über Zugriffsrechte überlässt, wird bei MAC die Zugriffskontrolle zentral verwaltet und ist für Benutzer nicht veränderbar. MAC bietet eine höhere Sicherheit, da es verhindern kann, dass Prozesse auf unerlaubte Weise auf Ressourcen zugreifen, selbst wenn sie von böswilligen Benutzern oder Malware gestartet werden.

Bildergalerie

Einführung in AppArmor

AppArmor ist ein Mandatory Access Control-System für Linux. Es wurde entwickelt, um die Sicherheit von Linux-Systemen zu erhöhen, indem es den Zugriff von Anwendungen auf das System einschränkt. Im Vergleich zu anderen MAC-Systemen wie SELinux ist AppArmor leichter zu konfigurieren und zu verwalten. Die Lösung arbeitet mit Profilen, die den Zugriff von Anwendungen auf Dateien, Netzwerke und andere Ressourcen beschreiben. Diese Profile können angepasst werden, um spezifische Sicherheitsanforderungen zu erfüllen.

Installation und Konfiguration von AppArmor

Die Installation von AppArmor ist auf verschiedenen Linux-Distributionen einfach durchzuführen. Auf Ubuntu erfolgt die Installation mittels des folgenden Befehls:

sudo apt-get install apparmor apparmor-utils

Nach der Installation muss AppArmor aktiviert werden. Dies geschieht durch den folgenden Befehl:

sudo systemctl enable apparmorsudo systemctl start apparmor

Um den Status von AppArmor zu überprüfen, dient der Befehl:

sudo apparmor_status

Die grundlegenden Konfigurationsdateien von AppArmor befinden sich im Verzeichnis "/etc/apparmor.d/". Hier werden die Profile gespeichert, die die Zugriffsrechte der Anwendungen definieren.

AppArmor-Profile nutzen

AppArmor-Profile definieren, welche Dateien und Ressourcen eine Anwendung nutzen darf. Diese Profile bestehen aus verschiedenen Sektionen, die spezifische Berechtigungen festlegen. Ein einfaches Profil für eine Anwendung könnte folgendermaßen aussehen:

#include <tunables/global>/usr/bin/example { # Profil im Enforce-Modus #include <abstractions/base> /usr/bin/example r, /etc/example/* r, /var/log/example/* w,}

Dieses Profil erlaubt der Anwendung "/usr/bin/example" das Lesen aller Dateien im Verzeichnis "/etc/example" und das Schreiben in das Verzeichnis "/var/log/example". Es gibt drei Modi für AppArmor-Profile: Enforce, Complain und Unconfined. Im Enforce-Modus wird das Profil strikt durchgesetzt, während im Complain-Modus nur Verstöße protokolliert, aber nicht blockiert werden. Der Unconfined-Modus bedeutet, dass die Anwendung nicht durch AppArmor eingeschränkt wird.

Verwaltung von AppArmor-Profilen

AppArmor bietet mehrere Tools zur Verwaltung von Profilen. Mit aa-genprof können neue Profile generiert werden:

sudo aa-genprof /usr/bin/example

Das Tool aa-logprof hilft beim Anpassen von Profilen basierend auf den Protokolldateien:

sudo aa-logprof

Mit aa-complain kann ein Profil in den Complain-Modus versetzt werden:

sudo aa-complain /usr/bin/example

Um ein Profil in den Enforce-Modus zu versetzen, wird aa-enforce verwendet:

sudo aa-enforce /usr/bin/example

Ein praktisches Beispiel ist die Erstellung eines Profils für einen Webserver. Nachdem der Webserver gestartet und der Traffic überwacht wurde, können mit aa-logprof die notwendigen Berechtigungen hinzugefügt werden, um den Betrieb abzusichern.

Erweiterte AppArmor-Funktionen

AppArmor kann nicht nur den Zugriff auf Dateien, sondern auch auf Netzwerkressourcen und Systemfähigkeiten (Capabilities) steuern. Das folgende Profil zeigt, wie Netzwerkzugriffe beschränkt werden können:

#include <tunables/global>/usr/sbin/apache2 { # Profil im Enforce-Modus #include <abstractions/apache2-common> network inet tcp, /var/www/** r, /var/log/apache2/* w,}

Hier wird der Zugriff auf Netzwerke beschränkt und nur TCP-Verbindungen erlaubt. Außerdem wird der Zugriff auf spezifische Verzeichnisse und Dateien geregelt. Die Integration von AppArmor mit anderen Sicherheitstools, wie Firewalls oder Intrusion Detection Systemen, kann die Gesamtsicherheit weiter erhöhen. AppArmor kann beispielsweise zusammen mit iptables verwendet werden, um sowohl Netzwerksicherheit als auch Anwendungssicherheit zu gewährleisten.

Bildergalerie

Praxisbeispiele und Anwendungsszenarien

In der Praxis kann AppArmor verwendet werden, um Webserver wie Apache oder Nginx abzusichern. Ein Profil für Nginx kann folgendermaßen aussehen:

#include <tunables/global>/usr/sbin/nginx { # Profil im Enforce-Modus #include <abstractions/nginx-common> network inet tcp, /etc/nginx/nginx.conf r, /var/www/** r, /var/log/nginx/* w,}

Datenbankserver wie MySQL können ebenfalls durch AppArmor geschützt werden. Ein Beispielprofil für MySQL:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
#include <tunables/global>/usr/sbin/mysqld { # Profil im Enforce-Modus /etc/mysql/** r, /var/lib/mysql/** rwk, /var/log/mysql/** w, network inet stream,}

Für Container-Dienste wie Docker können spezifische Profile erstellt werden, um die Container-Umgebung zu sichern. Ein einfaches Docker-Profil:

#include <tunables/global>/usr/bin/docker { # Profil im Enforce-Modus /usr/bin/docker r, /var/lib/docker/** rw, /etc/docker/** r, /var/run/docker.sock rw, network inet stream,}

Ein wichtiger Aspekt bei der Verwaltung von AppArmor ist die regelmäßige Überprüfung und Anpassung der Profile, um sicherzustellen, dass sie stets den aktuellen Sicherheitsanforderungen entsprechen. Hierbei kann das Tool aa-cleanprof nützlich sein, welches dazu dient, unnötige und veraltete Einträge aus den Profilen zu entfernen. Zudem bietet das Tool aa-notify eine Möglichkeit, Benachrichtigungen über AppArmor-Ereignisse in Echtzeit anzuzeigen, was besonders hilfreich ist, um sofort auf potenzielle Sicherheitsvorfälle zu reagieren.

Um die Effizienz der Profilverwaltung zu erhöhen, kann auch die Verwendung von AppArmor-Parsern wie apparmor_parser empfohlen werden, die Profile validieren und kompilieren, bevor sie aktiviert werden. Dies hilft, Syntaxfehler zu vermeiden und sicherzustellen, dass die Profile korrekt angewendet werden. Ein weiterer Praxistipp ist die Integration von AppArmor in Continuous Integration/Continuous Deployment (CI/CD)-Pipelines, um automatisch Profile zu generieren und zu testen, bevor neue Anwendungen in die Produktionsumgebung übernommen werden. Dies gewährleistet, dass Sicherheitsrichtlinien von Anfang an berücksichtigt werden und kontinuierlich überprüft werden können.

(ID:50093512)