Inhaltsverzeichnis
Dieses Kapitel erläutert, wie Novell® AppArmor-Profile erstellt und verwaltet werden. Die Erstellung von Novell AppArmor-Profilen kann beginnen, sobald die Programme für die Profilerstellung ausgewählt sind. Hilfe dazu erhalten Sie unter Kapitel 2, Auswählen zu immunisierender Programme (↑ Novell AppArmor 2.0-Administrationshandbuch ).
Dieser Abschnitt beschreibt die Syntax oder den Aufbau von Novell AppArmor-Profilen. Unter Abschnitt 3.1.1, „Zerlegen eines Novell AppArmor-Profils in seine Teile“ (↑ Novell AppArmor 2.0-Administrationshandbuch ) wird ein Beispiel für diese Syntax angegeben.
Novell AppArmor-Profilkomponenten werden Novell AppArmor-Regeln genannt. Derzeit gibt es zwei Haupttypen von Novell AppArmor-Regeln: Pfadeinträge und Funktionseinträge. Pfadeinträge geben an, worauf der Prozess im Dateisystem zugreifen kann. Funktionseinträge bieten eine präzisere Kontrolle darüber, welche Aktionen ein eingeschränkter Prozess durch andere Systemaufrufe, die Berechtigungen erfordern, ausführen darf. Inbegriffen sind eine Art Metaregel oder Direktiven, die Pfad- und Funktionseinträge von anderen Dateien abrufen.
Am einfachsten lässt sich anhand eines Beispiels erklären, woraus ein Profil besteht und wie ein Profil erstellt wird. Betrachten Sie das folgende Profil für das Programm /sbin/klogd
:
# profile to confine klogd /sbin/klogd { #include <abstractions/base> capability sys_admin, /boot/* r, /proc/kmsg r, /sbin/klogd r, /var/run/klogd.pid lw, }
Wenn ein Profil für ein Programm erstellt wird, kann das Programm nur auf die Dateien, Modi und POSIX-Funktionen zugreifen, die im Profil festgelegt sind. Diese Beschränkungen gelten zusätzlich zu den nativen Linux-Zugriffskontrollen.
Beispiel: .
Um die Funktion CAP_CHOWN
zu erhalten, muss das Programm auf CAP_CHOWN
unter konventionellen Linux-Zugriffskontrollen zugreifen können (typischerweise ein root-eigener Prozess sein) und gleichzeitig die Funktion chown in seinem Profil haben. Ebenso muss das Programm für das Schreiben in die Datei /foo/bar
die korrekte Benutzer-ID und Modusbits in den Datei-Attributen eingestellt haben (siehe die Manualpages chmod
und chown
) sowie /foo/bar w
in seinem Profil haben.
Versuche, die Novell AppArmor-Regeln zu verletzen, werden im Syslog aufgezeichnet. In vielen Fällen verhindern Novell AppArmor-Regeln einen erfolgreichen Angriff, da erforderliche Dateien nicht verfügbar sind und Novell AppArmor-Einschränkungen in allen Fällen den Schaden begrenzen, den der Angreifer an dem von Novell AppArmor zugelassenen Satz an Dateien anrichten kann.
#include
-Anweisungen sind Direktiven, die Komponenten von anderen Novell AppArmor-Profilen abrufen, um Profile zu vereinfachen. Include-Dateien rufen Zugriffsberechtigungen für Programme ab. Durch Verwenden einer include-Anweisung können Sie dem Programm Zugriff auf Verzeichnispfade oder Dateien geben, die auch von anderen Programmen benötigt werden. Mithilfe von include-Anweisungen lässt sich die Größe eines Profils verringern.
Standardmäßig wird die /etc/apparmor.d/
von der #include
-Anweisung am Anfang des Pfadnamens hinzugefügt, da davon ausgegangen wird, dass sich die include-Datei an dieser Stelle befindet. Im Unterschied zu anderen Profilanweisungen (aber ähnlich wie C-Programme) enden #include
-Zeilen nicht auf ein Komma.
Zur Unterstützung bei der Profilerstellung für Ihre Anwendung bietet Novell AppArmor zwei #include
-Klassen: Abstraktionen und Programmfragmente.
Abstraktionen sind #include
-Dateien, die nach gemeinsamen Anwendungsaufgaben gruppiert werden. Diese Aufgaben umfassen Zugriff auf Authentifizierungsmechanismen, auf Namensdienstroutinen, gängige Grafikanforderungen und Systemkonten. Dateien, die in diesen Abstraktionen aufgelistet sind, sind spezifisch für die angegebene Aufgabe. Programme, die eine dieser Dateien benötigen, brauchen gewöhnlich einige der anderen Dateien, die in der Abstraktionsdatei aufgelistet sind (abhängig von der lokalen Konfiguration sowie den spezifischen Anforderungen des Programms). Abstraktionen befinden sich in /etc/apparmor.d/abstractions/
.
Programmfragmente sind Zugriffskontrollen für bestimmte Programme, die ein Systemadministrator auf der Basis einer lokalen Standortrichtlinie steuern sollte. Jedes Fragment wird von einem einzelnen Programm benutzt. Fragmente dienen der einfacheren lokalen Modifizierung und Aktualisierung der Novell AppArmor-Richtlinien. Administratoren können die Richtlinien in diesen Dateien gemäß ihren Anforderungen modifizieren und die Programmprofile unverändert belassen. Dadurch vereinfacht sich das Zusammenführen von Novell AppArmor-Richtlinienaktualisierungen mit den geltenden Richtlinien an jedem Standort.
Die Zugriffsbeschränkungen in den Programmfragmenten sind typischerweise sehr großzügig und sollen Ihren Benutzern auf möglichst unaufdringliche Weise Zugriff auf ihre Dateien ermöglichen und gleichzeitig den Schutz der Systemressourcen gestatten. Eine Ausnahme zu dieser Regel stellt die postfix*
-Serie von Programmfragmenten dar. Diese Profile werden als Hilfe dafür benutzt, den Speicherort der postfix-Binärdateien zu abstrahieren. Wahrscheinlich möchten Sie die Berechtigungen in der postfix*
-Serie nicht reduzieren. Programmfragmente befinden sich in /etc/apparmor.d/program-chunks/
.