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 11/2014: VIDEOS BEARBEITEN

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

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...