AA_123rf-7038011_JamesSteidl_123RF.jpg

© JamesSteidl, 123RF

Programmzugriffe kontrollieren mit AppArmor

Eingesperrt

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
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...