AA_123rf-7038011_JamesSteidl_123RF.jpg

© JamesSteidl, 123RF

Eingesperrt

Programmzugriffe kontrollieren mit AppArmor

16.01.2014
Standardanwendungen wie Webbrowser oder PDF-Reader stellen meist das größte Sicherheitsrisiko für das System dar. Gut, dass viele Linux-Distributionen bereits Schutzprogramme mitbringen, die solche Applikationen im Zaum halten.

Bereits vor der Jahrtausendwende verwendete die Firma Immunix in ihrer gleichnamigen Linux-Distribution das Werkzeug SubDomain zum Einsperren von Applikationen. Dabei erlaubten Profile, einer Anwendung Zugriff auf bestimmte Ordner, Dateien und Aktionen zu gewähren oder zu verbieten. Das Konstrukt beruht darauf, dass Linux ein Kernelmodul mit einer Schnittstelle für sicherheitsrelevante Aktionen bereitstellt – auf dieser fußt auch die Alternative SELinux.

SubDomain wurde nicht zuletzt aufgrund seiner simplen Bedienung schnell bekannt, 2005 taufte man es in AppArmor um. Im selben Jahr übernahm Novell die Firma Immunix – vor allem wegen der sicherheitsrelevanten Programme, die das Red-Hat-Derivat von anderen Distributionen unterschieden. Bis September 2007 trieb Novell die Entwicklung von AppArmor voran, heute kümmert sich vor allem Canonical (die Firma hinter Ubuntu) um das Projekt. Dessen Website finden Sie unter http://wiki.apparmor.net.

Profile

AppArmor bildet seit Oktober 2010 einen Bestandteil des Linux-Kernels, also seit Version 2.6.36. Die bekannten Distributionen OpenSuse, SLES und Ubuntu aktivieren es standardmäßig. Während des Boot-Vorgangs lädt das System vordefinierte Profildateien in den Kernel, womit zur Systemlaufzeit eine Sammlung von Regeln den Zugriff von Anwendungen auf das System einschränkt. Profile für AppArmor liegen in der Regel unter /etc/apparmor.d/ und sind nach dem Pfad zum jeweiligen ausführbaren Programm benannt. Regelt ein AppArmor-Profil beispielsweise die Berechtigungen für den NetBIOS-Dienst, so heißt die zugehörige Datei usr.sbin.nmbd.

Die Profile gestatten den Betrieb in drei Modi: Die erste Stufe, complain, bezeichnet den Lernmodus, wonach ein Profil zwar Zugriffsverletzungen mitloggt, aber nicht verhindert. Diese Einstufung ist sinnvoll, wenn Sie gerade ein neues Profil erstellen. Die nächste Stufe, enforce, stellt den Idealzustand dar: Sie protokolliert nicht nur Zugriffsverletzungen, sondern unterbindet sie auch. Der dritte Modus, den AppArmor für Profile vorsieht, heißt audit: Er vermerkt sowohl Regelanwendungen als auch Verstöße und eignet sich damit besonders gut für das Debugging von Anwendungen und Profilen.

Unter Ubuntu 12.04 LTS ist AppArmor standardmäßig aktiv. Behindert der Sicherheitsdienst Anwendungen oder Nutzer bei der Arbeit, dann deaktivieren Sie AppArmor temporär mit dem Kommando service apparmor teardown. Um es wieder zu starten, tippen Sie service apparmor restart. Der Aufruf service apparmor status zeigt den Betriebszustand und die geladenen Profile an. AppArmor unterstützt übrigens das vom Kernel bereitgestellte SecurityFS – damit lassen sich alle geladenen Profile auch im Filesystem einsehen. Diese überprüfen Sie mit dem Aufruf cat /sys/kernel/security/apparmor/profiles.

Profilaufbau

AppArmor-Profile folgen in der Regel stets dem gleichen, linearen Aufbau. Listing 1 zeigt als Beispiel ein simples AppArmor-Profil für die Datei /etc/apparmor.d/usr.sbin.nmbd.

Listing 1

#include <tunables/global>
/usr/sbin/nmbd flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/samba>
  capability net_bind_service,
  /proc/sys/kernel/core_pattern r,
  /usr/sbin/nmbd mr,
  /var/cache/samba/gencache.tdb rwk,
  /var/{cache,lib}/samba/browse.dat* rw,
  /var/{cache,lib}/samba/gencache.dat rw,
  /var/{cache,lib}/samba/wins.dat* rw,
  /var/{cache,lib}/samba/smb_krb5/ rw,
  /var/{cache,lib}/samba/smb_krb5/krb5.conf* rw,
  /var/{cache,lib}/samba/smb_tmp_krb5.* rw,
  /var/{cache,lib}/samba/sync.* rw,
  /var/{cache,lib}/samba/unexpected rw,
  /{,var/}run/samba/** rwk,
  # Site-specific additions and overrides.
  # See local/README for details.
  #include <local/usr.sbin.nmbd>
}

Zunächst bindet Zeile 1 eine Datei mit sinnvollen generischen Definitionen ein, die den Zugriff auf häufig benötigte Dateien und Ordner bestimmen. Zeile 3 gibt den Pfad zur ausführbaren Datei des Progamms nmbd an, für das dieses Profil gilt. Die Angabe der ausführbaren Datei öffnet zudem eine Konfigurationssektion, die – umschlossen von geschweiften Klammern – alle gewünschten Limitierungen und Zugriffsberechtigungen enthält. In diesem Beispiel kommt zudem das Flag (complain) zum Einsatz, womit das Profil derzeit im Lernmodus läuft.

Die ersten drei Zeilen im anwendungsspezifischen Block (ab Zeile 4) binden erneut generische Definitionen ein, wie sie häufig auch andere Profile verwenden. Die Zeile capability net_bind_service maskiert das Profil und damit auch die ausführbare Datei für den Kernel mit einer Art Rolle, mit der auch spezielle Berechtigungen verknüpft sind. Zum Beispiel darf die Datei einen TCP- oder UDP-Port unterhalb von 1024 öffnen.

Alle weiteren Zeilen legen fest, auf welche Dateien und Ordner der Dienst nmbd jeweils lesend beziehungsweise schreibend zugreifen darf. Das r steht dabei für "read", w für "write" und k für "lock". Eine vollständige Liste der Zugriffsberechtigungen zeigt die Tabelle "Permissions in AppArmor-Profilen".

Wie Listing 1 erkennen lässt, dürfen Sie von der Bash bekannte Sonderzeichen und reguläre Ausdrücke im Profil verwenden. Dies spart vor allem Platz und soll die Profile übersichtlicher gestalten.

Permissions in AppArmor-Profilen

Schalter erlaubt
r Lesezugriff
w Schreibzugriff
a Hinzufügen von Datei-Inhalten
l Setzen von Links
k Locken von Dateien
m Datei via mmap ins RAM laden
x Ausführen von Drittanwendungen

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.