Home / LinuxUser / 2014 / 02 / Programmzugriffe kontrollieren mit AppArmor

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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
Tip a friend    Druckansicht Bookmark and Share
Kommentare

1765 Hits
Wertung: 143 Punkte (5 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...