05.08.2013 Aufrufe

3.4 Erstellen von Novell AppArmor-Profilen mit der - Index of

3.4 Erstellen von Novell AppArmor-Profilen mit der - Index of

3.4 Erstellen von Novell AppArmor-Profilen mit der - Index of

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Novell</strong> <strong>AppArmor</strong><br />

2.0<br />

07.04.2006 Administrationshandbuch<br />

www.novell.com


<strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch<br />

Autorenliste: Leona Beatrice Campbell, Jana Jaeger<br />

Diese Veröffentlichung ist das geistige Eigentum <strong>von</strong> <strong>Novell</strong>, Inc.<br />

Ihr Inhalt darf ganz o<strong>der</strong> teilweise dupliziert werden, s<strong>of</strong>ern jede Kopie einen sichtbaren Copyright-<br />

Hinweis trägt.<br />

Alle Informationen in diesem Buch wurden <strong>mit</strong> größter Sorgfalt zusammengestellt. Doch auch dadurch<br />

kann hun<strong>der</strong>tprozentige Richtigkeit nicht gewährleistet werden. We<strong>der</strong> SUSE LINUX GmbH noch<br />

die Autoren noch die Übersetzer können für mögliche Fehler und <strong>der</strong>en Folgen haftbar gemacht<br />

werden.<br />

<strong>Novell</strong>, das <strong>Novell</strong>-Logo, das N-Logo und SUSE sind eingetragene Marken <strong>von</strong> <strong>Novell</strong>, Inc., in den<br />

Vereinigten Staaten und an<strong>der</strong>en Län<strong>der</strong>n. * Linux ist eine eingetragene Marke <strong>von</strong> Linus Torvalds.<br />

Alle an<strong>der</strong>en Drittanbieter-Marken sind das Eigentum <strong>der</strong> jeweiligen Inhaber.<br />

Vorschläge und Kommentare richten Sie bitte an documentation@suse.de.


Inhaltsverzeichnis<br />

Über dieses Handbuch v<br />

1 Immunisieren <strong>von</strong> Programmen 9<br />

2 Auswählen zu immunisieren<strong>der</strong> Programme 11<br />

2.1 Immunisieren <strong>von</strong> Programmen, die Berechtigungen gewähren . . . . . 11<br />

2.2 Inspizieren <strong>of</strong>fener Ports zur Immunisierung <strong>von</strong> Programmen . . . . . . 12<br />

3 <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 19<br />

3.1 Pr<strong>of</strong>ilkomponenten und Syntax . . . . . . . . . . . . . . . . . . . 19<br />

3.2 <strong>Erstellen</strong> und Verwalten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> . . . . . . . . . 22<br />

3.3 <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong> YaST-GUI . . . . . . . . 24<br />

<strong>3.4</strong> <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> <strong>mit</strong> <strong>der</strong> Befehlszeilenschnittstelle . 49<br />

3.5 Zwei Methoden <strong>der</strong> Pr<strong>of</strong>ilerstellung . . . . . . . . . . . . . . . . . 54<br />

3.6 Pfadnamen und Platzhalter . . . . . . . . . . . . . . . . . . . . . 76<br />

3.7 Modi für Dateizugriffsberechtigungen . . . . . . . . . . . . . . . . 77<br />

4 Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 81<br />

4.1 Überwachen Ihrer geschützten Anwendungen . . . . . . . . . . . . . 81<br />

4.2 Einrichten <strong>der</strong> Ereignisbenachrichtigung . . . . . . . . . . . . . . . 82<br />

4.3 Berichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

4.4 Reaktion auf Sicherheitsereignisse . . . . . . . . . . . . . . . . . 108<br />

4.5 Pflegen Ihrer Sicherheitspr<strong>of</strong>ile . . . . . . . . . . . . . . . . . . . 109


5 <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache<br />

113<br />

5.1 Apache ChangeHat . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

5.2 Apache-Konfiguration für mod-apparmor . . . . . . . . . . . . . . 122<br />

6 Unterstützung 125<br />

6.1 Online-Aktualisierung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> . . . . . . . . . . . . . 125<br />

6.2 Verwenden <strong>der</strong> Manualpages . . . . . . . . . . . . . . . . . . . 125<br />

6.3 Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . 127<br />

6.4 Fehlerbehebung . . . . . . . . . . . . . . . . . . . . . . . . . 128<br />

6.5 Melden <strong>von</strong> Programmfehlern für <strong>AppArmor</strong> . . . . . . . . . . . . . 130<br />

Glossar 133


Über dieses Handbuch<br />

<strong>Novell</strong>® <strong>AppArmor</strong> bietet Anwendungssicherheit <strong>mit</strong> hohem Bedienungskomfort für<br />

Server und Arbeitsstationen. <strong>Novell</strong> <strong>AppArmor</strong> ist ein System zur Zugriffskontrolle,<br />

in dem Sie für jedes einzelne Programm angeben können, welche Dateien es lesen,<br />

schreiben und ausführen darf. <strong>AppArmor</strong> schützt Anwendungen durch das Erzwingen<br />

<strong>von</strong> zuverlässigem Anwendungsverhalten, ohne dass es sich auf Angriffssignaturen<br />

verlässt. Daher kann es Angriffe verhin<strong>der</strong>n, selbst wenn diese bisher unbekannte<br />

Schwachstellen nutzen.<br />

<strong>Novell</strong> <strong>AppArmor</strong> besteht aus:<br />

• Bibliothek <strong>von</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> für gängige Linux*-Anwendungen, die<br />

beschreiben, auf welche Dateien das Programm zugreifen muss.<br />

• Bibliothek <strong>von</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilbasisklassen (Pr<strong>of</strong>ilbausteine), die für gängige<br />

Anwendungsaktivitäten wie DNS-Lookup und Benutzerauthentifizierung erfor<strong>der</strong>lich<br />

sind.<br />

• Eine Programm-Suite zur Entwicklung und Erweiterung <strong>von</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong>,<br />

da<strong>mit</strong> Sie die bestehenden Pr<strong>of</strong>ile an Ihre Anfor<strong>der</strong>ungen anpassen und neue Pr<strong>of</strong>ile<br />

für Ihre eigenen lokalen und benutzerdefinierten Anwendungen erstellen können.<br />

• Mehrere speziell angepasste Anwendungen, die <strong>AppArmor</strong>-fähig sind, um erweiterte<br />

Sicherheit in Form <strong>von</strong> einzigartiger Einschränkung <strong>von</strong> Unterprozessen,<br />

einschließlich Apache, zu bieten.<br />

• Das ladbare <strong>Novell</strong> <strong>AppArmor</strong>-Kernel-Modul und zugehörige Steuerungsskripts<br />

zur Durchsetzung <strong>von</strong> <strong>AppArmor</strong>-Richtlinien auf Ihrem SUSE® Linux-System.<br />

In diesem Handbuch werden folgende Themen beschrieben:<br />

Immunisieren <strong>von</strong> Programmen<br />

Beschreibt den Betrieb <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>.<br />

Auswählen zu immunisieren<strong>der</strong> Programme<br />

Beschreibt die Programmtypen, für die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile erstellt werden<br />

sollten.


<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Beschreibt die Verwendung <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeuge zur Immunisierung<br />

Ihrer eigenen Programme und <strong>von</strong> Drittanbieterprogrammen, die eventuell auf<br />

Ihrem SUSE Linux-System installiert sind. Hilft Ihnen auch beim Hinzufügen,<br />

Bearbeiten o<strong>der</strong> Löschen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong>, die für Ihre Anwendungen erstellt wurden.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

Beschreibt die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilwartung, bei <strong>der</strong> Sie häufige Probleme<br />

er<strong>mit</strong>teln können.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache<br />

Ermöglicht Ihnen die Erstellung <strong>von</strong> Unterpr<strong>of</strong>ilen für den Apache-Webserver, <strong>mit</strong><br />

<strong>der</strong>en Hilfe Sie kleine Abschnitte <strong>der</strong> Web-Anwendungsverarbeitung stark einschränken<br />

können.<br />

Unterstützung<br />

Führt Support-Optionen für dieses Produkt auf.<br />

Glossar<br />

Bietet eine Liste <strong>von</strong> Begriffen und <strong>der</strong>en Definitionen.<br />

1 Feedback<br />

Wir würden uns über Ihre Kommentare und Vorschläge zu diesem Handbuch und<br />

an<strong>der</strong>en zu diesem Produkt gehörenden Dokumentationen freuen. Bitte verwenden Sie<br />

die Funktion „Benutzerkommentare“ unten auf den einzelnen Seiten <strong>der</strong> Online-<br />

Dokumentation und geben Sie dort Ihre Kommentare ein.<br />

2 Konventionen in <strong>der</strong><br />

Dokumentation<br />

In diesem Handbuch werden folgende typografische Konventionen verwendet:<br />

• /etc/passwd: Datei- und Verzeichnisnamen<br />

• Platzhalter: Ersetzen Sie Platzhalter durch den tatsächlichen Wert.<br />

vi <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• PATH: die Umgebungsvariable PATH<br />

• ls, --help: Befehle, Optionen und Parameter<br />

• user: Benutzer o<strong>der</strong> Gruppen<br />

• Alt , Alt + F1 : Eine Taste o<strong>der</strong> Tastenkombination; Tastennamen werden wie<br />

auf <strong>der</strong> Tastatur in Großbuchstaben dargestellt<br />

• Datei, Datei → Speichern unter: Menüelemente, Schaltflächen<br />

• Tanzende Pinguine (Kapitel „Pinguine“, ↑Verweis): Dies ist ein Verweis auf ein<br />

Kapitel in einem an<strong>der</strong>en Buch.<br />

Über dieses Handbuch vii


Immunisieren <strong>von</strong> Programmen<br />

<strong>Novell</strong>® <strong>AppArmor</strong> bietet Immunisierungstechniken, die SUSE Linux-Anwendungen<br />

vor inhärenten Risiken schützen. Nach dem Installieren <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>, Einrichten<br />

<strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> und Neustarten des Computers ist Ihr System<br />

immunisiert, da es beginnt, die <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsrichtlinien durchzusetzen.<br />

Der Schutz <strong>von</strong> Programmen <strong>mit</strong>hilfe <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> wird als Immunisieren<br />

bezeichnet.<br />

<strong>Novell</strong> <strong>AppArmor</strong> richtet eine Sammlung <strong>von</strong> Standardanwendungspr<strong>of</strong>ilen ein, um<br />

Linux-Standarddienste zu schützen. Um an<strong>der</strong>e Anwendungen zu schützen, verwenden<br />

Sie die <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeuge zum <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für diese Anwendungen.<br />

Dieses Kapitel stellt Ihnen die Philosophie <strong>der</strong> Immunisierung <strong>von</strong> Programmen<br />

vor. Fahren Sie <strong>mit</strong> Kapitel 3, <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> (S. 19) fort,<br />

wenn Sie bereit sind, <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile zu erstellen und zu verwalten.<br />

<strong>Novell</strong> <strong>AppArmor</strong> bietet eine optimierte Zugriffskontrolle für Netzwerkdienste durch<br />

die Angabe <strong>der</strong> Dateien, die jedes Programm lesen, schreiben und ausführen darf. Da<strong>mit</strong><br />

wird sichergestellt, dass jedes Programm ausschließlich die beabsichtigten Aktionen<br />

ausführt.<br />

<strong>Novell</strong> <strong>AppArmor</strong> verhin<strong>der</strong>t unbefugten Zugriff auf den Host und ist ein obligatorisches<br />

Zugriffskontrollschema, das für Server optimiert ist. Früher konzentrierten sich Zugriffskontrollschemata<br />

auf Benutzer, da sie für große Teilzeitsysteme erstellt wurden. Alternativ<br />

untersagen mo<strong>der</strong>ne Netzwerkserver weithin, dass sich Benutzer anmelden, son<strong>der</strong>n<br />

bieten den Benutzern eine Vielzahl <strong>von</strong> Netzwerkdiensten wie Web, Mail, Dateiserver<br />

und Drucken. <strong>Novell</strong> <strong>AppArmor</strong> steuert diesen Zugriff auf Netzwerkdienste und an<strong>der</strong>e<br />

Programme, um die Ausnutzung <strong>von</strong> Schwachstellen zu verhin<strong>der</strong>n.<br />

1<br />

Immunisieren <strong>von</strong> Programmen 9


Auswählen zu immunisieren<strong>der</strong><br />

Programme<br />

<strong>Novell</strong>® <strong>AppArmor</strong> setzt Programme unter Quarantäne, um das übrige System vor<br />

Schäden durch einen gefährdeten Prozess zu schützen. Sie sollten Ihre Ports inspizieren,<br />

um zu sehen, welche Programme ein Pr<strong>of</strong>il erhalten sollten (siehe Abschnitt 2.2,<br />

„Inspizieren <strong>of</strong>fener Ports zur Immunisierung <strong>von</strong> Programmen“ (S. 12)), und Pr<strong>of</strong>ile<br />

für alle Programme erstellen, die Berechtigungen gewähren (Abschnitt 2.1, „Immunisieren<br />

<strong>von</strong> Programmen, die Berechtigungen gewähren“ (S. 11)).<br />

2.1 Immunisieren <strong>von</strong> Programmen,<br />

die Berechtigungen gewähren<br />

Programme, die Pr<strong>of</strong>ile brauchen, sind solche, die Berechtigungen ver<strong>mit</strong>teln. Die folgenden<br />

Programme haben abweichend <strong>von</strong> <strong>der</strong> Person, welche das Programm benutzt,<br />

Zugriff auf Ressourcen, d. h.. sie gewähren dem Benutzer bei ihrer Verwendung die<br />

Berechtigung:<br />

Cron-Jobs<br />

Programme die regelmäßig durch cron ausgeführt werden. Solche Programme lesen<br />

Eingaben <strong>von</strong> einer Vielzahl <strong>von</strong> Quellen und können <strong>mit</strong> speziellen Berechtigungen<br />

laufen, manchmal sogar <strong>mit</strong> root-Berechtigung. Beispiel: cron kann<br />

/usr/bin/updatedb täglich ausführen, um die locate-Datenbank auf dem<br />

neuesten Stand zu halten, und verfügt über genügend Berechtigungen, um den<br />

Namen je<strong>der</strong> Datei im System zu lesen. Anleitungen zum Auffinden dieser Art <strong>von</strong><br />

Programmen erhalten Sie unter Abschnitt 2.2.1, „Immunisieren <strong>von</strong> Cron-Jobs“<br />

(S. 14).<br />

2<br />

Auswählen zu immunisieren<strong>der</strong> Programme 11


Webanwendungen<br />

Programme, die sich durch einen Webbrowser aufrufen lassen, einschließlich CGI-<br />

Skripts in Perl, PHP-Seiten und komplexere Webanwendungen. Anleitungen zum<br />

Auffinden dieser Art <strong>von</strong> Programmen erhalten Sie unter Abschnitt 2.2.2, „Immunisieren<br />

<strong>von</strong> Webanwendungen“ (S. 15).<br />

Netzwerkagenten<br />

Programme (Server und Clients) <strong>mit</strong> <strong>of</strong>fenen Netzwerkports. Überraschen<strong>der</strong>weise<br />

ver<strong>mit</strong>teln Benutzerclients wie Mail-Clients und Webbrowser Berechtigungen.<br />

Diese Programme werden <strong>mit</strong> <strong>der</strong> Berechtigung ausgeführt, in die Stammverzeichnisse<br />

des Benutzers zu schreiben, und sie verarbeiten Eingaben <strong>von</strong> potenziell<br />

feindseligen entfernten Quellen, wie feindseligen Websites und per E-Mail gesendeten<br />

bösartigen Code. Anleitungen zum Auffinden dieser Art <strong>von</strong> Programmen<br />

erhalten Sie unter Abschnitt 2.2.3, „Immunisieren <strong>von</strong> Netzwerkagenten“ (S. 17).<br />

Umgekehrt brauchen unprivilegierte Programme keine Pr<strong>of</strong>ile. Beispiel: Ein Shellskript<br />

kann das Programm cp aufrufen, um eine Datei zu kopieren. Da cp über kein eigenes<br />

Pr<strong>of</strong>il verfügt, erbt es das Pr<strong>of</strong>il des übergeordneten Shell-Skripts und kann daher alle<br />

Dateien kopieren, die das Pr<strong>of</strong>il des übergeordneten Shell-Skripts lesen und schreiben<br />

kann.<br />

2.2 Inspizieren <strong>of</strong>fener Ports zur<br />

Immunisierung <strong>von</strong> Programmen<br />

Eine automatisierte Methode zum Auffinden <strong>von</strong> Netzwerkserver-Daemons, für die<br />

ein Pr<strong>of</strong>il erstellt werden sollte, ist <strong>der</strong> Einsatz des Werkzeugs unconfined. Sie können<br />

auch einfach einen Bericht dieser Informationen in <strong>der</strong> grafischen YaST-Benutzeroberfläche<br />

ansehen. (Anweisungen finden Sie in „Anwendungsprüfbericht“ (S. 92).)<br />

Das Werkzeug unconfined verwendet den Befehl netstat -nlp, um Ihre <strong>of</strong>fenen<br />

Ports vom Computer aus zu inspizieren, die <strong>mit</strong> diesen Ports verbundenen Programme<br />

zu er<strong>mit</strong>teln und den geladenen <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilsatz zu prüfen. Unconfined<br />

meldet dann diese Programme zusammen <strong>mit</strong> dem <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il, das <strong>mit</strong><br />

jedem Programm verbunden ist, o<strong>der</strong> es meldet „none“, wenn das Programm nicht<br />

eingeschränkt ist.<br />

12 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


ANMERKUNG<br />

Wenn Sie ein neues Pr<strong>of</strong>il für ein Programm erstellen, müssen Sie das Programm<br />

neu starten, da<strong>mit</strong> unconfined den neuen Status <strong>mit</strong> Pr<strong>of</strong>il erkennen und melden<br />

kann.<br />

Beispiel einer Ausgabe <strong>von</strong> unconfined:<br />

2325 /sbin/portmap not confined<br />

3702❶ /usr/sbin/sshd❷ confined<br />

by '/usr/sbin/sshd❸ (enforce)'<br />

4040 /usr/sbin/ntpd confined by '/usr/sbin/ntpd (enforce)'<br />

4373 /usr/lib/postfix/master confined by '/usr/lib/postfix/master (enforce)'<br />

4505 /usr/sbin/httpd2-prefork confined by '/usr/sbin/httpd2-prefork (enforce)'<br />

5274 /sbin/dhcpcd not confined<br />

5592 /usr/bin/ssh not confined<br />

7146 /usr/sbin/cupsd confined by '/usr/sbin/cupsd (complain)'<br />

❶ Der erste Teil ist eine Zahl. Diese Zahl ist die Prozess-ID-Nummer (PID) des<br />

lauschenden Programms.<br />

❷ Der zweite Teil ist eine Zeichenfolge, die den absoluten Pfad des lauschenden<br />

Programms angibt.<br />

❸ Der letzte Teil gibt das Pr<strong>of</strong>il an, welches das Programm einschränkt, falls vorhanden.<br />

ANMERKUNG<br />

Unconfined benötigt root-Berechtigungen und sollte nicht <strong>von</strong> einer Shell<br />

ausgeführt werden, die durch ein <strong>AppArmor</strong>-Pr<strong>of</strong>il eingeschränkt ist.<br />

Unconfined unterscheidet nicht zwischen Netzwerkschnittstellen, daher meldet es alle<br />

uneingeschränkten Prozesse, selbst diejenigen, die an einer internen LAN-Schnittstelle<br />

lauschen.<br />

Das Auffinden <strong>von</strong> Netzwerk-Client-Benutzeranwendungen hängt <strong>von</strong> Ihren Benutzereinstellungen<br />

ab. Das Werkzeug unconfined erkennt und meldet Netzwerkports, die<br />

<strong>von</strong> Client-Anwendungen geöffnet wurden, allerdings nur die Client-Anwendungen,<br />

die während <strong>der</strong> unconfined-Analyse ausgeführt werden. Dies ist ein Problem, da<br />

Netzwerkdienste eher ständig laufen, während Netzwerk-Client-Anwendungen nur<br />

dann ausgeführt werden, wenn sie den Benutzer interessieren.<br />

Auswählen zu immunisieren<strong>der</strong> Programme 13


Das Übernehmen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> für Netzwerk-Client-Benutzeranwendungen<br />

hängt auch <strong>von</strong> Benutzereinstellungen ab und <strong>Novell</strong> <strong>AppArmor</strong> ist eher für<br />

Server als für Arbeitsstationen konzipiert. Daher überlassen wir die Pr<strong>of</strong>ilerstellung<br />

<strong>von</strong> Netzwerk-Client-Benutzeranwendungen dem Benutzer.<br />

Für die aggressive Einschränkung <strong>von</strong> Desktop-Anwendungen unterstützt <strong>der</strong> Befehl<br />

unconfined die Option "Paranoid", die alle laufenden Prozesse und die entsprechenden<br />

<strong>AppArmor</strong>-Pr<strong>of</strong>ile meldet, die eventuell <strong>mit</strong> jedem Prozess verbunden sein können.<br />

Der nicht eingeschränkte Benutzer kann dann entscheiden, ob jedes dieser Programme<br />

ein <strong>AppArmor</strong>-Pr<strong>of</strong>il benötigt.<br />

Wenn Sie über neue o<strong>der</strong> geän<strong>der</strong>te Pr<strong>of</strong>ile verfügen, können Sie sie zur Mailingliste<br />

apparmor-general@forge.novell.com hinzufügen und jeweils einen<br />

Anwendungsfall für das ausgeübte Anwendungsverhalten angeben. Das <strong>AppArmor</strong>-<br />

Team überprüft die Arbeit und über<strong>mit</strong>telt sie eventuell an openSUSE. Wir können<br />

nicht garantieren, dass alle Pr<strong>of</strong>ile aufgenommen werden, aber wir bemühen uns nach<br />

Kräften, so viele wie möglich aufzunehmen, sodass die Endbenutzer zu den Sicherheitspr<strong>of</strong>ilen<br />

in openSUSE beitragen können.<br />

2.2.1 Immunisieren <strong>von</strong> Cron-Jobs<br />

Für das Auffinden <strong>von</strong> Programmen, die <strong>von</strong> cron ausgeführt werden, müssen Sie Ihre<br />

lokale cron-Konfiguration prüfen. Lei<strong>der</strong> ist die cron-Konfiguration ziemlich komplex,<br />

daher sind zahlreiche Dateien zu inspizieren. Regelmäßige Cron-Jobs werden <strong>von</strong> den<br />

folgenden Dateien ausgeführt:<br />

/etc/crontab<br />

/etc/cron.d/*<br />

/etc/cron.daily/*<br />

/etc/cron.hourly/*<br />

/etc/cron.monthly/*<br />

/etc/cron.weekly/*<br />

Für die Cron-Jobs <strong>von</strong> root können Sie die Aufgaben <strong>mit</strong> crontab -e bearbeiten<br />

und die Cron-Aufgaben <strong>von</strong> root <strong>mit</strong> crontab -l auflisten. Sie müssen root-Benutzer<br />

sein, da<strong>mit</strong> diese Befehle funktionieren.<br />

Sobald Sie diese Programme gefunden haben, können Sie den Assistenten zum Hinzufügen<br />

<strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> verwenden, um Pr<strong>of</strong>ile für sie zu erstellen. Informationen finden<br />

Sie unter Abschnitt 3.3.1, „Hinzufügen eines Pr<strong>of</strong>ils <strong>mit</strong> dem Assistenten“ (S. 26).<br />

14 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


2.2.2 Immunisieren <strong>von</strong> Webanwendungen<br />

Zum Auffinden <strong>von</strong> Webanwendungen sollten Sie Ihre Webserver-Konfiguration<br />

untersuchen. Der Apache-Webserver ist stark konfigurierbar und Webanwendungen<br />

können abhängig <strong>von</strong> Ihrer lokalen Konfiguration in vielen Verzeichnissen gespeichert<br />

sein. Standardmäßig speichert SUSE Linux Webanwendungen unter /srv/www/<br />

cgi-bin/. Soweit irgend möglich, sollte jede Webanwendung durch ein <strong>Novell</strong><br />

<strong>AppArmor</strong>-Pr<strong>of</strong>il abgesichert werden.<br />

Sobald Sie diese Programme gefunden haben, können Sie den <strong>AppArmor</strong>-Assistenten<br />

zum Hinzufügen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> verwenden, um Pr<strong>of</strong>ile für sie zu erstellen. Informationen<br />

finden Sie unter Abschnitt 3.3.1, „Hinzufügen eines Pr<strong>of</strong>ils <strong>mit</strong> dem Assistenten“<br />

(S. 26).<br />

Einschränkung <strong>von</strong> CGI-Programmen und<br />

Unterprozessen in Webanwendungen<br />

Da CGI-Programme vom Apache-Webserver ausgeführt werden, muss das Pr<strong>of</strong>il für<br />

Apache usr.sbin.httpd2-prefork (für Apache2 unter SUSE Linux) geän<strong>der</strong>t<br />

werden, um Ausführungsberechtigungen für jedes dieser Programme hinzuzufügen.<br />

Beispiel: Das Hinzufügen <strong>der</strong> Zeile /srv/www/cgi-bin/my_hit_counter.pl<br />

rpx gibt Apache die Berechtigung, das Perl-Skript my_hit_counter.pl auszuführen,<br />

und verlangt, dass ein eigenes Pr<strong>of</strong>il für my_hit_counter.pl vorhanden ist.<br />

Wenn <strong>mit</strong> my_hit_counter.pl kein eigenes Pr<strong>of</strong>il verbunden ist, sollte die Regel<br />

/srv/www/cgi-bin/my_hit_counter.pl rix lauten, da<strong>mit</strong> my_hit<br />

_counter.pl das Pr<strong>of</strong>il usr.sbin.httpd2-prefork erbt.<br />

Einige Benutzer finden es eventuell unbequem, für jedes CGI-Skript, das Apache aufrufen<br />

könnte, Ausführungsberechtigungen anzugeben. Stattdessen kann <strong>der</strong> Administrator<br />

kontrollierten Zugriff auf Sammlungen <strong>von</strong> CGI-Skripts gewähren. Beispiel:<br />

Durch Hinzufügen <strong>der</strong> Zeile /srv/www/cgi-bin/*.{pl,py,pyc} rix kann<br />

Apache alle Dateien in /srv/www/cgi-bin/ ausführen, die auf .pl (Perl-Skripts)<br />

und .py o<strong>der</strong> .pyc (Python-Skripts) enden. Der ix-Teil <strong>der</strong> Regel sorgt dafür, dass<br />

die Python-Skripts das Apache-Pr<strong>of</strong>il erben, das geeignet ist, wenn Sie nicht für jedes<br />

Python-Skript ein eigenes Pr<strong>of</strong>il schreiben möchten.<br />

Auswählen zu immunisieren<strong>der</strong> Programme 15


ANMERKUNG<br />

Wenn Sie die Funktionalität des Moduls zur Einschränkung <strong>von</strong> Unterprozessen<br />

(mod-apparmor) bei <strong>der</strong> Verwendung <strong>von</strong> Apache-Modulen (mod_perl und<br />

mod_php) durch Webanwendungen wünschen, benutzen Sie beim Hinzufügen<br />

eines Pr<strong>of</strong>ils in YaST o<strong>der</strong> an <strong>der</strong> Befehlszeile die ChangeHat-Funktionen. Wie<br />

Sie die Einschränkung <strong>von</strong> Unterprozessen nutzen können, erfahren Sie unter<br />

Abschnitt 5.1, „Apache ChangeHat“ (S. 114).<br />

Die Pr<strong>of</strong>ilerstellung für Webanwendungen, die mod_perl und mod_php verwenden,<br />

erfor<strong>der</strong>t eine geringfügig an<strong>der</strong>e Vorgehensweise. In diesem Fall ist das „Programm“<br />

ein Skript, das direkt durch das Modul im Apache-Prozess interpretiert wird, daher<br />

findet kein exec-Systemaufruf statt. Stattdessen ruft die <strong>Novell</strong> <strong>AppArmor</strong>-Version <strong>von</strong><br />

Apache change_hat() auf und gibt ein Unterpr<strong>of</strong>il an (einen „Hat“), das dem Namen<br />

des angefor<strong>der</strong>ten URI entspricht.<br />

ANMERKUNG<br />

Der Name, den das auszuführende Skript erhält, ist eventuell nicht <strong>der</strong> URI,<br />

abhängig da<strong>von</strong>, wie Apache für die Suche nach Modulskripts konfiguriert<br />

wurde. Falls Sie Apache so konfiguriert haben, dass Skripts an einer an<strong>der</strong>en<br />

Stelle abgelegt werden, werden die an<strong>der</strong>en Namen im Syslog angezeigt, wenn<br />

<strong>Novell</strong> <strong>AppArmor</strong> Zugriffsverletzungen meldet. Siehe Kapitel 4, Verwalten <strong>von</strong><br />

Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> (S. 81).<br />

Für mod_perl- und mod_php-Skripts ist dies <strong>der</strong> Name des angefor<strong>der</strong>ten Perl-<br />

Skripts bzw. <strong>der</strong> angefor<strong>der</strong>ten PHP-Seite. Beispiel: Durch Hinzufügen dieses Unterpr<strong>of</strong>ils<br />

kann die Seite localtime.php ausgeführt werden und auf die lokale Systemzeit<br />

zugreifen:<br />

/usr/sbin/httpd2-prefork^/cgi-bin<br />

localtime.php {<br />

/etc/localtime r,<br />

/srv/www/cgi-bin/localtime.php r,<br />

/usr/lib/locale/** r,<br />

}<br />

Falls kein Unterpr<strong>of</strong>il definiert wurde, wendet die <strong>Novell</strong> <strong>AppArmor</strong>-Version <strong>von</strong><br />

Apache den Hat DEFAULT_URI an. Dieses Unterpr<strong>of</strong>il genügt im Prinzip, um eine<br />

HTML-Webseite anzuzeigen. Der Hat DEFAULT_URI, den <strong>Novell</strong> <strong>AppArmor</strong> standardmäßig<br />

zur Verfügung stellt:<br />

16 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


usr/sbin/suexec2 ixr,<br />

/var/log/apache2/** rwl,<br />

/home/*/public_html/** r,<br />

/srv/www/htdocs/** r,<br />

/srv/www/icons/*.{gif,jpg,png} r,<br />

/usr/share/apache2/** r,<br />

Wenn Sie ein einziges <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il für alle Webseiten und CGI-Skripts<br />

wünschen, die Apache bereitstellt, ist es eine gute Lösung, das<br />

DEFAULT_URI-Unterpr<strong>of</strong>il zu bearbeiten.<br />

2.2.3 Immunisieren <strong>von</strong> Netzwerkagenten<br />

Für das Auffinden <strong>von</strong> Netzwerkserver-Daemons, für die ein Pr<strong>of</strong>il erstellt werden<br />

sollte, prüfen Sie die <strong>of</strong>fenen Ports auf Ihrem Rechner, beachten Sie die Programme,<br />

die auf diesen Ports reagieren, und stellen Sie Pr<strong>of</strong>ile für möglichst viele dieser Programme<br />

zur Verfügung. Wenn Sie Pr<strong>of</strong>ile für alle Programme <strong>mit</strong> <strong>of</strong>fenen Netzwerkports<br />

bereitstellen, kann ein Angreifer nicht in das Dateisystem auf Ihrem Rechner gelangen,<br />

ohne eine <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilrichtlinie zu durchlaufen.<br />

Prüfen Sie Ihren Server manuell auf <strong>of</strong>fene Netzwerkports <strong>von</strong> außerhalb des Rechners<br />

<strong>mit</strong>hilfe eines Scanners wie nmap o<strong>der</strong> <strong>von</strong> innerhalb des Rechners <strong>mit</strong>hilfe <strong>von</strong> netstat.<br />

Inspizieren Sie dann den Rechner, um zu bestimmen, welche Programme auf den entdeckten<br />

<strong>of</strong>fenen Ports antworten.<br />

Auswählen zu immunisieren<strong>der</strong> Programme 17


<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Dieses Kapitel erläutert, wie <strong>Novell</strong>® <strong>AppArmor</strong>-Pr<strong>of</strong>ile erstellt und verwaltet werden.<br />

Die Erstellung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> kann beginnen, sobald die Programme<br />

für die Pr<strong>of</strong>ilerstellung ausgewählt sind. Hilfe dazu erhalten Sie unter Kapitel 2, Auswählen<br />

zu immunisieren<strong>der</strong> Programme (S. 11).<br />

3.1 Pr<strong>of</strong>ilkomponenten und Syntax<br />

Dieser Abschnitt beschreibt die Syntax o<strong>der</strong> den Aufbau <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong>.<br />

Unter Abschnitt 3.1.1, „Zerlegen eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils in seine Teile“ (S. 19)<br />

wird ein Beispiel für diese Syntax angegeben.<br />

3.1.1 Zerlegen eines <strong>Novell</strong><br />

<strong>AppArmor</strong>-Pr<strong>of</strong>ils in seine Teile<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilkomponenten werden <strong>Novell</strong> <strong>AppArmor</strong>-Regeln genannt.<br />

Derzeit gibt es zwei Haupttypen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Regeln: Pfadeinträge und<br />

Funktionseinträge. Pfadeinträge geben an, worauf <strong>der</strong> Prozess im Dateisystem zugreifen<br />

kann. Funktionseinträge bieten eine präzisere Kontrolle darüber, welche Aktionen ein<br />

eingeschränkter Prozess durch an<strong>der</strong>e Systemaufrufe, die Berechtigungen erfor<strong>der</strong>n,<br />

ausführen darf. Inbegriffen sind eine Art Metaregel o<strong>der</strong> Direktiven, die Pfad- und<br />

Funktionseinträge <strong>von</strong> an<strong>der</strong>en Dateien abrufen.<br />

3<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 19


Am einfachsten lässt sich anhand eines Beispiels erklären, woraus ein Pr<strong>of</strong>il besteht<br />

und wie ein Pr<strong>of</strong>il erstellt wird. Betrachten Sie das folgende Pr<strong>of</strong>il für das Programm<br />

/sbin/klogd:<br />

# pr<strong>of</strong>ile to confine klogd❶<br />

/sbin/klogd ❷<br />

{❸<br />

#include ❹<br />

capability sys_admin,❺<br />

/boot/* r❻,<br />

/proc/kmsg r,<br />

/sbin/klogd r,<br />

/var/run/klogd.pid lw,<br />

}<br />

❶ Ein Kommentar, <strong>der</strong> das Programm angibt, das durch dieses Pr<strong>of</strong>il eingeschränkt<br />

wird. Kommentaren wird immer das #-Zeichen vorangestellt.<br />

❷ Der absolute Pfad zu dem Programm, das eingeschränkt ist.<br />

❸ Die geschweiften Klammern {} dienen als Behälter für Include-Anweisungen<br />

<strong>von</strong> an<strong>der</strong>en <strong>Pr<strong>of</strong>ilen</strong> sowie für Pfad- und Funktionseinträge.<br />

❹ Diese Direktive ruft Komponenten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> ab, um Pr<strong>of</strong>ile<br />

zu vereinfachen.<br />

❺ Funktionseintragsanweisungen aktivieren jede <strong>der</strong> 29 Funktionen im POSIX.1e-<br />

Entwurf.<br />

❻ Ein Pfadeintrag, <strong>der</strong> angibt, auf welche Bereiche des Dateisystems das Programm<br />

zugreifen kann. Der erste Pfad eines Pfadeintrags gibt den absoluten Pfad einer<br />

Datei an (einschließlich <strong>der</strong> Verwendung <strong>von</strong> Platzhaltern in regulären Ausdrücken)<br />

und <strong>der</strong> zweite Teil die zulässigen Zugriffsmodi (r für Lesen, w für Schreiben<br />

und x für Ausführen). Ein beliebiger Abstand (Leerzeichen o<strong>der</strong> Tabulatoren)<br />

kann Pfadnamen vorangehen o<strong>der</strong> den Pfadnamen <strong>von</strong> den Zugriffsmodi trennen.<br />

Ein Abstand zwischen dem Zugriffsmodus und dem nachgestellten Komma ist<br />

optional.<br />

Wenn ein Pr<strong>of</strong>il für ein Programm erstellt wird, kann das Programm nur auf die Dateien,<br />

Modi und POSIX-Funktionen zugreifen, die im Pr<strong>of</strong>il festgelegt sind. Diese<br />

Beschränkungen gelten zusätzlich zu den nativen Linux-Zugriffskontrollen.<br />

Beispiel: Um die Funktion CAP_CHOWN zu erhalten, muss das Programm auf<br />

CAP_CHOWN unter konventionellen Linux-Zugriffskontrollen zugreifen können (typischerweise<br />

ein root-eigener Prozess sein) und gleichzeitig die Funktion chown in seinem<br />

20 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Pr<strong>of</strong>il haben. Ebenso muss das Programm für das Schreiben in die Datei /foo/bar<br />

die korrekte Benutzer-ID und Modusbits in den Datei-Attributen eingestellt haben<br />

(siehe die Manualpages chmod und chown) sowie /foo/bar w in seinem Pr<strong>of</strong>il<br />

haben.<br />

Versuche, die <strong>Novell</strong> <strong>AppArmor</strong>-Regeln zu verletzen, werden im Syslog aufgezeichnet.<br />

In vielen Fällen verhin<strong>der</strong>n <strong>Novell</strong> <strong>AppArmor</strong>-Regeln einen erfolgreichen Angriff, da<br />

erfor<strong>der</strong>liche Dateien nicht verfügbar sind und <strong>Novell</strong> <strong>AppArmor</strong>-Einschränkungen in<br />

allen Fällen den Schaden begrenzen, den <strong>der</strong> Angreifer an dem <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong><br />

zugelassenen Satz an Dateien anrichten kann.<br />

3.1.2 #include<br />

#include-Anweisungen sind Direktiven, die Komponenten <strong>von</strong> an<strong>der</strong>en <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> abrufen, um Pr<strong>of</strong>ile zu vereinfachen. Include-Dateien rufen Zugriffsberechtigungen<br />

für Programme ab. Durch Verwenden einer include-Anweisung<br />

können Sie dem Programm Zugriff auf Verzeichnispfade o<strong>der</strong> Dateien geben, die auch<br />

<strong>von</strong> an<strong>der</strong>en Programmen benötigt werden. Mithilfe <strong>von</strong> include-Anweisungen lässt<br />

sich die Größe eines Pr<strong>of</strong>ils verringern.<br />

Standardmäßig wird die /etc/apparmor.d/ <strong>von</strong> <strong>der</strong> #include-Anweisung am<br />

Anfang des Pfadnamens hinzugefügt, da da<strong>von</strong> ausgegangen wird, dass sich die include-<br />

Datei an dieser Stelle befindet. Im Unterschied zu an<strong>der</strong>en Pr<strong>of</strong>ilanweisungen (aber<br />

ähnlich wie C-Programme) enden #include-Zeilen nicht auf ein Komma.<br />

Zur Unterstützung bei <strong>der</strong> Pr<strong>of</strong>ilerstellung für Ihre Anwendung bietet <strong>Novell</strong> <strong>AppArmor</strong><br />

zwei #include-Klassen: Abstraktionen und Programmfragmente.<br />

Abstraktionen<br />

Abstraktionen sind #include-Dateien, die nach gemeinsamen Anwendungsaufgaben<br />

gruppiert werden. Diese Aufgaben umfassen Zugriff auf Authentifizierungsmechanismen,<br />

auf Namensdienstroutinen, gängige Grafikanfor<strong>der</strong>ungen und Systemkonten. Dateien,<br />

die in diesen Abstraktionen aufgelistet sind, sind spezifisch für die angegebene Aufgabe.<br />

Programme, die eine dieser Dateien benötigen, brauchen gewöhnlich einige <strong>der</strong> an<strong>der</strong>en<br />

Dateien, die in <strong>der</strong> Abstraktionsdatei aufgelistet sind (abhängig <strong>von</strong> <strong>der</strong> lokalen Konfiguration<br />

sowie den spezifischen Anfor<strong>der</strong>ungen des Programms). Abstraktionen<br />

befinden sich in /etc/apparmor.d/abstractions/.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 21


Programmfragmente<br />

Programmfragmente sind Zugriffskontrollen für bestimmte Programme, die ein Systemadministrator<br />

auf <strong>der</strong> Basis einer lokalen Standortrichtlinie steuern sollte. Jedes<br />

Fragment wird <strong>von</strong> einem einzelnen Programm benutzt. Fragmente dienen <strong>der</strong> einfacheren<br />

lokalen Modifizierung und Aktualisierung <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Richtlinien.<br />

Administratoren können die Richtlinien in diesen Dateien gemäß ihren Anfor<strong>der</strong>ungen<br />

modifizieren und die Programmpr<strong>of</strong>ile unverän<strong>der</strong>t belassen. Dadurch vereinfacht sich<br />

das Zusammenführen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Richtlinienaktualisierungen <strong>mit</strong> den geltenden<br />

Richtlinien an jedem Standort.<br />

Die Zugriffsbeschränkungen in den Programmfragmenten sind typischerweise sehr<br />

großzügig und sollen Ihren Benutzern auf möglichst unaufdringliche Weise Zugriff auf<br />

ihre Dateien ermöglichen und gleichzeitig den Schutz <strong>der</strong> Systemressourcen gestatten.<br />

Eine Ausnahme zu dieser Regel stellt die postfix*-Serie <strong>von</strong> Programmfragmenten<br />

dar. Diese Pr<strong>of</strong>ile werden als Hilfe dafür benutzt, den Speicherort <strong>der</strong> postfix-Binärdateien<br />

zu abstrahieren. Wahrscheinlich möchten Sie die Berechtigungen in <strong>der</strong><br />

postfix*-Serie nicht reduzieren. Programmfragmente befinden sich in /etc/<br />

apparmor.d/program-chunks/.<br />

3.1.3 Funktionseinträge (POSIX.1e)<br />

Funktionsanweisungen bestehen einfach aus dem Wort „capability“, gefolgt vom Namen<br />

<strong>der</strong> POSIX.1e-Funktion, wie auf <strong>der</strong> Manualpage capabilities(7) definiert.<br />

3.2 <strong>Erstellen</strong> und Verwalten <strong>von</strong><br />

<strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Es gibt drei Möglichkeiten, <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile zu erstellen und zu verwalten,<br />

je nachdem, welche Art <strong>der</strong> Computerumgebung Sie bevorzugen. Sie können die grafische<br />

YaST-Benutzeroberfläche (YaST GUI), den textbasierten YaST-ncurses-Modus<br />

(YaST-ncurses) o<strong>der</strong> die Befehlszeilenschnittstelle verwenden. Alle drei Optionen sind<br />

nützlich zur Erstellung und Pflege <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> und bieten gleichzeitig Optionen für<br />

die jeweiligen Benutzeranfor<strong>der</strong>ungen.<br />

22 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Für die Befehlszeilenschnittstelle wird vorausgesetzt, dass Sie <strong>mit</strong> Linux-Befehlen und<br />

<strong>der</strong> Verwendung <strong>von</strong> Terminalfenstern vertraut sind. Alle drei Methoden nutzen spezielle<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Werkzeuge zur Erstellung <strong>der</strong> Pr<strong>of</strong>ile, d. h., Ihnen wird die<br />

zeitraubende manuelle Erstellung erspart.<br />

3.2.1 Verwenden <strong>der</strong> grafischen<br />

YaST-Benutzeroberfläche<br />

Informationen über das <strong>Erstellen</strong> und Verwalten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong><br />

grafischen YaST-Benutzeroberfläche (GUI) finden Sie unter Abschnitt 3.3, „<strong>Erstellen</strong><br />

<strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong> YaST-GUI“ (S. 24).<br />

3.2.2 Arbeiten <strong>mit</strong> YaST-ncurses<br />

YaST-ncurses kann für die Erstellung und Verwaltung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

benutzt werden und eignen sich besser für Benutzer, <strong>der</strong>en Serververbindung nur über<br />

eine beschränkte Bandbreite verfügt. Greifen Sie auf YaST-ncurses zu, indem Sie yast<br />

in ein Terminalfenster eingeben, während Sie als root angemeldet sind. YaST-ncurses<br />

hat dieselben Funktionen wie die YaST-GUI.<br />

Beachten Sie die Anleitungen unter Abschnitt 3.3, „<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

<strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong> YaST-GUI“ (S. 24) zur Erstellung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> in<br />

YaST-ncurses. Bedenken Sie dabei, dass die Fenster unterschiedlich aussehen, aber<br />

ähnlich funktionieren.<br />

3.2.3 Arbeiten <strong>mit</strong> <strong>der</strong> Befehlszeile<br />

Für die Befehlszeilenschnittstelle wird vorausgesetzt, dass Sie <strong>mit</strong> Linux-Befehlen und<br />

<strong>der</strong> Verwendung <strong>von</strong> Terminalfenstern vertraut sind. Informationen über das <strong>Erstellen</strong><br />

und Verwalten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> <strong>mit</strong>hilfe <strong>der</strong> Befehlszeilenschnittstelle<br />

finden Sie unter Abschnitt <strong>3.4</strong>, „<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> <strong>mit</strong> <strong>der</strong><br />

Befehlszeilenschnittstelle“ (S. 49).<br />

Die Befehlszeilenschnittstelle bietet Zugriff auf einige Werkzeuge, die nicht über<br />

an<strong>der</strong>e <strong>Novell</strong> <strong>AppArmor</strong>-Verwaltungsmethoden zur Verfügung stehen:<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 23


complain<br />

Versetzt Pr<strong>of</strong>ile in den Meldungsmodus. Stellen Sie wie<strong>der</strong> den Erzwingen-Modus<br />

ein, wenn das System beginnen soll, die Regeln <strong>der</strong> Pr<strong>of</strong>ile durchzusetzen, nicht<br />

einfach nur Informationen zu protokollieren. Weitere Informationen zu diesem<br />

Werkzeug finden Sie unter „Meldungs- o<strong>der</strong> Lernmodus“ (S. 59).<br />

enforce<br />

Versetzt Pr<strong>of</strong>ile zurück in den Erzwingen-Modus und das System beginnt, die<br />

Regeln <strong>der</strong> Pr<strong>of</strong>ile durchzusetzen, nicht einfach nur Informationen zu protokollieren.<br />

Weitere Informationen zu diesem Werkzeug finden Sie unter „Erzwingen-Modus“<br />

(S. 60).<br />

unconfined<br />

Führt eine Serverprüfung durch, um laufende Prozesse zu finden, die Netzwerkverbindungen<br />

überwachen, und meldet dann, ob für diese Prozesse Pr<strong>of</strong>ile vorhanden<br />

sind.<br />

autodep<br />

Generiert ein Pr<strong>of</strong>ilgerüst für ein Programm und lädt dieses im Meldungsmodus<br />

in das <strong>Novell</strong> <strong>AppArmor</strong>-Modul.<br />

3.3 <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong><br />

YaST-GUI<br />

Öffnen Sie die YaST GUI, indem Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong> im Hauptmenü starten.<br />

<strong>Novell</strong> <strong>AppArmor</strong> wird wie folgt in <strong>der</strong> YaST-Oberfläche geöffnet:<br />

ANMERKUNG<br />

Sie können die YaST-Oberfläche auch starten, indem Sie ein Terminalfenster<br />

öffnen, sich als root anmelden und yast2 eingeben.<br />

24 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Im rechten Rahmen sehen Sie mehrere Symbole für <strong>Novell</strong> <strong>AppArmor</strong>-Optionen. Wenn<br />

<strong>Novell</strong> <strong>AppArmor</strong> nicht im linken Rahmen des YaST-Fensters angezeigt wird o<strong>der</strong> die<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Symbole nicht angezeigt werden, sollten Sie <strong>Novell</strong> <strong>AppArmor</strong> neu<br />

installieren. Die folgenden Optionen stehen in <strong>Novell</strong> <strong>AppArmor</strong> zur Verfügung.<br />

Klicken Sie auf eines <strong>der</strong> folgenden <strong>Novell</strong> <strong>AppArmor</strong>-Symbole und fahren Sie im<br />

unten angegebenen Abschnitt fort:<br />

Assistent zum Hinzufügen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

Detaillierte Schritte finden Sie unter Abschnitt 3.3.1, „Hinzufügen eines Pr<strong>of</strong>ils<br />

<strong>mit</strong> dem Assistenten“ (S. 26).<br />

Pr<strong>of</strong>il manuell hinzufügen<br />

Hinzufügen eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils für eine Anwendung auf Ihrem System<br />

ohne Unterstützung des Assistenten. Detaillierte Schritte finden Sie unter<br />

Abschnitt 3.3.2, „Manuelles Hinzufügen eines Pr<strong>of</strong>ils“ (S. 33).<br />

Pr<strong>of</strong>il bearbeiten<br />

Bearbeiten eines bestehenden <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils auf Ihrem System.<br />

Detaillierte Schritte finden Sie unter Abschnitt 3.3.3, „Bearbeiten eines Pr<strong>of</strong>ils“<br />

(S. 38).<br />

Pr<strong>of</strong>il löschen<br />

Löschen eines bestehenden <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils <strong>von</strong> Ihrem System. Detaillierte<br />

Schritte finden Sie unter Abschnitt 3.<strong>3.4</strong>, „Löschen eines Pr<strong>of</strong>ils“ (S. 40).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 25


Assistent zum Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

Detaillierte Schritte finden Sie unter Abschnitt 3.3.5, „Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

aus den Syslog-Einträgen“ (S. 41).<br />

<strong>AppArmor</strong>-Berichte<br />

Detaillierte Schritte finden Sie unter Abschnitt 4.3, „Berichte“ (S. 86).<br />

<strong>AppArmor</strong>-Kontrollleiste<br />

Detaillierte Schritte finden Sie unter Abschnitt 3.3.6, „Verwalten des Status <strong>von</strong><br />

<strong>Novell</strong> <strong>AppArmor</strong> und Sicherheitsereignissen“ (S. 47).<br />

3.3.1 Hinzufügen eines Pr<strong>of</strong>ils <strong>mit</strong> dem<br />

Assistenten<br />

Der Assistent zum Hinzufügen eines Pr<strong>of</strong>ils dient dem Einrichten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

<strong>Pr<strong>of</strong>ilen</strong> <strong>mit</strong>hilfe <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilwerkzeuge genpr<strong>of</strong> (Pr<strong>of</strong>il erstellen) und<br />

logpr<strong>of</strong> (Pr<strong>of</strong>ile aus Lernmodus-Protokolldatei aktualisieren). Weitere Informationen<br />

zu diesen Werkzeugen finden Sie unter Abschnitt 3.5.3, „Zusammenfassung <strong>der</strong> Pr<strong>of</strong>ilwerkzeuge“<br />

(S. 58).<br />

1 Stoppen Sie die Anwendung, bevor Sie Pr<strong>of</strong>ile erstellen, um sicherzustellen, dass<br />

<strong>der</strong> Anwendungsstart im Pr<strong>of</strong>il enthalten ist. Stellen Sie dazu sicher, dass die<br />

Anwendung o<strong>der</strong> <strong>der</strong> Daemon erst dann ausgeführt werden, wenn ein Pr<strong>of</strong>il für<br />

sie erstellt ist.<br />

Beispiel: Geben Sie /etc/init.d/PROGRAM stop in ein Terminalfenster<br />

ein, während Sie als root angemeldet sind. Ersetzen Sie dabei PROGRAM durch<br />

den Namen des Programms, für das Sie ein Pr<strong>of</strong>il erstellen möchten.<br />

2 Falls noch nicht geschehen, klicken Sie in <strong>der</strong> YaST-Oberfläche auf <strong>Novell</strong><br />

<strong>AppArmor</strong> → Add Pr<strong>of</strong>ile Wizard (Assistent zum Hinzufügen eines Pr<strong>of</strong>ils).<br />

26 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


3 Geben Sie den Namen <strong>der</strong> Anwendung ein o<strong>der</strong> navigieren Sie zum Speicherort<br />

des Programms.<br />

4 Klicken Sie auf <strong>Erstellen</strong>. Da<strong>mit</strong> wird das <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeug autodep<br />

ausgeführt, das eine statische Analyse des Programms ausführt, für das ein Pr<strong>of</strong>il<br />

erstellt werden soll, und ein vorläufiges Pr<strong>of</strong>il in das <strong>Novell</strong> <strong>AppArmor</strong>-Modul<br />

lädt. Weitere Informationen zu autodep finden Sie unter „autodep“ (S. 58).<br />

Das Fenster des <strong>AppArmor</strong>-Pr<strong>of</strong>ilassistenten wird geöffnet.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 27


Im Hintergrund setzt <strong>Novell</strong> <strong>AppArmor</strong> auch das Pr<strong>of</strong>il in den Lernmodus.<br />

Weitere Informationen zum Lernmodus finden Sie unter „Meldungs- o<strong>der</strong> Lernmodus“<br />

(S. 59).<br />

5 Führen Sie die Anwendung aus, für die ein Pr<strong>of</strong>il erstellt wird.<br />

6 Führen Sie möglichst viele <strong>der</strong> Anwendungsfunktionen aus, da<strong>mit</strong> <strong>der</strong> Lernmodus<br />

die Dateien und Verzeichnisse protokollieren kann, auf die das Programm für<br />

eine korrekte Funktion zugreifen muss.<br />

7 Klicken Sie auf Scan System Log for Entries to Add to Pr<strong>of</strong>ile (Systemprotokoll<br />

auf Einträge für Pr<strong>of</strong>il durchsuchen), um die Lernmodus-Protokolldateien zu<br />

analysieren. Da<strong>mit</strong> wird eine Serie <strong>von</strong> Fragen erzeugt, die Sie beantworten<br />

müssen, um den Assistenten beim Generieren des Sicherheitspr<strong>of</strong>ils anzuleiten.<br />

ANMERKUNG<br />

Wenn Anfor<strong>der</strong>ungen zum <strong>Erstellen</strong> <strong>von</strong> Hats auftreten, fahren Sie <strong>mit</strong><br />

Kapitel 5, <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat<br />

Apache (S. 113) fort.<br />

Die Fragen lassen sich in zwei Kategorien teilen:<br />

28 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• Von einem Programm <strong>mit</strong> Pr<strong>of</strong>il wird eine Ressource angefor<strong>der</strong>t, die sich<br />

nicht im Pr<strong>of</strong>il befindet (siehe Abbildung 3.1, „Lernmodus-Ausnahme:<br />

Kontrolle des Zugriffs auf bestimmte Ressourcen“ (S. 29)). Die Lernmodus-<br />

Ausnahme verlangt, dass Sie den Zugriff auf eine bestimmte Ressource<br />

erlauben o<strong>der</strong> ablehnen.<br />

• Ein Programm wird <strong>von</strong> dem Programm <strong>mit</strong> Pr<strong>of</strong>il ausgeführt, <strong>der</strong> Wechsel<br />

<strong>der</strong> Sicherheitsdomäne wurde nicht definiert (siehe Abbildung 3.2, „Lernmodus-Ausnahme:<br />

Definieren <strong>von</strong> Ausführungsberechtigungen für einen Eintrag“<br />

(S. 30)). Die Lernmodus-Ausnahme verlangt, dass Sie Ausführungsberechtigungen<br />

für einen Eintrag definieren.<br />

Je<strong>der</strong> dieser Fälle führt zu einer Serie <strong>von</strong> Fragen, die Sie beantworten müssen,<br />

um dem Pr<strong>of</strong>il die Ressource o<strong>der</strong> das Programm hinzuzufügen. Die folgenden<br />

beiden Abbildungen zeigen ein Beispiel für den jeweiligen Fall. Nachfolgende<br />

Schritte beschreiben Ihre Möglichkeiten bei <strong>der</strong> Beantwortung dieser Fragen.<br />

Das Fenster des <strong>AppArmor</strong>-Pr<strong>of</strong>ilassistenten wird geöffnet.<br />

Abbildung 3.1 Lernmodus-Ausnahme: Kontrolle des Zugriffs auf bestimmte<br />

Ressourcen<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 29


Abbildung 3.2 Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen<br />

für einen Eintrag<br />

8 Der Assistent zum Hinzufügen eines Pr<strong>of</strong>ils beginnt Verzeichnispfad-Einträge<br />

vorzuschlagen, auf welche die Anwendung, für die Sie ein Pr<strong>of</strong>il erstellen,<br />

zugegriffen hat (wie in Abbildung 3.1, „Lernmodus-Ausnahme: Kontrolle des<br />

Zugriffs auf bestimmte Ressourcen“ (S. 29) gezeigt), o<strong>der</strong> for<strong>der</strong>t Sie auf, Ausführungsberechtigungen<br />

für Einträge zu definieren (wie in Abbildung 3.2,<br />

„Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen für einen<br />

Eintrag“ (S. 30) gezeigt).<br />

a Für Abbildung 3.1, „Lernmodus-Ausnahme: Kontrolle des Zugriffs auf<br />

bestimmte Ressourcen“: Wählen Sie aus den folgenden Optionen die<br />

geeignete für die Zugriffsanfor<strong>der</strong>ung, etwa eine vorgeschlagene include-<br />

Anweisung, eine bestimmte Pfadversion <strong>mit</strong> Platzhaltern o<strong>der</strong> den tatsächlichen<br />

Pfadnamen. Beachten Sie, dass nicht immer alle Optionen verfügbar<br />

sind.<br />

#include<br />

Der Abschnitt eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils, <strong>der</strong> auf eine include-<br />

Datei verweist. Include-Dateien beziehen Zugriffsberechtigungen für<br />

Programme. Durch Verwenden einer include-Anweisung können Sie<br />

dem Programm Zugriff auf Verzeichnispfade o<strong>der</strong> Dateien geben, die<br />

30 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


auch <strong>von</strong> an<strong>der</strong>en Programmen benötigt werden. Mithilfe <strong>von</strong> include-<br />

Anweisungen lässt sich die Größe eines Pr<strong>of</strong>ils verringern. Es empfiehlt<br />

sich, include-Anweisungen zu wählen, wenn diese vorgeschlagen werden.<br />

Version <strong>mit</strong> Platzhalter<br />

Zugriff durch Klicken auf Glob, wie im nächsten Schritt beschrieben.<br />

Weitere Informationen zur Auflösung <strong>der</strong> Syntax finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

Tatsächlicher Pfadname<br />

Buchstabengetreu angegebener Pfad, auf den das Programm zugreifen<br />

muss, da<strong>mit</strong> es reibungslos ablaufen kann.<br />

b Für Abbildung 3.2, „Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen<br />

für einen Eintrag“: Wählen Sie aus den folgenden Optionen<br />

diejenige, die Ihren Zugriffsanfor<strong>der</strong>ungen entspricht.<br />

Inherit (Erben)<br />

Verbleiben im selben Sicherheitspr<strong>of</strong>il (übergeordnetes Pr<strong>of</strong>il).<br />

Pr<strong>of</strong>il<br />

Verlangt, dass ein separates Pr<strong>of</strong>il für das ausgeführte Programm existiert.<br />

Unconfined (Uneingeschränkt)<br />

Führt das Programm ohne Sicherheitspr<strong>of</strong>il aus.<br />

WARNUNG<br />

S<strong>of</strong>ern nicht unbedingt nötig, führen Sie das Programm nicht<br />

uneingeschränkt aus. Wenn Sie die Option Unconfined (Uneingeschränkt)<br />

wählen, wird das neue Programm ohne jeglichen Schutz<br />

<strong>von</strong> <strong>AppArmor</strong> ausgeführt.<br />

9 Nach <strong>der</strong> Wahl eines Verzeichnispfads müssen Sie diesen als einen Eintrag im<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il festlegen, indem Sie auf Allow (Erlauben) o<strong>der</strong> Deny<br />

(Ablehnen) klicken. Wenn Sie nicht <strong>mit</strong> dem angezeigten Eintrag des Verzeichnispfads<br />

einverstanden sind, können Sie ihn durch Glob o<strong>der</strong> Edit (Bearbeiten)<br />

än<strong>der</strong>n.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 31


Die folgenden Optionen sind für die Verarbeitung <strong>der</strong> Lernmodus-Einträge und<br />

die Erstellung des Pr<strong>of</strong>ils verfügbar:<br />

Allow (Erlauben)<br />

Gewährt dem Programm Zugriff auf die angegebenen Verzeichnispfad-Einträge.<br />

Der Assistent zum Hinzufügen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> schlägt Dateizugriffsberechtigung<br />

vor. Weitere Informationen dazu finden Sie unter Abschnitt 3.7,<br />

„Modi für Dateizugriffsberechtigungen“ (S. 77).<br />

Deny (Ablehnen)<br />

Klicken Sie auf Deny (Verweigern), um das Programm am Zugriff auf die<br />

angegebenen Verzeichnispfad-Einträge zu hin<strong>der</strong>n.<br />

Glob<br />

Durch Klicken auf diese Option wird <strong>der</strong> Verzeichnispfad (durch Verwendung<br />

<strong>von</strong> Platzhaltern) so geän<strong>der</strong>t, dass er alle Dateien im vorgeschlagenen Eintragsverzeichnis<br />

umfasst. Durch Doppelklicken auf diese Option wird <strong>der</strong><br />

Zugriff auf alle Dateien und Unterverzeichnisse unterhalb des angezeigten<br />

Verzeichnisses gewährt.<br />

Weitere Informationen zur Syntax <strong>mit</strong> Platzhaltern finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

Glob <strong>mit</strong> Erw<br />

Än<strong>der</strong>n des ursprünglichen Verzeichnispfads unter Beibehaltung <strong>der</strong><br />

Dateinamenerweiterung. Durch einen einzelnen Klick wird /etc/<br />

apache2/file.ext zu /etc/apache2/*.ext und <strong>der</strong> Platzhalter<br />

(Sternchen) wird anstelle des Dateinamens hinzugefügt. Da<strong>mit</strong> kann das<br />

Programm auf alle Dateien, die <strong>mit</strong> <strong>der</strong> Erweiterung .ext enden, in den<br />

vorgeschlagenen Verzeichnissen zugreifen. Durch Doppelklicken auf diese<br />

Option wird <strong>der</strong> Zugriff auf alle Dateien (<strong>mit</strong> <strong>der</strong> angegebenen Erweiterung)<br />

und Unterverzeichnisse unterhalb des angezeigten Verzeichnisses gewährt.<br />

Bearbeiten<br />

Ermöglicht die Bearbeitung <strong>der</strong> markierten Zeile. Die neue (bearbeitete)<br />

Zeile erscheint am Ende <strong>der</strong> Liste.<br />

Abbrechen<br />

Bricht logpr<strong>of</strong> ab, verwirft alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

belässt die Pr<strong>of</strong>ile unverän<strong>der</strong>t.<br />

32 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Beenden<br />

Beendet logpr<strong>of</strong>, speichert alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

än<strong>der</strong>t alle Pr<strong>of</strong>ile entsprechend.<br />

Klicken Sie für jeden Lernmodus-Eintrag auf Allow (Erlauben) o<strong>der</strong> Deny<br />

(Ablehnen). Diese Einträge helfen bei <strong>der</strong> Erstellung des <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>ils.<br />

ANMERKUNG<br />

Die Anzahl <strong>der</strong> Lernmodus-Einträge hängt <strong>von</strong> <strong>der</strong> Komplexität <strong>der</strong><br />

Anwendung ab.<br />

Wie<strong>der</strong>holen Sie die vorherigen Schritte, wenn Sie in Ihrer Anwendung mehr<br />

Funktionalität ausführen müssen.<br />

Wenn Sie fertig sind, klicken Sie auf Beenden. Klicken Sie im darauf folgenden<br />

Popup-Fenster auf Ja, um den Assistenten zur Pr<strong>of</strong>ilerstellung zu beenden. Das<br />

Pr<strong>of</strong>il wird gespeichert und in das <strong>Novell</strong> <strong>AppArmor</strong>-Modul geladen.<br />

3.3.2 Manuelles Hinzufügen eines Pr<strong>of</strong>ils<br />

<strong>Novell</strong> <strong>AppArmor</strong> ermöglicht Ihnen, ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il durch manuelles<br />

Hinzufügen <strong>von</strong> Einträgen im Pr<strong>of</strong>il zu erstellen. Sie müssen einfach die Anwendung<br />

auswählen, für die das Pr<strong>of</strong>il erstellt wird, und dann Einträge hinzufügen.<br />

1 Um ein Pr<strong>of</strong>il hinzuzufügen, öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>. Die <strong>Novell</strong><br />

<strong>AppArmor</strong>-Oberfläche wird geöffnet.<br />

2 Klicken Sie in <strong>Novell</strong> <strong>AppArmor</strong> auf Pr<strong>of</strong>il manuell hinzufügen (siehe Abbildung<br />

3.3, „Manuelles Hinzufügen eines Pr<strong>of</strong>ils: Anwendung auswählen“ (S. 34)).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 33


Abbildung 3.3 Manuelles Hinzufügen eines Pr<strong>of</strong>ils: Anwendung auswählen<br />

3 Navigieren Sie in Ihrem System zu <strong>der</strong> Anwendung, für die das Pr<strong>of</strong>il erstellt<br />

werden soll.<br />

4 Um das Pr<strong>of</strong>il zu finden, wählen Sie es aus und klicken Sie auf Öffnen. Ein<br />

grundlegendes leeres Pr<strong>of</strong>il wird im Dialogfeld <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il angezeigt.<br />

5 Im Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ildialog können Sie <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ileinträge<br />

hinzufügen, bearbeiten o<strong>der</strong> löschen, indem Sie auf die entsprechenden Schalt-<br />

34 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


flächen klicken und die folgenden Abschnitte beachten: „Hinzufügen eines Eintrags“<br />

(S. 35), „Bearbeiten eines Eintrags“ (S. 37) bzw. „Bearbeiten eines Eintrags“<br />

(S. 37).<br />

6 Wenn Sie fertig sind, klicken Sie auf Fertig.<br />

Hinzufügen eines Eintrags<br />

Dieser Abschnitt erläutert die Option Add Entry (Eintrag hinzufügen) in Abschnitt 3.3.2,<br />

„Manuelles Hinzufügen eines Pr<strong>of</strong>ils“ (S. 33) o<strong>der</strong> Abschnitt 3.3.3, „Bearbeiten eines<br />

Pr<strong>of</strong>ils“ (S. 38). Wenn Sie Add Entry (Eintrag hinzufügen) wählen, zeigt eine Dropdown-<br />

Liste die Eintragstypen, die Sie dem <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il hinzufügen können.<br />

• Wählen Sie eine <strong>der</strong> folgenden Optionen aus <strong>der</strong> Liste:<br />

File (Datei)<br />

Geben Sie im Popup-Fenster den absoluten Pfad einer Datei samt <strong>der</strong><br />

erlaubten Zugriffsart an. Klicken Sie zum Abschluss auf OK.<br />

Bei Bedarf können Sie Platzhalter verwenden. Informationen zu Platzhaltern<br />

finden Sie unter Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76). Informationen<br />

zu Dateizugriffsberechtigungen finden Sie unter Abschnitt 3.7,<br />

„Modi für Dateizugriffsberechtigungen“ (S. 77).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 35


Directory (Verzeichnis)<br />

Geben Sie im Popup-Fenster den absoluten Pfad eines Verzeichnisses samt<br />

<strong>der</strong> erlaubten Zugriffsart an. Bei Bedarf können Sie Platzhalter verwenden.<br />

Klicken Sie zum Abschluss auf OK.<br />

Informationen zu Platzhaltern finden Sie unter Abschnitt 3.6, „Pfadnamen<br />

und Platzhalter“ (S. 76). Informationen zu Dateizugriffsberechtigungen<br />

finden Sie unter Abschnitt 3.7, „Modi für Dateizugriffsberechtigungen“<br />

(S. 77).<br />

Funktion<br />

Wählen Sie in dem Popup-Fenster die geeigneten Funktionen. Dabei handelt<br />

es sich um Anweisungen, die jede <strong>der</strong> 32 Funktionen im POSIX.1e-Entwurf<br />

aktivieren. Weitere Informationen über Funktionen erhalten Sie unter<br />

Abschnitt 3.1.1, „Zerlegen eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils in seine Teile“<br />

(S. 19). Nachdem Sie Ihre Auswahl getr<strong>of</strong>fen haben, klicken Sie auf OK.<br />

36 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Include<br />

Navigieren Sie in dem Popup-Fenster zu den Dateien, die als include-<br />

Dateien genutzt werden sollen. Include-Dateien sind Direktiven, die Komponenten<br />

<strong>von</strong> an<strong>der</strong>en <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> abrufen, um Pr<strong>of</strong>ile zu vereinfachen.<br />

Weitere Informationen finden Sie in Abschnitt 3.1.2, „#include“<br />

(S. 21).<br />

Bearbeiten eines Eintrags<br />

Dieser Abschnitt erläutert die Option Edit Entry (Eintrag bearbeiten) in Abschnitt 3.3.2,<br />

„Manuelles Hinzufügen eines Pr<strong>of</strong>ils“ (S. 33) o<strong>der</strong> Abschnitt 3.3.3, „Bearbeiten eines<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 37


Pr<strong>of</strong>ils“ (S. 38). Wenn Sie Edit Entry (Eintrag bearbeiten) wählen, wird das Dateibrowser-Fenster<br />

geöffnet. Hier können Sie den ausgewählten Eintrag bearbeiten.<br />

Geben Sie im Popup-Fenster den absoluten Pfad einer Datei samt <strong>der</strong> erlaubten Zugriffsart<br />

an. Bei Bedarf können Sie Platzhalter verwenden. Klicken Sie zum Abschluss auf<br />

OK.<br />

Informationen zu Platzhaltern finden Sie unter Abschnitt 3.6, „Pfadnamen und Platzhalter“<br />

(S. 76). Informationen zu Dateizugriffsberechtigungen finden Sie unter<br />

Abschnitt 3.7, „Modi für Dateizugriffsberechtigungen“ (S. 77).<br />

Löschen eines Eintrags<br />

Dieser Abschnitt erläutert die Option Delete Entry (Eintrag löschen) in Abschnitt 3.3.2,<br />

„Manuelles Hinzufügen eines Pr<strong>of</strong>ils“ (S. 33) o<strong>der</strong> Abschnitt 3.3.3, „Bearbeiten eines<br />

Pr<strong>of</strong>ils“ (S. 38). Wenn Sie einen Eintrag auswählen und dann Delete Entry (Eintrag<br />

löschen) wählen, entfernt <strong>Novell</strong> <strong>AppArmor</strong> den ausgewählten Pr<strong>of</strong>ileintrag.<br />

3.3.3 Bearbeiten eines Pr<strong>of</strong>ils<br />

<strong>Novell</strong> <strong>AppArmor</strong> ermöglicht Ihnen, <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile manuell zu bearbeiten,<br />

indem Sie Einträge hinzufügen, bearbeiten o<strong>der</strong> löschen. Sie müssen einfach das Pr<strong>of</strong>il<br />

auswählen und dann Einträge hinzufügen, bearbeiten o<strong>der</strong> löschen. Führen Sie die folgenden<br />

Schritte aus, um ein Pr<strong>of</strong>il zu bearbeiten:<br />

38 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


1 Öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>.<br />

2 Klicken Sie unter <strong>Novell</strong> <strong>AppArmor</strong> auf Pr<strong>of</strong>il bearbeiten. Das Fenster Edit<br />

Pr<strong>of</strong>ile—Choose Pr<strong>of</strong>ile to Edit (Pr<strong>of</strong>il bearbeiten – Pr<strong>of</strong>il auswählen) wird<br />

geöffnet.<br />

3 Wählen Sie aus <strong>der</strong> Liste <strong>der</strong> Programme <strong>mit</strong> Pr<strong>of</strong>il das Pr<strong>of</strong>il, das Sie bearbeiten<br />

möchten.<br />

4 Klicken Sie auf Weiter. Das Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ildialog zeigt das Pr<strong>of</strong>il an.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 39


5 Im Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ildialog können Sie <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ileinträge<br />

hinzufügen, bearbeiten o<strong>der</strong> löschen, indem Sie auf die entsprechenden Schaltflächen<br />

klicken und die folgenden Abschnitte beachten: „Hinzufügen eines Eintrags“<br />

(S. 35), „Bearbeiten eines Eintrags“ (S. 37) bzw. „Löschen eines Eintrags“<br />

(S. 38).<br />

6 Wenn Sie fertig sind, klicken Sie auf Fertig.<br />

7 Klicken Sie im darauf folgenden Popup-Fenster auf Ja, um die Än<strong>der</strong>ungen des<br />

Pr<strong>of</strong>ils zu bestätigen.<br />

3.<strong>3.4</strong> Löschen eines Pr<strong>of</strong>ils<br />

<strong>Novell</strong> <strong>AppArmor</strong> ermöglicht Ihnen, ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il manuell zu löschen.<br />

Sie müssen einfach die Anwendung auswählen, für die ein Pr<strong>of</strong>il gelöscht werden soll,<br />

und dieses dann wie folgt löschen:<br />

1 Öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>. Die <strong>Novell</strong> <strong>AppArmor</strong>-Oberfläche wird<br />

angezeigt.<br />

40 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


2 Klicken Sie unter <strong>Novell</strong> <strong>AppArmor</strong> auf das Symbol Pr<strong>of</strong>il löschen. Das Fenster<br />

Delete Pr<strong>of</strong>ile - Choose Pr<strong>of</strong>ile to Delete (Pr<strong>of</strong>il löschen – Pr<strong>of</strong>il auswählen)<br />

wird geöffnet.<br />

3 Wählen Sie das zu löschende Pr<strong>of</strong>il aus.<br />

4 Klicken Sie auf Weiter.<br />

5 Klicken Sie im darauf folgenden Popup-Fenster auf Ja, um das Pr<strong>of</strong>il zu löschen.<br />

3.3.5 Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> aus den<br />

Syslog-Einträgen<br />

Der <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilassistent verwendet das Werkzeug logpr<strong>of</strong>, das Protokolldateien<br />

scannt und Ihnen ermöglicht, Pr<strong>of</strong>ile zu aktualisieren. logpr<strong>of</strong> verfolgt die<br />

Meldungen aus dem <strong>Novell</strong> <strong>AppArmor</strong>-Modul, die Ausnahmen für alle auf Ihrem<br />

System ausgeführten Pr<strong>of</strong>ile darstellen. Diese Ausnahmen repräsentieren das Verhalten<br />

<strong>der</strong> Anwendung <strong>mit</strong> Pr<strong>of</strong>il, die sich außerhalb <strong>der</strong> Pr<strong>of</strong>ildefinition für das Programm<br />

befindet. Sie können dem betreffenden Pr<strong>of</strong>il das neue Verhalten hinzufügen, indem<br />

Sie den vorgeschlagenen Pr<strong>of</strong>ileintrag auswählen.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 41


1 Öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>. Die <strong>Novell</strong> <strong>AppArmor</strong>-Oberfläche wird<br />

angezeigt.<br />

2 Klicken Sie unter <strong>Novell</strong> <strong>AppArmor</strong> auf Assistent zum Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong>.<br />

Das Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ilassistent wird geöffnet.<br />

Beim Ausführen des Assistenten zum Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> (logpr<strong>of</strong>) werden<br />

die Lernmodus-Protokolldateien analysiert. Da<strong>mit</strong> wird eine Serie <strong>von</strong> Fragen<br />

erzeugt, die Sie beantworten müssen, um logpr<strong>of</strong> beim Generieren des Sicherheitspr<strong>of</strong>ils<br />

zu lenken.<br />

Die Fragen lassen sich in zwei Kategorien teilen:<br />

• Von einem Programm <strong>mit</strong> Pr<strong>of</strong>il wird eine Ressource angefor<strong>der</strong>t, die sich<br />

nicht im Pr<strong>of</strong>il befindet (siehe Abbildung <strong>3.4</strong>, „Lernmodus-Ausnahme:<br />

Kontrolle des Zugriffs auf bestimmte Ressourcen“ (S. 43)).<br />

• Ein Programm wird <strong>von</strong> dem Programm <strong>mit</strong> Pr<strong>of</strong>il ausgeführt und <strong>der</strong><br />

Wechsel <strong>der</strong> Sicherheitsdomäne wurde nicht definiert (siehe Abbildung 3.5,<br />

„Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen für<br />

einen Eintrag“ (S. 43)).<br />

Je<strong>der</strong> dieser Fälle führt zu einer Frage, die Sie beantworten müssen, um dem<br />

Pr<strong>of</strong>il die Ressource o<strong>der</strong> das Programm hinzuzufügen. Die folgenden beiden<br />

42 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Abbildungen zeigen ein Beispiel für den jeweiligen Fall. Nachfolgende Schritte<br />

beschreiben Ihre Möglichkeiten bei <strong>der</strong> Beantwortung dieser Fragen.<br />

Abbildung <strong>3.4</strong> Lernmodus-Ausnahme: Kontrolle des Zugriffs auf bestimmte<br />

Ressourcen<br />

Abbildung 3.5 Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen<br />

für einen Eintrag<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 43


3 logpr<strong>of</strong> beginnt Verzeichnispfad-Einträge vorzuschlagen, auf welche die<br />

Anwendung, für die Sie ein Pr<strong>of</strong>il erstellen, zugegriffen hat (wie in Abbildung <strong>3.4</strong>,<br />

„Lernmodus-Ausnahme: Kontrolle des Zugriffs auf bestimmte Ressourcen“<br />

(S. 43) gezeigt), o<strong>der</strong> for<strong>der</strong>t Sie auf, Ausführungsberechtigungen für Einträge<br />

zu definieren (wie in Abbildung 3.5, „Lernmodus-Ausnahme: Definieren <strong>von</strong><br />

Ausführungsberechtigungen für einen Eintrag“ (S. 43) gezeigt).<br />

a Für Abbildung <strong>3.4</strong>, „Lernmodus-Ausnahme: Kontrolle des Zugriffs auf<br />

bestimmte Ressourcen“ (S. 43): Wählen Sie aus den folgenden Optionen<br />

die geeignete für die Zugriffsanfor<strong>der</strong>ung, etwa eine vorgeschlagene include-<br />

Anweisung, eine bestimmte Pfadversion <strong>mit</strong> Platzhaltern o<strong>der</strong> den tatsächlichen<br />

Pfadnamen. Beachten Sie, dass nicht immer alle Optionen verfügbar<br />

sind.<br />

#include<br />

Der Abschnitt eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils, <strong>der</strong> auf eine include-<br />

Datei verweist. Include-Dateien rufen Zugriffsberechtigungen für Programme<br />

ab. Durch Verwenden einer include-Anweisung können Sie<br />

dem Programm Zugriff auf Verzeichnispfade o<strong>der</strong> Dateien geben, die<br />

auch <strong>von</strong> an<strong>der</strong>en Programmen benötigt werden. Mithilfe <strong>von</strong> include-<br />

Anweisungen lässt sich die Größe eines Pr<strong>of</strong>ils verringern. Es empfiehlt<br />

sich, include-Anweisungen zu wählen, wenn diese vorgeschlagen werden.<br />

Version <strong>mit</strong> Platzhalter<br />

Zugriff durch Klicken auf Glob, wie im nächsten Schritt beschrieben.<br />

Weitere Informationen zur Auflösung <strong>der</strong> Syntax finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

Tatsächlicher Pfadname<br />

Dies ist <strong>der</strong> buchstabengetreu angegebene Pfad, auf den das Programm<br />

zugreifen muss, da<strong>mit</strong> es reibungslos ablaufen kann.<br />

b Für Abbildung 3.5, „Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen<br />

für einen Eintrag“ (S. 43): Wählen Sie die Option, die Ihren<br />

Zugriffsanfor<strong>der</strong>ungen entspricht, aus den folgenden:<br />

Inherit (Erben)<br />

Verbleiben im selben Sicherheitspr<strong>of</strong>il (Pr<strong>of</strong>il des übergeordneten Programms).<br />

44 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Pr<strong>of</strong>il<br />

Verlangt, dass ein separates Pr<strong>of</strong>il für das ausgeführte Programm existiert.<br />

Unconfined (Uneingeschränkt)<br />

Programm ohne Sicherheitspr<strong>of</strong>il ausgeführt<br />

WARNUNG<br />

S<strong>of</strong>ern nicht unbedingt nötig, führen Sie das Programm nicht<br />

uneingeschränkt aus. Wenn Sie die Option Unconfined (Uneingeschränkt)<br />

wählen, wird das neue Programm ohne jeglichen Schutz<br />

<strong>von</strong> <strong>AppArmor</strong> ausgeführt.<br />

4 Nach <strong>der</strong> Wahl eines Verzeichnispfads müssen Sie diesen als einen Eintrag im<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il festlegen, indem Sie auf Allow (Erlauben) o<strong>der</strong> Deny<br />

(Ablehnen) klicken. Wenn Sie nicht <strong>mit</strong> dem angezeigten Eintrag des Verzeichnispfads<br />

einverstanden sind, können Sie ihn durch Glob o<strong>der</strong> Edit (Bearbeiten)<br />

än<strong>der</strong>n.<br />

Die folgenden Optionen sind für die Verarbeitung <strong>der</strong> Lernmodus-Einträge und<br />

die Erstellung des Pr<strong>of</strong>ils verfügbar:<br />

Allow (Erlauben)<br />

Gewährt dem Programm Zugriff auf die angegebenen Verzeichnispfad-Einträge.<br />

Der Assistent zum <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> schlägt Dateizugriffsberechtigung<br />

vor. Weitere Informationen dazu finden Sie unter Abschnitt 3.7, „Modi<br />

für Dateizugriffsberechtigungen“ (S. 77).<br />

Deny (Ablehnen)<br />

Klicken Sie auf Deny (Verweigern), um das Programm am Zugriff auf die<br />

angegebenen Verzeichnispfad-Einträge zu hin<strong>der</strong>n.<br />

Glob<br />

Durch Klicken auf diese Option wird <strong>der</strong> Verzeichnispfad (durch Verwendung<br />

<strong>von</strong> Platzhaltern) so geän<strong>der</strong>t, dass er alle Dateien im vorgeschlagenen Eintragsverzeichnis<br />

umfasst. Durch Doppelklicken auf diese Option wird <strong>der</strong><br />

Zugriff auf alle Dateien und Unterverzeichnisse unterhalb des angezeigten<br />

Verzeichnisses gewährt.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 45


Weitere Informationen zur Syntax <strong>mit</strong> Platzhaltern finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

Glob <strong>mit</strong> Erw<br />

Än<strong>der</strong>n des ursprünglichen Verzeichnispfads unter Beibehaltung <strong>der</strong><br />

Dateinamenerweiterung. Durch einen einzelnen Klick wird /etc/<br />

apache2/file.ext zu /etc/apache2/*.ext und <strong>der</strong> Platzhalter<br />

(Sternchen) wird anstelle des Dateinamens hinzugefügt. Da<strong>mit</strong> kann das<br />

Programm auf alle Dateien, die <strong>mit</strong> <strong>der</strong> Erweiterung .ext enden, in den<br />

vorgeschlagenen Verzeichnissen zugreifen. Durch Doppelklicken auf diese<br />

Option wird <strong>der</strong> Zugriff auf alle Dateien (<strong>mit</strong> <strong>der</strong> angegebenen Erweiterung)<br />

und Unterverzeichnisse unterhalb des angezeigten Verzeichnisses gewährt.<br />

Bearbeiten<br />

Ermöglicht die Bearbeitung <strong>der</strong> markierten Zeile. Die neue (bearbeitete)<br />

Zeile erscheint am Ende <strong>der</strong> Liste.<br />

Abbrechen<br />

Bricht logpr<strong>of</strong> ab, verwirft alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

belässt die Pr<strong>of</strong>ile unverän<strong>der</strong>t.<br />

Beenden<br />

Beendet logpr<strong>of</strong>, speichert alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

än<strong>der</strong>t alle Pr<strong>of</strong>ile entsprechend.<br />

Klicken Sie für jeden Lernmodus-Eintrag auf Allow (Erlauben) o<strong>der</strong> Deny<br />

(Ablehnen). Diese Einträge helfen bei <strong>der</strong> Erstellung des <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>ils.<br />

ANMERKUNG<br />

Die Anzahl <strong>der</strong> Lernmodus-Einträge hängt <strong>von</strong> <strong>der</strong> Komplexität <strong>der</strong><br />

Anwendung ab.<br />

Wie<strong>der</strong>holen Sie die vorherigen Schritte, wenn Sie in Ihrer Anwendung mehr<br />

Funktionalität ausführen müssen.<br />

Wenn Sie fertig sind, klicken Sie auf Beenden. Klicken Sie im darauf folgenden<br />

Popup-Fenster auf Ja, um den Assistenten zur Pr<strong>of</strong>ilerstellung zu beenden. Das<br />

Pr<strong>of</strong>il wird gespeichert und in das <strong>Novell</strong> <strong>AppArmor</strong>-Modul geladen.<br />

46 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


3.3.6 Verwalten des Status <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong> und Sicherheitsereignissen<br />

<strong>Novell</strong> <strong>AppArmor</strong> ermöglicht Ihnen, den Status <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> zu än<strong>der</strong>n und<br />

die Ereignisbenachrichtigung zu konfigurieren.<br />

Än<strong>der</strong>n des <strong>Novell</strong> <strong>AppArmor</strong>-Status<br />

Sie können den Status <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> durch Aktivieren o<strong>der</strong> Deaktivieren<br />

än<strong>der</strong>n. Wenn Sie <strong>Novell</strong> <strong>AppArmor</strong> aktivieren, wird Ihr System vor potenzieller<br />

unberechtigter Programmbenutzung geschützt. Durch Deaktivieren <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>, selbst wenn Ihre Pr<strong>of</strong>ile eingerichtet wurden, wird <strong>der</strong> Schutz <strong>von</strong><br />

Ihrem System entfernt.<br />

Konfigurieren <strong>der</strong> Ereignisbenachrichtigung<br />

Sie können bestimmen, wie und wann Sie beim Auftreten <strong>von</strong> Systemsicherheitsereignissen<br />

benachrichtigt werden.<br />

ANMERKUNG<br />

Sie müssen zunächst auf Ihrem SUSE Linux-Server einen Mailserver einrichten,<br />

<strong>der</strong> ausgehende Mail <strong>mit</strong> dem SMTP-Protokoll senden kann. Verwenden<br />

Sie beispielsweise postfix o<strong>der</strong> exim, da<strong>mit</strong> die Ereignisbenachrichtigung<br />

funktioniert.<br />

Führen Sie die folgenden Schritte aus, um Ereignisbenachrichtigung zu konfigurieren<br />

und den Status <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> zu än<strong>der</strong>n:<br />

1 Wenn Sie auf <strong>Novell</strong> <strong>AppArmor</strong>-Kontrollleiste klicken, wird das Fenster <strong>Novell</strong><br />

<strong>AppArmor</strong>-Konfiguration wie folgt geöffnet:<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 47


2 Bestimmen Sie im Fenster <strong>AppArmor</strong>-Konfiguration, ob <strong>Novell</strong> <strong>AppArmor</strong> und<br />

die Sicherheitsereignisbenachrichtigung ausgeführt werden, indem Sie nach einer<br />

Statusmeldung suchen, die enabled (aktiviert) lautet.<br />

• Um den Status <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> zu än<strong>der</strong>n, fahren Sie fort wie unter<br />

„Än<strong>der</strong>n des <strong>Novell</strong> <strong>AppArmor</strong>-Status“ (S. 48) beschrieben.<br />

• Um die Ereignisbenachrichtigung zu konfigurieren, fahren Sie fort wie unter<br />

Abschnitt 4.2.2, „Konfigurieren <strong>der</strong> Sicherheitsereignisbenachrichtigung“<br />

(S. 83) beschrieben.<br />

Än<strong>der</strong>n des <strong>Novell</strong> <strong>AppArmor</strong>-Status<br />

Wenn Sie den Status <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> än<strong>der</strong>n, setzen Sie ihn auf "enable" (aktiviert)<br />

o<strong>der</strong> "disable" (deaktiviert). Wenn <strong>Novell</strong> <strong>AppArmor</strong> aktiviert ist, ist es installiert,<br />

wird ausgeführt und setzt die <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsrichtlinien durch.<br />

1 Um <strong>Novell</strong> <strong>AppArmor</strong> zu aktivieren, öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>. Das<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Hauptmenü wird angezeigt.<br />

2 Klicken Sie im <strong>Novell</strong> <strong>AppArmor</strong>-Hauptmenü auf <strong>AppArmor</strong>-Kontrollleiste. Das<br />

Fenster <strong>AppArmor</strong>-Konfiguration wird angezeigt.<br />

48 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


3 Klicken Sie im Bereich <strong>Novell</strong> <strong>AppArmor</strong> aktivieren des Fensters auf Konfigurieren.<br />

Das Dialogfeld <strong>Novell</strong> <strong>AppArmor</strong> aktivieren wird geöffnet.<br />

4 Aktivieren o<strong>der</strong> deaktivieren Sie <strong>Novell</strong> <strong>AppArmor</strong>, indem Sie Aktivieren bzw.<br />

Deaktivieren wählen. Klicken Sie dann auf OK.<br />

5 Klicken Sie im Fenster <strong>AppArmor</strong>-Konfiguration auf Fertig.<br />

6 Klicken Sie im YaST-Kontrollzentrum auf Datei → Beenden.<br />

<strong>3.4</strong> <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> <strong>mit</strong> <strong>der</strong><br />

Befehlszeilenschnittstelle<br />

<strong>Novell</strong> <strong>AppArmor</strong> bietet die Möglichkeit, Ihre Systemsicherheit <strong>mit</strong>hilfe einer<br />

Befehlszeilenschnittstelle anstatt <strong>der</strong> grafischen Benutzeroberfläche zu verwalten und<br />

zu konfigurieren.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 49


<strong>3.4</strong>.1 Prüfen des <strong>AppArmor</strong>-Modulstatus<br />

Das <strong>AppArmor</strong>-Modul kann sich in einem <strong>von</strong> drei Status befinden:<br />

Unloaded (Entladen)<br />

Das <strong>AppArmor</strong>-Modul ist nicht in den Kernel geladen.<br />

Running (Wird ausgeführt)<br />

Das <strong>AppArmor</strong>-Modul ist in den Kernel geladen und setzt <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Programmrichtlinien durch.<br />

Gestoppt<br />

Das <strong>AppArmor</strong>-Modul ist in den Kernel geladen, aber es werden keine Programmrichtlinien<br />

durchgesetzt.<br />

Sie können er<strong>mit</strong>teln, in welchem <strong>der</strong> drei Status sich das <strong>AppArmor</strong>-Modul befindet,<br />

indem Sie /sys/kernel/security/apparmor/pr<strong>of</strong>iles überprüfen. Wenn<br />

cat /sys/kernel/security/apparmor/pr<strong>of</strong>iles eine Liste <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

meldet, wird <strong>Novell</strong> <strong>AppArmor</strong> ausgeführt. Wenn sie leer ist und keinen Wert zurückgibt,<br />

wird <strong>AppArmor</strong> angehalten. Wenn die Datei nicht existiert, wird <strong>AppArmor</strong> entladen.<br />

Das <strong>AppArmor</strong>-Modul kann <strong>mit</strong> den Linux-Modul-Standardbefehlen wie modprobe,<br />

insmod, lsmod und rmmod geladen und entladen werden, jedoch wird diese<br />

Methode nicht empfohlen. Stattdessen wird empfohlen, <strong>Novell</strong> <strong>AppArmor</strong> durch das<br />

Skript rcapparmor zu verwalten, das die folgenden Operationen ausführen kann:<br />

rcapparmor start<br />

Das Verhalten unterscheidet sich abhängig vom Status des <strong>AppArmor</strong>-Moduls.<br />

Wenn es entladen war, lädt start das Modul und startet es, wodurch es den Status<br />

"running" (wird ausgeführt) erhält. Wenn es angehalten war, veranlasst start<br />

das Modul, die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile neu zu scannen, die sich gewöhnlich in<br />

/etc/apparmor.d befinden, und setzt das Modul in den Status "running" (wird<br />

ausgeführt). Wenn das Modul bereits ausgeführt wurde, meldet start eine Warnung<br />

und ergreift keine Aktion.<br />

rcapparmor stop<br />

Hält das <strong>AppArmor</strong>-Modul an (falls es ausgeführt wurde), indem alle Pr<strong>of</strong>ile aus<br />

dem Kernel-Speicher entfernt werden, und deaktiviert da<strong>mit</strong> effektiv alle<br />

Zugriffskontrollen und setzt das Modul in den Status "stopped" (gestoppt). Wenn<br />

50 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


das <strong>AppArmor</strong>-Modul entladen o<strong>der</strong> bereits gestoppt war, versucht stop die Pr<strong>of</strong>ile<br />

erneut zu entladen, aber es erfolgt keine Aktion.<br />

rcapparmor restart<br />

Veranlasst das <strong>AppArmor</strong>-Modul, die Pr<strong>of</strong>ile erneut zu überprüfen, die sich<br />

gewöhnlich in /etc/apparmor.d befinden, ohne die Einschränkung <strong>von</strong> laufenden<br />

Prozessen aufzuheben, neue Pr<strong>of</strong>ile hinzuzufügen und etwaige Pr<strong>of</strong>ile zu<br />

entfernen, die aus /etc/apparmor.d gelöscht wurden.<br />

rcapparmor kill<br />

Entfernt das <strong>AppArmor</strong>-Modul bedingungslos aus dem Kernel. Dieser Vorgang<br />

beeinträchtigt die Sicherheit, da das Entladen <strong>von</strong> Modulen aus dem Linux-Kernel<br />

nicht sicher ist. Dieser Befehl wird nur für Fehlersuche und Notfälle zur Verfügung<br />

gestellt, in denen das Modul eventuell entfernt werden muss.<br />

ANMERKUNG<br />

<strong>Novell</strong> <strong>AppArmor</strong> ist ein leistungsstarkes System zur Zugriffskontrolle und<br />

es ist möglich, dass Sie sich aus Ihrem eigenen Rechner so weit aussperren,<br />

dass Sie ihn <strong>von</strong> Rettungsmedien (wie CD 1 <strong>von</strong> SUSE Linux) neu starten<br />

müssen, um wie<strong>der</strong> die Kontrolle zu erhalten.<br />

Stellen Sie zur Vermeidung eines solchen Problems stets sicher, dass Sie<br />

beim Neustart des <strong>AppArmor</strong>-Moduls über eine laufende, uneingeschränkte<br />

root-Anmeldung auf dem Rechner verfügen, <strong>der</strong> konfiguriert wird. Wenn<br />

Sie Ihr System so sehr beschädigen, dass keine Anmeldungen mehr möglich<br />

sind (beispielsweise durch Beschädigen des Pr<strong>of</strong>ils, das <strong>mit</strong> dem SSH-Daemon<br />

verbunden ist), können Sie den Schaden beheben, indem Sie Ihre<br />

laufende root-Eingabe-Auffor<strong>der</strong>ung verwenden und das <strong>AppArmor</strong>-Modul<br />

neu starten.<br />

<strong>3.4</strong>.2 <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Die Pr<strong>of</strong>ildefinitionen des <strong>AppArmor</strong>-Moduls werden im Verzeichnis /etc/apparmor<br />

.d/ als Klartext-Dateien gespeichert.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 51


WARNUNG<br />

Alle Dateien im Verzeichnis /etc/apparmor.d/ werden als Pr<strong>of</strong>ile interpretiert<br />

und geladen. Das Umbenennen <strong>von</strong> Dateien in diesem Verzeichnis ist<br />

keine wirksame Methode, um das Laden <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> zu verhin<strong>der</strong>n. Sie müssen<br />

Pr<strong>of</strong>ile aus diesem Verzeichnis entfernen, um sie wirksam zu verwalten.<br />

Sie können einen Texteditor wie vim verwenden, um auf diese Pr<strong>of</strong>ile zuzugreifen und<br />

sie zu än<strong>der</strong>n. Die folgenden Optionen enthalten ausführliche Schritte für die Erstellung<br />

<strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong>:<br />

Hinzufügen o<strong>der</strong> <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Siehe Abschnitt <strong>3.4</strong>.3, „Hinzufügen o<strong>der</strong> <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong>“<br />

(S. 53).<br />

Bearbeiten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Siehe Abschnitt <strong>3.4</strong>.4, „Bearbeiten <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong>“ (S. 53).<br />

Löschen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Siehe Abschnitt <strong>3.4</strong>.5, „Löschen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong>“ (S. 54).<br />

Verwenden Sie vim, um Ihr Pr<strong>of</strong>il anzuzeigen und zu bearbeiten, indem Sie "vim" in<br />

ein Terminalfenster eingeben. Wenn Sie beim Bearbeiten eines <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>ils in vim Syntaxfarben aktivieren möchten, verwenden Sie die Befehle :syntax<br />

on und dann :set syntax=apparmor. Weitere Informationen zu vim und Syntaxfarben<br />

finden Sie unter „apparmor.vim“ (S. 74).<br />

ANMERKUNG<br />

Nachdem Sie ein Pr<strong>of</strong>il geän<strong>der</strong>t haben, verwenden Sie den Befehl rcapparmor<br />

restart, <strong>der</strong> im vorigen Abschnitt beschrieben ist. Dieser Befehl veranlasst<br />

<strong>Novell</strong> <strong>AppArmor</strong>, die Pr<strong>of</strong>ile erneut zu lesen. Eine detaillierte Beschreibung<br />

<strong>der</strong> Syntax dieser Dateien finden Sie in Kapitel 3, <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

<strong>Pr<strong>of</strong>ilen</strong> (S. 19).<br />

52 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


<strong>3.4</strong>.3 Hinzufügen o<strong>der</strong> <strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Sie können ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il für eine Anwendung hinzufügen o<strong>der</strong> erstellen<br />

und abhängig <strong>von</strong> Ihren Anfor<strong>der</strong>ungen eine systemweite Pr<strong>of</strong>ilerstellung o<strong>der</strong> Einzelpr<strong>of</strong>ilerstellung<br />

verwenden.<br />

Einzelpr<strong>of</strong>ilerstellung<br />

Geeignet für Pr<strong>of</strong>ile <strong>von</strong> kleinen Anwendungen <strong>mit</strong> endlicher Laufzeit, etwa<br />

Benutzer-Client-Anwendungen wie Mail-Clients. Informationen finden Sie in<br />

Abschnitt 3.5.1, „Einzelpr<strong>of</strong>ilerstellung“ (S. 55).<br />

Systemweite Pr<strong>of</strong>ilerstellung<br />

Geeignet für Pr<strong>of</strong>ile, die gleichzeitig für eine große Anzahl an Programmen gelten<br />

o<strong>der</strong> für Anwendungen, die mehrere Tage, Wochen o<strong>der</strong> über Neustarts hinweg<br />

ablaufen, beispielsweise Netzwerkserver-Anwendungen wie Webserver und<br />

Mailserver. Abschnitt 3.5.2, „Systemweite Pr<strong>of</strong>ilerstellung“ (S. 56).<br />

<strong>3.4</strong>.4 Bearbeiten <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Die folgenden Schritte beschreiben die Vorgehensweise für die Bearbeitung eines<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils. Für ein besseres Verständnis <strong>der</strong> Bestandteile eines Pr<strong>of</strong>ils<br />

siehe Abschnitt 3.1, „Pr<strong>of</strong>ilkomponenten und Syntax“ (S. 19).<br />

1 Wenn Sie <strong>der</strong>zeit nicht als root angemeldet sind, geben Sie su in ein Terminalfenster<br />

ein.<br />

2 Geben Sie das root-Passwort ein, wenn Sie dazu aufgefor<strong>der</strong>t werden.<br />

3 Um in das Verzeichnis zu wechseln, geben Sie cd /etc/apparmor.d/ ein.<br />

4 Geben Sie ls ein, um alle aktuell installierten Pr<strong>of</strong>ile aufzulisten.<br />

5 Öffnen Sie das zu bearbeitende Pr<strong>of</strong>il in einem Texteditor, z. B. vim.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 53


6 Nehmen Sie die erfor<strong>der</strong>lichen Än<strong>der</strong>ungen vor und speichern Sie dann das<br />

Pr<strong>of</strong>il.<br />

7 Starten Sie <strong>Novell</strong> <strong>AppArmor</strong> neu, indem Sie rcapparmor restart in ein<br />

Terminalfenster eingeben.<br />

<strong>3.4</strong>.5 Löschen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

Die folgenden Schritte beschreiben die Vorgehensweise für das Löschen eines <strong>Novell</strong><br />

<strong>AppArmor</strong>-Pr<strong>of</strong>ils.<br />

1 Wenn Sie <strong>der</strong>zeit nicht als root angemeldet sind, geben Sie su in ein Terminalfenster<br />

ein.<br />

2 Geben Sie das root-Passwort ein, wenn Sie dazu aufgefor<strong>der</strong>t werden.<br />

3 Um in das <strong>Novell</strong> <strong>AppArmor</strong>-Verzeichnis zu wechseln, geben Sie cd<br />

/etc/apparmor.d/ ein.<br />

4 Geben Sie ls ein, um alle aktuell installierten <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile aufzulisten.<br />

5 Löschen Sie das bestehende Pr<strong>of</strong>il <strong>mit</strong> rm pr<strong>of</strong>ilename.<br />

6 Starten Sie <strong>Novell</strong> <strong>AppArmor</strong> neu, indem Sie rcapparmor restart in ein<br />

Terminalfenster eingeben.<br />

3.5 Zwei Methoden <strong>der</strong><br />

Pr<strong>of</strong>ilerstellung<br />

Mithilfe <strong>der</strong> Syntax für <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile in Abschnitt 3.1, „Pr<strong>of</strong>ilkomponenten<br />

und Syntax“ (S. 19) können Sie Pr<strong>of</strong>ile ohne Einsatz <strong>der</strong> Werkzeuge erstellen. Der<br />

Aufwand wäre jedoch erheblich. Eine solche Anstrengung können Sie vermeiden, indem<br />

Sie Erstellung und Ausarbeitung <strong>der</strong> Pr<strong>of</strong>ile <strong>mit</strong>hilfe <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeuge<br />

automatisieren.<br />

54 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Es gibt zwei Herangehensweisen bei <strong>der</strong> Erstellung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong><br />

<strong>mit</strong> entsprechenden Werkzeugen für beide Methoden.<br />

Einzelpr<strong>of</strong>ilerstellung<br />

Eine geeignete Methode für Pr<strong>of</strong>ile <strong>von</strong> kleinen Anwendungen <strong>mit</strong> endlicher<br />

Laufzeit, etwa Benutzer-Client-Anwendungen wie Mail-Clients. Weitere Informationen<br />

finden Sie in Abschnitt 3.5.1, „Einzelpr<strong>of</strong>ilerstellung“ (S. 55).<br />

Systemweite Pr<strong>of</strong>ilerstellung<br />

Geeignete Methode für Pr<strong>of</strong>ile, die gleichzeitig für eine große Anzahl an Programmen<br />

gelten o<strong>der</strong> für Anwendungen, die mehrere Tage, Wochen o<strong>der</strong> über Neustarts<br />

hinweg ablaufen, beispielsweise Netzwerkserver-Anwendungen wie Webserver<br />

und Mailserver. Weitere Informationen finden Sie in Abschnitt 3.5.2, „Systemweite<br />

Pr<strong>of</strong>ilerstellung“ (S. 56).<br />

Automatisierte <strong>Pr<strong>of</strong>ilen</strong>twicklung lässt sich <strong>mit</strong>hilfe <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeuge<br />

leichter verwalten:<br />

1 Entscheiden Sie, welche Methode <strong>der</strong> Pr<strong>of</strong>ilerstellung Ihren Anfor<strong>der</strong>ungen entspricht.<br />

2 Führen Sie eine statische Analyse aus. Führen Sie abhängig <strong>von</strong> <strong>der</strong> gewählten<br />

Pr<strong>of</strong>ilerstellungsmethode genpr<strong>of</strong> o<strong>der</strong> autodep aus.<br />

3 Aktivieren Sie dynamisches Lernen. Aktivieren Sie den Lernmodus für alle<br />

Programme <strong>mit</strong> Pr<strong>of</strong>il.<br />

3.5.1 Einzelpr<strong>of</strong>ilerstellung<br />

Die Erstellung und Verbesserung <strong>von</strong> Einzelpr<strong>of</strong>ilen wird durch das Programm genpr<strong>of</strong><br />

verwaltet. Dies ist eine bequeme Methode, da sich genpr<strong>of</strong> um alles kümmert, ist aber<br />

eingeschränkt, da genpr<strong>of</strong> für die gesamte Dauer des Testlaufs Ihres Programms ausgeführt<br />

werden muss (d. h., Sie können den Rechner nicht neu starten, während Sie noch<br />

Ihr Pr<strong>of</strong>il entwickeln).<br />

Informationen über die Verwendung <strong>von</strong> genpr<strong>of</strong> beim <strong>Erstellen</strong> <strong>von</strong> Einzelpr<strong>of</strong>ilen<br />

finden Sie unter „genpr<strong>of</strong>“ (S. 61).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 55


3.5.2 Systemweite Pr<strong>of</strong>ilerstellung<br />

Diese Methode heißt systemweite Pr<strong>of</strong>ilerstellung, da sie alle Pr<strong>of</strong>ile des Systems<br />

gleichzeitig aktualisiert, anstatt sich auf das eine o<strong>der</strong> die wenigen Pr<strong>of</strong>ile zu konzentrieren,<br />

die <strong>von</strong> genpr<strong>of</strong> o<strong>der</strong> <strong>der</strong> Einzelpr<strong>of</strong>ilerstellung behandelt werden.<br />

Bei <strong>der</strong> systemweiten Pr<strong>of</strong>ilerstellung sind <strong>Erstellen</strong> und Ausarbeiten <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> etwas<br />

weniger automatisiert, dafür aber flexibler. Diese Methode eignet sich für langfristig<br />

ausgeführte Programme, <strong>der</strong>en Verhalten nach einem Neustart fortfährt, o<strong>der</strong> für eine<br />

große Anzahl an Programmen, die gleichzeitig ein Pr<strong>of</strong>il erhalten sollen.<br />

<strong>Erstellen</strong> Sie wie folgt ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il für eine Gruppe <strong>von</strong> Anwendungen:<br />

1 <strong>Erstellen</strong> Sie Pr<strong>of</strong>ile für die einzelnen Programme, aus denen Ihre<br />

Anwendung besteht. Obwohl diese Methode systemweit wirkt, überwacht<br />

<strong>Novell</strong> <strong>AppArmor</strong> nur die Programme <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> und <strong>der</strong>en untergeordnete<br />

Programme. Da<strong>mit</strong> also <strong>Novell</strong> <strong>AppArmor</strong> ein Programm berücksichtigt, müssen<br />

Sie mindestens autodep ausführen, um ein vorläufiges Pr<strong>of</strong>il dafür zu erstellen.<br />

Informationen zur Erstellung dieses vorläufigen Pr<strong>of</strong>ils finden Sie unter „autodep“<br />

(S. 58).<br />

2 Versetzen Sie relevante Pr<strong>of</strong>ile in den Lern- o<strong>der</strong> Meldungsmodus. Aktivieren<br />

Sie den Lern- o<strong>der</strong> Meldungsmodus für alle Programme <strong>mit</strong> Pr<strong>of</strong>il, indem<br />

Sie complain /etc/apparmor.d/* in ein Terminalfenster eingeben,<br />

während Sie als root angemeldet sind.<br />

Im Lernmodus werden Zugriffsanfor<strong>der</strong>ungen nicht blockiert, selbst wenn das<br />

Pr<strong>of</strong>il dies vorsieht. Da<strong>mit</strong> können Sie mehrere Tests ausführen (wie in Schritt<br />

3 (S. 56) gezeigt) und die Zugriffsanfor<strong>der</strong>ungen des Programms lernen, da<strong>mit</strong><br />

es reibungslos abläuft. Anhand dieser Information können Sie entscheiden, wie<br />

sicher das Pr<strong>of</strong>il sein muss.<br />

Ausführlichere Anleitungen zur Verwendung des Lern- o<strong>der</strong> Meldungsmodus<br />

finden Sie unter „Meldungs- o<strong>der</strong> Lernmodus“ (S. 59).<br />

3 Führen Sie Ihre Anwendung aus. Führen Sie Ihre Anwendung und <strong>der</strong>en<br />

Funktionalität aus. Wie viel des Programms Sie ausführen, ist Ihre Entscheidung,<br />

aber das Programm muss auf jede Datei gemäß den entsprechenden Anfor<strong>der</strong>ungen<br />

zugreifen. Da die Ausführung nicht durch genpr<strong>of</strong> überwacht wird, kann<br />

56 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


dieser Schritt Tage und Wochen beanspruchen und über vollständige Systemneustarts<br />

hinweg dauern.<br />

4 Analysieren Sie das Protokoll. Führen Sie bei <strong>der</strong> systemweiten Pr<strong>of</strong>ilerstellung<br />

logpr<strong>of</strong> direkt aus, anstatt es <strong>von</strong> genpr<strong>of</strong> ausführen zu lassen (wie bei <strong>der</strong><br />

Einzelpr<strong>of</strong>ilerstellung). Die allgemeine Form <strong>von</strong> logpr<strong>of</strong>:<br />

logpr<strong>of</strong> [ -d /path/to/pr<strong>of</strong>iles ] [ -f /path/to/logfile ]<br />

Weitere Informationen über die Verwendung <strong>von</strong> logpr<strong>of</strong> erhalten Sie unter<br />

„logpr<strong>of</strong>“ (S. 67).<br />

5 Wie<strong>der</strong>holen Sie die Schritte 3-4. Dadurch werden optimale Pr<strong>of</strong>ile generiert.<br />

Eine iterative Methode erfasst kleinere Datenmengen, die gelernt und erneut in<br />

die Richtlinien-Engine geladen werden können. Nachfolgende Iterationen generieren<br />

weniger Meldungen und laufen schneller ab.<br />

6 Bearbeiten Sie die Pr<strong>of</strong>ile. Sie sollten die Pr<strong>of</strong>ile überprüfen, die generiert<br />

wurden. Sie können die Pr<strong>of</strong>ile <strong>mit</strong>hilfe <strong>von</strong> vim in /etc/apparmor.d/ öffnen<br />

und bearbeiten. Hilfe zur optimalen Verwendung <strong>von</strong> vim finden Sie unter<br />

„apparmor.vim“ (S. 74).<br />

7 Wechseln Sie wie<strong>der</strong> in den „Erzwingen“-Modus. Das System beginnt<br />

dann wie<strong>der</strong>, die Regeln <strong>der</strong> Pr<strong>of</strong>ile durchzusetzen, nicht einfach nur Informationen<br />

zu protokollieren. Dies können Sie manuell ausführen, indem Sie den Text<br />

flags=(complain) aus den <strong>Pr<strong>of</strong>ilen</strong> entfernen, o<strong>der</strong> automatisch, indem Sie<br />

den Befehl "enforce" verwenden, <strong>der</strong> wie <strong>der</strong> Befehl "complain" funktioniert,<br />

jedoch die Pr<strong>of</strong>ile in den Erzwingen-Modus setzt.<br />

Um sicherzustellen, dass alle Pr<strong>of</strong>ile aus dem Meldungsmodus in den Erzwingen-<br />

Modus versetzt werden, geben Sie enforce /etc/apparmor.d/* ein.<br />

8 Scannen Sie alle Pr<strong>of</strong>ile neu. Da<strong>mit</strong> <strong>Novell</strong> <strong>AppArmor</strong> alle Pr<strong>of</strong>ile erneut<br />

scannt und den Erzwingen-Modus im Kernel än<strong>der</strong>t, geben Sie<br />

/etc/init.d/apparmor restart ein.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 57


3.5.3 Zusammenfassung <strong>der</strong> Pr<strong>of</strong>ilwerkzeuge<br />

Alle <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilwerkzeuge werden im RPM-Paket apparmor-utils<br />

zur Verfügung gestellt und die meisten sind unter /usr/sbin gespeichert. Die folgenden<br />

Abschnitte stellen jedes Werkzeug vor.<br />

autodep<br />

Erstellt ein vorläufiges Pr<strong>of</strong>il für das Programm o<strong>der</strong> die Anwendung, für die Sie das<br />

Werkzeug ausführen. Sie können vorläufige Pr<strong>of</strong>ile für ausführbare Binärdateien und<br />

interpretierte Skriptprogramme generieren. Das resultierende Pr<strong>of</strong>il wird „vorläufig“<br />

genannt, da es nicht notwendigerweise alle Pr<strong>of</strong>ileinträge enthält, die das Programm<br />

braucht, um korrekt <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> eingeschränkt zu werden. Das minimale<br />

vorläufige autodep-Pr<strong>of</strong>il enthält wenigstens eine grundlegende include-Direktive, die<br />

grundlegende Pr<strong>of</strong>ileinträge für die meisten Programme enthält. Für bestimmte Programmtypen<br />

generiert autodep ein ausführlicheres Pr<strong>of</strong>il. Das Pr<strong>of</strong>il wird durch den<br />

rekursiven Aufruf <strong>von</strong> ldd(1) <strong>mit</strong> den ausführbaren Programmen generiert, die in<br />

<strong>der</strong> Befehlszeile aufgelistet sind.<br />

Verwenden Sie zur Generierung eines vorläufigen Pr<strong>of</strong>ils das Programm autodep. Das<br />

Programmargument kann entwe<strong>der</strong> <strong>der</strong> einfache Name des Programms sein, den autodep<br />

beim Durchsuchen <strong>der</strong> Pfadvariablen Ihrer Shell findet, o<strong>der</strong> ein vollständig qualifizierter<br />

Pfad. Das Programm selbst kann einen beliebigen Typ haben (ELF-Binärformat, Shell-<br />

Skript, Perl-Skript usw.) und autodep generiert ein vorläufiges Pr<strong>of</strong>il, das durch<br />

anschließende dynamische Pr<strong>of</strong>ilerstellung verbessert werden kann.<br />

Das resultierende vorläufige Pr<strong>of</strong>il wird in das Verzeichnis /etc/apparmor.d<br />

geschrieben. Dabei wird die <strong>Novell</strong> <strong>AppArmor</strong>-Konvention verwendet, das Pr<strong>of</strong>il nach<br />

dem absoluten Pfad anzugeben und die Schrägstriche (/) im Pfad jeweils durch einen<br />

Punkt (.) zu ersetzen. Die allgemeine Form <strong>von</strong> autodep besteht in <strong>der</strong> Eingabe des<br />

Folgenden in ein Terminalfenster während einer Anmeldung als root:<br />

autodep [ -d /path/to/pr<strong>of</strong>iles ] [program1 program2...]<br />

Wenn Sie den o<strong>der</strong> die Programmnamen nicht eingeben, werden Sie dazu aufgefor<strong>der</strong>t.<br />

/path/to/pr<strong>of</strong>iles hat Vorrang vor dem Standardspeicherort /etc/apparmor<br />

.d.<br />

Um die Pr<strong>of</strong>ilerstellung zu beginnen, müssen Sie Pr<strong>of</strong>ile für jeden ausführbaren<br />

Hauptdienst anlegen, <strong>der</strong> Ihrer Anwendung angehört (alles, das keinem an<strong>der</strong>en Pro-<br />

58 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


gramm <strong>mit</strong> Pr<strong>of</strong>il untergeordnet ist). Das Auffinden aller solcher Programme hängt <strong>von</strong><br />

<strong>der</strong> betreffenden Anwendung ab. Strategien zum Auffinden solcher Programme:<br />

Verzeichnisse<br />

Wenn sich alle Programme, für die Sie Pr<strong>of</strong>ile erstellen möchten, in einem Verzeichnis<br />

befinden und keine an<strong>der</strong>en Programme in diesem Verzeichnis sind, erstellt <strong>der</strong><br />

einfache Befehl autodep /path/to/your/programs/* nominale Pr<strong>of</strong>ile<br />

für alle Programme in diesem Verzeichnis.<br />

ps-Befehl<br />

Sie können Ihre Anwendung ausführen und den Linux-Standardbefehl ps verwenden,<br />

um alle ablaufenden Prozesse zu finden. Sie müssen dann den Speicherort<br />

dieser Programme manuell er<strong>mit</strong>teln und für jedes das Programm autodep ausführen.<br />

Wenn sich die Programme auf Ihrem Pfad befinden, findet sie autodep für Sie.<br />

Wenn sie sich nicht auf Ihrem Pfad befinden, kann <strong>der</strong> Linux-Standardbefehl<br />

locate bei <strong>der</strong> Suche helfen. Wenn locate nicht funktioniert (es wird nicht<br />

standardmäßig auf SUSE Linux installiert), verwenden Sie find . -name<br />

'*foo*' -print.<br />

Meldungs- o<strong>der</strong> Lernmodus<br />

Das Meldungs- o<strong>der</strong> Lernmoduswerkzeug entdeckt Verletzungen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>ilregeln, etwa wenn das Programm, für welches das Pr<strong>of</strong>il gilt, auf Dateien zugreift,<br />

die das Pr<strong>of</strong>il nicht gestattet. Die Verletzungen werden erlaubt, allerdings auch protokolliert.<br />

Um das Pr<strong>of</strong>il zu verbessern, aktivieren Sie den Meldungsmodus, führen Sie<br />

das Programm in einer Testfolge aus, um Protokollereignisse zu generieren, die den<br />

Zugriffsanfor<strong>der</strong>ungen des Programms entsprechen. Führen Sie dann eine Nachverarbeitung<br />

des Protokolls <strong>mit</strong> den <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeugen aus, um Protokollereignisse<br />

in verbesserte Pr<strong>of</strong>ile umzuwandeln.<br />

Manuelle Aktivierung des Meldungsmodus (über die Befehlszeile) fügt am Beginn des<br />

Pr<strong>of</strong>ils eine Flag ein, d. h., /bin/foo wird zu /bin/foo flags=(complain).<br />

Öffnen Sie für die Verwendung des Meldungsmodus ein Terminalfenster und geben<br />

Sie eine <strong>der</strong> folgenden Zeilen als root-Benutzer ein.<br />

• Wenn sich das Beispielprogramm (program1) in Ihrem Pfad befindet, verwenden<br />

Sie:<br />

complain [program1 program2 ...]<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 59


• Wenn sich das Programm nicht in Ihrem Pfad befindet, geben Sie den vollständigen<br />

Pfad wie folgt an:<br />

complain /sbin/program1<br />

• Wenn sich die Pr<strong>of</strong>ile nicht in /etc/apparmor.d befinden, geben Sie Folgendes<br />

ein, um den Standardspeicherort zu überschreiben:<br />

complain /path/to/pr<strong>of</strong>iles/ program1<br />

• Geben Sie wie folgt das Pr<strong>of</strong>il für program1 an:<br />

complain /etc/apparmor.d/sbin.program1<br />

Je<strong>der</strong> <strong>der</strong> obigen Befehle aktiviert den Meldungsmodus für die aufgelisteten Pr<strong>of</strong>ile/Programme.<br />

Der Befehl kann Programme o<strong>der</strong> Pr<strong>of</strong>ile auflisten. Wenn <strong>der</strong> Programmname<br />

nicht den vollständigen Pfad umfasst, durchsucht "complain" $PATH für das Programm.<br />

complain /usr/sbin/* findet also beispielsweise Pr<strong>of</strong>ile, die <strong>mit</strong> allen Programmen<br />

in /usr/sbin verbunden sind, und setzt sie in den Meldungsmodus und<br />

complain /etc/apparmor.d/* setzt alle Pr<strong>of</strong>ile in /etc/apparmor.d in<br />

den Meldungsmodus.<br />

Erzwingen-Modus<br />

Das Erzwingen-Modus-Werkzeug entdeckt Verletzungen <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilregeln,<br />

etwa wenn das Programm, für welches das Pr<strong>of</strong>il gilt, auf Dateien zugreift,<br />

die das Pr<strong>of</strong>il nicht gestattet. Die Verletzungen werden protokolliert und nicht erlaubt.<br />

Standardmäßig ist <strong>der</strong> Erzwingen-Modus aktiviert. Aktivieren Sie den Meldungsmodus,<br />

wenn die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile den Zugriff des Programms steuern sollen, für das<br />

ein Pr<strong>of</strong>il festgelegt wird. Erzwingen- und Meldungsmodus schließen sich gegenseitig<br />

aus.<br />

Manuelle Aktivierung des Erzwingen-Modus (über die Befehlszeile) fügt am Beginn<br />

des Pr<strong>of</strong>ils eine Flag ein, d. h., /bin/foo wird zu /bin/foo flags=(enforce).<br />

Öffnen Sie für die Verwendung des Erzwingen-Modus ein Terminalfenster und geben<br />

Sie eine <strong>der</strong> folgenden Zeilen als root-Benutzer ein.<br />

• Wenn sich das Beispielprogramm (program1) in Ihrem Pfad befindet, verwenden<br />

Sie:<br />

enforce [program1 program2 ...]<br />

60 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• Wenn sich das Programm nicht in Ihrem Pfad befindet, geben Sie den vollständigen<br />

Pfad wie folgt an:<br />

enforce /sbin/program1<br />

• Wenn sich die Pr<strong>of</strong>ile nicht in /etc/apparmor.d befinden, geben Sie Folgendes<br />

ein, um den Standardspeicherort zu überschreiben:<br />

enforce /path/to/pr<strong>of</strong>iles/program1<br />

• Geben Sie wie folgt das Pr<strong>of</strong>il für program1 an:<br />

enforce /etc/apparmor.d/sbin.program1<br />

Je<strong>der</strong> <strong>der</strong> obigen Befehle aktiviert den Erzwingen-Modus für die aufgelisteten Pr<strong>of</strong>ile<br />

und Programme.<br />

Wenn Sie den o<strong>der</strong> die Programm- o<strong>der</strong> Pr<strong>of</strong>ilnamen nicht eingeben, werden Sie dazu<br />

aufgefor<strong>der</strong>t. /path/to/pr<strong>of</strong>iles hat Vorrang vor dem Standardspeicherort /etc/<br />

apparmor.d.<br />

Das Argument kann entwe<strong>der</strong> eine Liste <strong>von</strong> Programmen o<strong>der</strong> eine Liste <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong><br />

sein. Wenn <strong>der</strong> Programmname nicht den vollständigen Pfad umfasst, durchsucht<br />

"enforce" $PATH für das Programm. enforce /usr/sbin/* findet beispielsweise<br />

Pr<strong>of</strong>ile, die <strong>mit</strong> allen Programmen in /usr/sbin verbunden sind, und setzt sie in den<br />

Erzwingen-Modus. enforce /etc/apparmor.d/* setzt alle Pr<strong>of</strong>ile in /etc/<br />

apparmor.d in den Erzwingen-Modus.<br />

genpr<strong>of</strong><br />

genpr<strong>of</strong> (Pr<strong>of</strong>il erstellen) ist das <strong>Novell</strong> <strong>AppArmor</strong>-Dienstprogramm zur Pr<strong>of</strong>ilerstellung.<br />

Es führt autodep am angegebenen Programm aus, erstellt ein vorläufiges Pr<strong>of</strong>il (falls<br />

nicht bereits ein Pr<strong>of</strong>il für das Programm existiert), setzt es in den Erzwingen-Modus,<br />

lädt es erneut in <strong>Novell</strong> <strong>AppArmor</strong>, markiert das Systemprotokoll und for<strong>der</strong>t den<br />

Benutzer auf, das Programm und seine Funktionalität auszuführen. Die Syntax lautet<br />

wie folgt:<br />

genpr<strong>of</strong> [ -d /path/to/pr<strong>of</strong>iles ]program<br />

Wenn Sie ein Pr<strong>of</strong>il für das Apache-Webserver-Programm httpd2-prefork erstellen<br />

möchten, führen Sie Folgendes in einer root-Shell aus:<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 61


1 Geben Sie rcapache2 stop ein.<br />

2 Geben Sie als Nächstes genpr<strong>of</strong> httpd2-prefork ein.<br />

genpr<strong>of</strong> führt nun folgende Aktionen aus:<br />

• Löst den vollständigen Pfad <strong>von</strong> httpd2-prefork basierend auf den Pfadvariablen<br />

Ihrer Shell auf. Sie können auch einen vollständigen Pfad angeben.<br />

Unter SUSE Linux lautet <strong>der</strong> vollständige Pfad /usr/sbin/<br />

httpd2-prefork.<br />

• Prüft, ob ein bestehendes Pr<strong>of</strong>il für httpd2-prefork vorhanden ist. Wenn ja,<br />

wird dieses aktualisiert. Wenn nein, wird eines <strong>mit</strong>hilfe des autodep-Programms<br />

erstellt (siehe Abschnitt 3.5.3, „Zusammenfassung <strong>der</strong> Pr<strong>of</strong>ilwerkzeuge“<br />

(S. 58)).<br />

ANMERKUNG<br />

Es gibt eine Namenskonvention für den vollständigen Pfad eines<br />

Programms zum Namen seiner Pr<strong>of</strong>ildatei, da<strong>mit</strong> die verschiedenen<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilerstellungswerkzeuge sie konsistent manipulieren<br />

können. Die Konvention besteht darin, dass ein Schrägstrich<br />

(/) durch einen Punkt (.) ersetzt wird, d. h., das Pr<strong>of</strong>il für /usr/<br />

sbin/httpd2-prefork wird in /etc/apparmor.d/usr.sbin<br />

.httpd2-prefork gespeichert.<br />

• Setzt das Pr<strong>of</strong>il für dieses Programm in den Lern- o<strong>der</strong> Meldungsmodus,<br />

da<strong>mit</strong> Pr<strong>of</strong>ilverletzungen protokolliert werden, das Programm aber fortfahren<br />

darf. Ein Protokollereignis sieht wie folgt aus:<br />

Oct 9 15:40:31 <strong>AppArmor</strong>: PERMITTING r access to<br />

/etc/apache2/httpd.conf (httpd2-prefork(6068) pr<strong>of</strong>ile<br />

/usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork)<br />

• Markiert Syslog <strong>mit</strong> einem Anfangskennzeichen für die zu beachtenden<br />

Protokollereignisse. Beispiel:<br />

Sep 13 17:48:52 h2o root: GenPr<strong>of</strong>: e2ff78636296f16d0b5301209a04430d<br />

62 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


3 Wenn Sie vom Werkzeug dazu aufgefor<strong>der</strong>t werden, führen Sie die Anwendung,<br />

für die Sie das Pr<strong>of</strong>il erstellen, in einem an<strong>der</strong>en Terminalfenster aus. Führen Sie<br />

möglichst viele <strong>der</strong> Anwendungsfunktionen aus, da<strong>mit</strong> <strong>der</strong> Lernmodus die<br />

Dateien und Verzeichnisse protokollieren kann, auf die das Programm für eine<br />

korrekte Funktion zugreifen muss. Geben Sie beispielsweise rcapache2<br />

start in ein neues Terminalfenster ein.<br />

4 Wählen Sie, welche <strong>der</strong> folgenden Optionen benutzt werden kann, nachdem Sie<br />

die Funktionalität des Programms ausgeführt haben:<br />

• S führt logpr<strong>of</strong> am Systemprotokoll aus und zwar ab <strong>der</strong> Stelle, die beim<br />

Start <strong>von</strong> genpr<strong>of</strong> markiert wurde, und lädt das Pr<strong>of</strong>il neu.<br />

Wenn das Protokoll Systemereignisse enthält, analysiert <strong>Novell</strong> <strong>AppArmor</strong><br />

die Lernmodus-Protokolldateien. Da<strong>mit</strong> wird eine Serie <strong>von</strong> Fragen erzeugt,<br />

die Sie beantworten müssen, um genpr<strong>of</strong> beim Generieren des Sicherheitspr<strong>of</strong>ils<br />

zu lenken.<br />

• F beendet das Werkzeug und kehrt in das Hauptmenü zurück.<br />

ANMERKUNG<br />

Wenn Anfor<strong>der</strong>ungen zum <strong>Erstellen</strong> <strong>von</strong> Hats auftreten, fahren Sie <strong>mit</strong><br />

Kapitel 5, <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat<br />

Apache (S. 113) fort.<br />

5 Beantworten Sie zwei Arten <strong>von</strong> Fragen:<br />

• Von einem Programm <strong>mit</strong> Pr<strong>of</strong>il wird eine Ressource angefor<strong>der</strong>t, die sich<br />

nicht im Pr<strong>of</strong>il befindet (siehe Beispiel 3.1, „Lernmodus-Ausnahme: Kontrolle<br />

des Zugriffs auf bestimmte Ressourcen“ (S. 64)).<br />

• Ein Programm wird <strong>von</strong> dem Programm <strong>mit</strong> Pr<strong>of</strong>il ausgeführt, <strong>der</strong> Wechsel<br />

<strong>der</strong> Sicherheitsdomäne wurde nicht definiert (siehe Beispiel 3.2, „Lernmodus-<br />

Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen für einen Eintrag“<br />

(S. 65)).<br />

Jede dieser Kategorien führt zu einer Serie <strong>von</strong> Fragen, die Sie beantworten<br />

müssen, um dem Pr<strong>of</strong>il die Ressource o<strong>der</strong> das Programm hinzuzufügen. Die<br />

folgenden beiden Abbildungen zeigen ein Beispiel für den jeweiligen Fall.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 63


Nachfolgende Schritte beschreiben Ihre Möglichkeiten bei <strong>der</strong> Beantwortung<br />

dieser Fragen.<br />

Beispiel 3.1 Lernmodus-Ausnahme: Kontrolle des Zugriffs auf bestimmte Ressourcen<br />

Reading log entries from /var/log/messages.<br />

Aktualisieren <strong>von</strong> apparmor-<strong>Pr<strong>of</strong>ilen</strong> in /etc/apparmor.d.<br />

Pr<strong>of</strong>ile: /usr/sbin/xinetd<br />

Execute: /usr/sbin/vsftpd<br />

[(I)nherit] / (P)r<strong>of</strong>ile / (U)nconfined / (D)eny / Abo(r)t / (F)inish)<br />

Der Umgang <strong>mit</strong> Ausführungszugriffen ist komplex. Sie müssen entscheiden,<br />

welche <strong>der</strong> drei Arten <strong>von</strong> Ausführungsberechtigungen Sie dem Programm<br />

gewähren möchten:<br />

inherit (ix)<br />

Das untergeordnete Programm erbt das Pr<strong>of</strong>il des übergeordneten Programms<br />

und läuft <strong>mit</strong> denselben Zugriffsberechtigungen wie das übergeordnete Programm.<br />

Dieser Modus ist nützlich, wenn ein eingeschränktes Programm ein<br />

an<strong>der</strong>es eingeschränktes Programm aufrufen muss, ohne die Berechtigungen<br />

des Zielpr<strong>of</strong>ils zu erhalten o<strong>der</strong> die Berechtigungen des aktuellen Pr<strong>of</strong>ils zu<br />

verlieren. Dieser Modus wird häufig benutzt, wenn das untergeordnete Programm<br />

eine Hilfsanwendung ist, wie <strong>der</strong> /usr/bin/mail-Client, <strong>der</strong> das<br />

Programm less zur seitenweisen Ausgabe verwendet, o<strong>der</strong> <strong>der</strong> Mozilla-<br />

Webbrowser, <strong>der</strong> das Acrobat-Programm zur Anzeige <strong>von</strong> PDF-Dateien<br />

nutzt.<br />

pr<strong>of</strong>ile (px)<br />

Das untergeordnete Programm läuft <strong>mit</strong> seinem eigenen Pr<strong>of</strong>il ab, das in den<br />

Kernel geladen werden muss. Wenn das Pr<strong>of</strong>il nicht vorhanden ist, schlagen<br />

Ausführungsversuche des untergeordneten Programms <strong>mit</strong> abgelehnter<br />

Berechtigung fehl. Dies ist beson<strong>der</strong>s nützlich, wenn das übergeordnete<br />

Programm einen globalen Dienst aufruft, z. B. DNS-Lookups o<strong>der</strong> das Senden<br />

<strong>von</strong> Mail über den MTA Ihres Systems.<br />

unconfined (ux)<br />

Das untergeordnete Programm läuft uneingeschränkt ohne ein <strong>Novell</strong><br />

<strong>AppArmor</strong>-Pr<strong>of</strong>il für die ausgeführte Ressource.<br />

64 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Beispiel 3.2 Lernmodus-Ausnahme: Definieren <strong>von</strong> Ausführungsberechtigungen für<br />

einen Eintrag<br />

Adding /bin/ps ix to pr<strong>of</strong>ile.<br />

Pr<strong>of</strong>ile: /usr/sbin/xinetd<br />

Path: /etc/hosts.allow<br />

New Mode: r<br />

[1 - /etc/hosts.allow]<br />

[(A)llow] / (D)eny / (N)ew / (G)lob / Glob w/(E)xt / Abo(r)t / (F)inish<br />

Das obige Menü zeigt, wie <strong>Novell</strong> <strong>AppArmor</strong> Verzeichnispfad-Einträge vorschlägt,<br />

auf die die Anwendung, für die Sie ein Pr<strong>of</strong>il erstellen, zugegriffen hat.<br />

Eventuell wird auch verlangt, dass Sie Ausführungsberechtigungen für Einträge<br />

definieren.<br />

<strong>Novell</strong> <strong>AppArmor</strong> bietet einen o<strong>der</strong> mehrere Pfadnamen o<strong>der</strong> include-Dateien<br />

an. Klicken Sie auf eine o<strong>der</strong> mehrere Optionsnummern, um eine o<strong>der</strong> mehrere<br />

<strong>der</strong> folgenden Optionen auszuwählen, und fahren Sie dann <strong>mit</strong> dem nächsten<br />

Schritt fort.<br />

ANMERKUNG<br />

Es werden nicht immer alle diese Optionen im <strong>Novell</strong> <strong>AppArmor</strong>-Menü<br />

angeboten.<br />

#include<br />

Dies ist <strong>der</strong> Abschnitt eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils, <strong>der</strong> auf eine include-<br />

Datei verweist, die Zugriffsberechtigungen für Programme ver<strong>mit</strong>telt. Durch<br />

Verwenden einer include-Anweisung können Sie dem Programm Zugriff<br />

auf Verzeichnispfade o<strong>der</strong> Dateien geben, die auch <strong>von</strong> an<strong>der</strong>en Programmen<br />

benötigt werden. Mithilfe <strong>von</strong> include-Anweisungen lässt sich die Größe<br />

eines Pr<strong>of</strong>ils verringern. Es empfiehlt sich, include-Anweisungen zu wählen,<br />

wenn diese vorgeschlagen werden.<br />

Version <strong>mit</strong> Platzhalter<br />

Der Zugriff erfolgt durch Klicken auf Glob, wie im nächsten Schritt beschrieben.<br />

Weitere Informationen zur Auflösung <strong>der</strong> Syntax finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 65


Tatsächlicher Pfadname<br />

Dies ist <strong>der</strong> buchstabengetreu angegebene Pfad, auf den das Programm<br />

zugreifen muss, da<strong>mit</strong> es reibungslos ablaufen kann.<br />

6 Nach <strong>der</strong> Wahl des Pfadnamens o<strong>der</strong> <strong>der</strong> include-Datei müssen Sie diese als<br />

einen Eintrag im <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il festlegen, indem Sie auf Allow<br />

(Erlauben) o<strong>der</strong> Deny (Ablehnen) klicken. Wenn Sie nicht <strong>mit</strong> dem angezeigten<br />

Eintrag des Verzeichnispfads einverstanden sind, können Sie ihn durch Glob<br />

o<strong>der</strong> Edit (Bearbeiten) än<strong>der</strong>n.<br />

Die folgenden Optionen sind für die Verarbeitung <strong>der</strong> Lernmodus-Einträge und<br />

die Erstellung des Pr<strong>of</strong>ils verfügbar:<br />

Enter drücken<br />

Erlaubt Zugriff auf den ausgewählten Verzeichnispfad.<br />

Allow (Erlauben)<br />

Erlaubt Zugriff auf die angegebenen Verzeichnispfad-Einträge. <strong>Novell</strong><br />

<strong>AppArmor</strong> schlägt Dateizugriffsberechtigung vor. Weitere Informationen<br />

finden Sie unter Abschnitt 3.7, „Modi für Dateizugriffsberechtigungen“<br />

(S. 77).<br />

Deny (Ablehnen)<br />

Hin<strong>der</strong>t das Programm am Zugriff auf die angegebenen Verzeichnispfad-<br />

Einträge. <strong>Novell</strong> <strong>AppArmor</strong> geht dann zum nächsten Ereignis weiter.<br />

Neu<br />

For<strong>der</strong>t Sie auf, Ihre eigene Regel für dieses Ereignis einzugeben. Sie können<br />

eine beliebige Form eines regulären Ausdrucks angeben. Wenn <strong>der</strong> eingegebene<br />

Ausdruck keine Lösung für das Ereignis darstellt, das die Frage ausgelöst<br />

hat, bittet <strong>Novell</strong> <strong>AppArmor</strong> um eine Bestätigung und gestattet Ihnen,<br />

den Ausdruck erneut einzugeben.<br />

Glob<br />

Durch Klicken auf diese Option wird <strong>der</strong> Verzeichnispfad (durch Verwendung<br />

<strong>von</strong> Platzhaltern) so geän<strong>der</strong>t, dass er alle Dateien im vorgeschlagenen Eintragsverzeichnis<br />

umfasst. Durch Doppelklicken auf diese Option wird <strong>der</strong><br />

Zugriff auf alle Dateien und Unterverzeichnisse unterhalb des angezeigten<br />

Verzeichnisses gewährt.<br />

66 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Weitere Informationen zu Syntax <strong>mit</strong> Platzhaltern finden Sie unter<br />

Abschnitt 3.6, „Pfadnamen und Platzhalter“ (S. 76).<br />

Glob <strong>mit</strong> Erw<br />

Durch Klicken auf diese Option wird <strong>der</strong> ursprüngliche Verzeichnispfad<br />

unter Beibehaltung <strong>der</strong> Dateinamenerweiterung geän<strong>der</strong>t. Beispiel: /etc/<br />

apache2/file.ext wird zu /etc/apache2/*.ext und <strong>der</strong> Platzhalter<br />

(Sternchen) wird anstelle des Dateinamens hinzugefügt. Da<strong>mit</strong> kann<br />

das Programm auf alle Dateien, die <strong>mit</strong> <strong>der</strong> Erweiterung .ext enden, im<br />

vorgeschlagenen Verzeichnis zugreifen. Durch Doppelklicken auf diese<br />

Option wird <strong>der</strong> Zugriff auf alle Dateien (<strong>mit</strong> <strong>der</strong> angegebenen Erweiterung)<br />

und Unterverzeichnisse unterhalb des angezeigten Verzeichnisses gewährt.<br />

Bearbeiten<br />

Ermöglicht die Bearbeitung <strong>der</strong> ausgewählten Zeile. Die neue bearbeitete<br />

Zeile erscheint am Ende <strong>der</strong> Liste.<br />

Abbrechen<br />

Bricht logpr<strong>of</strong> ab, verwirft alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

belässt die Pr<strong>of</strong>ile unverän<strong>der</strong>t.<br />

Beenden<br />

Beendet logpr<strong>of</strong>, speichert alle bereits eingegebenen Regelän<strong>der</strong>ungen und<br />

än<strong>der</strong>t alle Pr<strong>of</strong>ile entsprechend.<br />

7 Um Ihr Pr<strong>of</strong>il <strong>mit</strong>hilfe <strong>von</strong> vim anzuzeigen und zu bearbeiten, geben Sie vim<br />

/etc/apparmor.d/pr<strong>of</strong>ilname in ein Terminalfenster ein. Wenn Sie<br />

beim Bearbeiten eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils in vim Syntaxfarben aktivieren<br />

möchten, verwenden Sie die Befehle :syntax on und dann :set<br />

syntax=apparmor. Weitere Informationen zu vim und Syntaxfarben finden<br />

Sie unter „apparmor.vim“ (S. 74).<br />

logpr<strong>of</strong><br />

logpr<strong>of</strong> ist ein interaktives Werkzeug zur Anzeige <strong>der</strong> Ausgabe des Lern- und Meldungsmodus<br />

in den Syslog-Einträgen und <strong>der</strong> anschließenden Generierung <strong>von</strong> neuen Einträgen<br />

in <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitspr<strong>of</strong>ilen.<br />

Wenn Sie logpr<strong>of</strong> ausführen, beginnt es, die Protokolldateien zu scannen, die im Lerno<strong>der</strong><br />

Meldungsmodus erzeugt wurden, und wenn Sicherheitsereignisse vorhanden sind,<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 67


die nicht durch den bestehenden Pr<strong>of</strong>ilsatz abgedeckt werden, schlägt es Än<strong>der</strong>ungen<br />

des Pr<strong>of</strong>ils vor. Der Lern- o<strong>der</strong> Meldungsmodus verfolgt das Programmverhalten und<br />

zeichnet es in Syslog auf. logpr<strong>of</strong> verwendet diese Information zur Beobachtung des<br />

Programmverhaltens.<br />

Wenn ein eingeschränktes Programm ein an<strong>der</strong>es Programm <strong>mit</strong> "fork" und "exec"<br />

ausführt, erkennt logpr<strong>of</strong> dies und fragt den Benutzer, welcher Ausführungsmodus beim<br />

Start des untergeordneten Prozesses verwendet werden soll. Die folgenden Ausführungsmodi<br />

sind Optionen für das Starten des untergeordneten Prozesses: ix, px und ux. Wenn<br />

für den untergeordneten Prozess ein separates Pr<strong>of</strong>il existiert, ist px die Standardauswahl.<br />

Wenn keines existiert, wird standardmäßig ix für das Pr<strong>of</strong>il angegeben. An untergeordneten<br />

Prozessen <strong>mit</strong> separaten <strong>Pr<strong>of</strong>ilen</strong> wird autodep ausgeführt und sie werden in<br />

<strong>Novell</strong> <strong>AppArmor</strong> geladen, falls dieses läuft.<br />

Beim Beenden <strong>von</strong> logpr<strong>of</strong> werden Pr<strong>of</strong>ile <strong>mit</strong> den Än<strong>der</strong>ungen aktualisiert. Wenn das<br />

<strong>AppArmor</strong>-Modul ausgeführt wird, werden die aktualisierten Pr<strong>of</strong>ile neu geladen. Und<br />

wenn Prozesse, die Sicherheitsereignisse generiert haben, noch im Null-Complain-<br />

Pr<strong>of</strong>il (ohne Meldungen) ausgeführt werden, werden diese Prozesse so eingestellt, dass<br />

sie unter ihren korrekten <strong>Pr<strong>of</strong>ilen</strong> laufen.<br />

Sie führen logpr<strong>of</strong> aus, indem Sie logpr<strong>of</strong> in ein Terminalfenster eingeben, während<br />

Sie als root angemeldet sind. Sie können auch die folgenden Optionen für logpr<strong>of</strong> verwenden.<br />

logpr<strong>of</strong> -d /path/to/pr<strong>of</strong>ile/directory/<br />

Gibt den vollständigen Pfad zu den <strong>Pr<strong>of</strong>ilen</strong> an, wenn sich die Pr<strong>of</strong>ile nicht im<br />

Standardverzeichnis /etc/apparmor.d/ befinden.<br />

logpr<strong>of</strong> -f /path/to/logfile/<br />

Gibt den vollständigen Pfad zu <strong>der</strong> Protokolldatei an, wenn sich die Protokolldatei<br />

nicht im Standardverzeichnis /var/log/messages befindet.<br />

logpr<strong>of</strong> -m "string marker in logfile"<br />

Markiert den Anfangspunkt, ab dem logpr<strong>of</strong> im Systemprotokoll nachsieht. logpr<strong>of</strong><br />

ignoriert alle Ereignisse im Systemprotokoll, die vor <strong>der</strong> angegebenen Marke liegen.<br />

Wenn die Marke Leerzeichen enthält, muss sie <strong>mit</strong> Hochkommas umgeben werden,<br />

da<strong>mit</strong> sie korrekt funktioniert. Beispiel: logpr<strong>of</strong> -m<br />

e2ff78636296f16d0b5301209a04430d<br />

68 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


logpr<strong>of</strong> scannt das Protokoll und fragt Sie, wie jedes protokollierte Ereignis behandelt<br />

werden soll. Jede Frage präsentiert eine nummerierte Liste <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Regeln, die durch Drücken <strong>der</strong> Zahl des jeweiligen Listeneintrags hinzugefügt werden<br />

können.<br />

Standardmäßig sucht logpr<strong>of</strong> Pr<strong>of</strong>ile in /etc/apparmor.d/ und scannt das Protokoll<br />

in /var/log/messages. Es reicht also in vielen Fällen, logpr<strong>of</strong> als root auszuführen,<br />

um das Pr<strong>of</strong>il zu erstellen.<br />

Gelegentlich müssen jedoch archivierte Protokolldateien durchsucht werden, z. B. wenn<br />

die Ausführungsdauer des Programms das Protokollrotationsfenster überschreitet (wenn<br />

die Protokolldatei archiviert und eine neue Protokolldatei begonnen wird). In diesem<br />

Fall können Sie zcat -f `ls -1tr /var/log/messages*` | logpr<strong>of</strong><br />

-f - eingeben.<br />

logpr<strong>of</strong>-Beispiel 1<br />

Nachfolgend erhalten Sie ein Beispiel dafür, wie logpr<strong>of</strong> die Situation behandelt, wenn<br />

httpd2-prefork auf die Datei /etc/group zugreift. Das Beispiel verwendet [], um<br />

die Standardoption anzugeben.<br />

In diesem Beispiel ist <strong>der</strong> Zugriff auf /etc/group Teil <strong>von</strong> httpd2-prefork, das auf<br />

Namensdienste zugreift. Die passende Antwort lautet 1, was einen vordefinierten Satz<br />

<strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Regeln abruft. Wenn Sie 1 wählen, um das Namensdienst-Paket<br />

als #include aufzunehmen, werden alle zukünftigen Fragen hinsichtlich DNS-Lookups<br />

erledigt und das Pr<strong>of</strong>il wird weniger labil, d. h.. — Än<strong>der</strong>ungen an <strong>der</strong> DNS-Konfiguration<br />

und am zugehörigen Namensdienst-Pr<strong>of</strong>ilpaket brauchen nur einmal zu erfolgen,<br />

ohne dass viele Pr<strong>of</strong>ile überarbeitet werden müssen.<br />

Pr<strong>of</strong>ile: /usr/sbin/httpd2-prefork<br />

Path: /etc/group<br />

New Mode: r<br />

[1 - #include ]<br />

2 - /etc/group<br />

[(A)llow] / (D)eny / (N)ew / (G)lob / Glob w/(E)xt / Abo(r)t / (F)inish<br />

Wählen Sie eine <strong>der</strong> folgenden Antworten:<br />

Enter drücken<br />

Erlaubt Zugriff auf den ausgewählten Verzeichnispfad.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 69


Allow (Erlauben)<br />

Erlaubt Zugriff auf die angegebenen Verzeichnispfad-Einträge. <strong>Novell</strong> <strong>AppArmor</strong><br />

schlägt Dateizugriffsberechtigung vor. Weitere Informationen dazu finden Sie unter<br />

Abschnitt 3.7, „Modi für Dateizugriffsberechtigungen“ (S. 77).<br />

Deny (Ablehnen)<br />

Hin<strong>der</strong>t das Programm am Zugriff auf die angegebenen Verzeichnispfad-Einträge.<br />

<strong>Novell</strong> <strong>AppArmor</strong> geht dann zum nächsten Ereignis weiter.<br />

Neu<br />

For<strong>der</strong>t Sie auf, Ihre eigene Regel für dieses Ereignis einzugeben. Sie können eine<br />

beliebige Form eines regulären Ausdrucks angeben. Wenn <strong>der</strong> eingegebene Ausdruck<br />

keine Lösung für das Ereignis darstellt, das die Frage ausgelöst hat, bittet<br />

<strong>Novell</strong> <strong>AppArmor</strong> um eine Bestätigung und gestattet Ihnen, den Ausdruck erneut<br />

einzugeben.<br />

Glob<br />

Durch Klicken auf diese Option wird <strong>der</strong> Verzeichnispfad (durch Verwendung <strong>von</strong><br />

Platzhaltern) so geän<strong>der</strong>t, dass er alle Dateien im vorgeschlagenen Eintragsverzeichnis<br />

umfasst. Durch Doppelklicken auf diese Option wird <strong>der</strong> Zugriff auf alle<br />

Dateien und Unterverzeichnisse unterhalb des angezeigten Verzeichnisses gewährt.<br />

Weitere Informationen zur Syntax <strong>mit</strong> Platzhaltern finden Sie unter Abschnitt 3.6,<br />

„Pfadnamen und Platzhalter“ (S. 76).<br />

Glob <strong>mit</strong> Erw<br />

Durch Klicken auf diese Option wird <strong>der</strong> ursprüngliche Verzeichnispfad unter<br />

Beibehaltung <strong>der</strong> Dateinamenerweiterung geän<strong>der</strong>t. Beispiel: /etc/apache2/<br />

file.ext wird zu /etc/apache2/*.ext und <strong>der</strong> Platzhalter (Sternchen)<br />

wird anstelle des Dateinamens hinzugefügt. Da<strong>mit</strong> kann das Programm auf alle<br />

Dateien, die <strong>mit</strong> <strong>der</strong> Erweiterung .ext enden, im vorgeschlagenen Verzeichnis<br />

zugreifen. Durch Doppelklicken auf diese Option wird <strong>der</strong> Zugriff auf alle Dateien<br />

(<strong>mit</strong> <strong>der</strong> angegebenen Erweiterung) und Unterverzeichnisse unterhalb des angezeigten<br />

Verzeichnisses gewährt.<br />

Bearbeiten<br />

Ermöglicht die Bearbeitung <strong>der</strong> ausgewählten Zeile. Die neue bearbeitete Zeile<br />

erscheint am Ende <strong>der</strong> Liste.<br />

70 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Abbrechen<br />

Bricht logpr<strong>of</strong> ab, verwirft alle bereits eingegebenen Regelän<strong>der</strong>ungen und belässt<br />

die Pr<strong>of</strong>ile unverän<strong>der</strong>t.<br />

Beenden<br />

Beendet logpr<strong>of</strong>, speichert alle bereits eingegebenen Regelän<strong>der</strong>ungen und än<strong>der</strong>t<br />

alle Pr<strong>of</strong>ile entsprechend.<br />

logpr<strong>of</strong>-Beispiel 2<br />

In einem Beispiel aus <strong>der</strong> Pr<strong>of</strong>ilerstellung für vsftpd wird diese Frage angezeigt:<br />

Pr<strong>of</strong>ile: /usr/sbin/vsftpd<br />

Path: /y2k.jpg<br />

New Mode: r<br />

[1 - /y2k.jpg]<br />

(A)llow / [(D)eny] / (N)ew / (G)lob / Glob w/(E)xt / Abo(r)t / (F)inish<br />

Diese Frage umfasst mehrere interessante Elemente. Beachten Sie zunächst, dass vsftpd<br />

am Beginn <strong>der</strong> Struktur nach einem Pfadeintrag fragt, obwohl vsftpd in SUSE Linux<br />

standardmäßig FTP-Dateien aus /srv/ftp bereitstellt. Das liegt daran, dass httpd2prefork<br />

Chroot verwendet und <strong>Novell</strong> <strong>AppArmor</strong> für den Teil des Codes im Chroot-<br />

Jail Dateizugriffe in Bezug auf die Chroot-Umgebung sieht und nicht im globalen<br />

absoluten Pfad.<br />

Der zweite interessante Punkt ist, dass Sie FTP-Lesezugriff auf alle JPEG-Dateien im<br />

Verzeichnis gewähren sollten. Sie könnten also Glob <strong>mit</strong> Erw und den vorgeschlagenen<br />

Pfad <strong>von</strong> /*.jpg verwenden. Dann würden alle vorherigen Regeln verworfen, die<br />

Zugriff auf einzelne .jpg-Dateien gewährt haben, und zukünftige Fragen hinsichtlich<br />

des Zugriffs auf .jpg-Dateien würden unterbunden.<br />

Zuletzt sollten Sie einen allgemeineren Zugriff auf FTP-Dateien gewähren. Wenn Sie<br />

im letzten Eintrag Glob wählen, ersetzt logpr<strong>of</strong> den vorgeschlagenen Pfad /y2k.jpg<br />

durch /*. Sie können sogar noch mehr Zugriff auf die ganze Verzeichnisstruktur<br />

gewähren, indem Sie die Pfadoption New (Neu) verwenden und /**.jpg eingeben<br />

(wodurch Zugriff auf alle .jpg-Dateien in <strong>der</strong> ganzen Verzeichnisstruktur gewährt<br />

wird) o<strong>der</strong> /** (wodurch Zugriff auf alle Dateien in <strong>der</strong> ganzen Verzeichnisstruktur<br />

gewährt wird).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 71


Bei Obigem handelt es sich um Lesezugriffe. Schreibzugriffe sind ähnlich, jedoch ist<br />

es empfehlenswert, reguläre Ausdrücke für den Schreibzugriff zurückhalten<strong>der</strong> zu<br />

verwenden.<br />

Der Umgang <strong>mit</strong> Ausführungszugriffen ist komplexer. Sie müssen entscheiden, welche<br />

<strong>der</strong> drei Arten <strong>von</strong> Ausführungsberechtigungen Sie gewähren möchten:<br />

inherit (ix)<br />

Das untergeordnete Programm erbt das Pr<strong>of</strong>il des übergeordneten Programms und<br />

läuft <strong>mit</strong> denselben Zugriffsberechtigungen wie das übergeordnete Programm.<br />

Dieser Modus ist nützlich, wenn ein eingeschränktes Programm ein an<strong>der</strong>es eingeschränktes<br />

Programm aufrufen muss, ohne die Berechtigungen des Zielpr<strong>of</strong>ils zu<br />

erhalten o<strong>der</strong> die Berechtigungen des aktuellen Pr<strong>of</strong>ils zu verlieren. Dieser Modus<br />

wird häufig benutzt, wenn das untergeordnete Programm eine Hilfsanwendung ist,<br />

wie <strong>der</strong> /usr/bin/mail-Client, <strong>der</strong> das Programm less zur seitenweisen Ausgabe<br />

verwendet, o<strong>der</strong> <strong>der</strong> Mozilla-Webbrowser, <strong>der</strong> das Acrobat-Programm zur<br />

Anzeige <strong>von</strong> PDF-Dateien nutzt.<br />

pr<strong>of</strong>ile (px)<br />

Das untergeordnete Programm läuft <strong>mit</strong> seinem eigenen Pr<strong>of</strong>il ab, das in den Kernel<br />

geladen werden muss. Wenn das Pr<strong>of</strong>il nicht vorhanden ist, schlagen Ausführungsversuche<br />

des untergeordneten Programms <strong>mit</strong> abgelehnter Berechtigung fehl. Dies<br />

ist beson<strong>der</strong>s nützlich, wenn das übergeordnete Programm einen globalen Dienst<br />

aufruft, z. B. DNS-Lookups o<strong>der</strong> das Senden <strong>von</strong> Mail über den MTA Ihres Systems.<br />

unconfined (ux)<br />

Das untergeordnete Programm läuft uneingeschränkt ohne ein <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>il für die ausgeführte Ressource.<br />

Im folgenden Beispiel wird für den Mailclient /usr/bin/mail ein Pr<strong>of</strong>il erstellt<br />

und logpr<strong>of</strong> hat festgestellt, dass /usr/bin/mail als Hilfsanwendung<br />

/usr/bin/less ausführt, um lange Mail-Nachrichten „seitenweise“ auszugeben.<br />

Daher präsentiert es diese Eingabe-Auffor<strong>der</strong>ung:<br />

/usr/bin/nail -> /usr/bin/less<br />

(I)nherit / (P)r<strong>of</strong>ile / (U)nconstrained / (D)eny<br />

TIPP<br />

Die aktuelle ausführbare Datei für /usr/bin/mail ist /usr/bin/nail,<br />

wobei es sich um keinen Schreibfehler handelt.<br />

72 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


usr/bin/less scheint ein einfaches Programm zum Abrollen <strong>von</strong> Text zu sein,<br />

<strong>der</strong> länger als eine Bildschirmseite ist, w<strong>of</strong>ür /usr/bin/mail es auch verwendet.<br />

Jedoch ist less tatsächlich ein umfangreiches und leistungsstarkes Programm, das viele<br />

an<strong>der</strong>e Hilfsanwendungen nutzt, wie etwa tar und rpm.<br />

TIPP<br />

Führen Sie less an einem Tarball o<strong>der</strong> einer RPM-Datei aus, dann sehen Sie<br />

das Inhaltsverzeichnis dieser Container.<br />

Sie sollten rpm beim Lesen <strong>von</strong> Mail-Nachrichten nicht automatisch ausführen (das<br />

führt direkt zu Virusangriffen im Stil <strong>von</strong> Micros<strong>of</strong>t* Outlook, da rpm Systemprogramme<br />

installieren und än<strong>der</strong>n kann), daher entscheiden Sie sich in diesem Fall am besten für<br />

Inherit (Erben). Das Programm less wird dann in diesem Kontext unter dem Pr<strong>of</strong>il für<br />

/usr/bin/mail ausgeführt. Das hat zwei Folgen:<br />

• Sie müssen alle grundlegenden Dateizugriffe für /usr/bin/less dem Pr<strong>of</strong>il<br />

für /usr/bin/mail hinzufügen.<br />

• Sie können vermeiden, die Hilfsanwendungen wie tar und rpm dem Pr<strong>of</strong>il <strong>von</strong><br />

/usr/bin/mail hinzuzufügen. Wenn dann /usr/bin/mail in diesem<br />

Kontext /usr/bin/mail/less ausführt, ist das Programm less viel weniger<br />

gefährlich als es ohne <strong>Novell</strong> <strong>AppArmor</strong>-Schutz wäre.<br />

Unter an<strong>der</strong>en Umständen sollten Sie stattdessen die Option Pr<strong>of</strong>il verwenden. Das hat<br />

zwei Auswirkungen auf logpr<strong>of</strong>:<br />

• Die in das Pr<strong>of</strong>il geschriebene Regel ist px, was den Wechsel zum eigenen Pr<strong>of</strong>il<br />

des untergeordneten Programms erzwingt.<br />

• logpr<strong>of</strong> konstruiert ein Pr<strong>of</strong>il für das untergeordnete Programm und beginnt dessen<br />

Erstellung auf die gleiche Weise wie das übergeordnete Pr<strong>of</strong>il, indem es Ereignisse<br />

für den untergeordneten Prozess in das Pr<strong>of</strong>il für das untergeordnete Programm<br />

schreibt und dem logpr<strong>of</strong>-Benutzer dieselben Fragen wie oben stellt.<br />

Zuletzt sollten Sie dem untergeordneten Prozess sehr leistungsstarken Zugriff gewähren,<br />

indem Sie Unconfined (Uneingeschränkt) angeben. Dies schreibt ux in das Pr<strong>of</strong>il des<br />

übergeordneten Programms. Wenn also das untergeordnete Programm abläuft, wird es<br />

ohne jegliches <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il ausgeführt. Das bedeutet eine Ausführung ohne<br />

jeglichen Schutz und sollte nur verwendet werden, wenn unbedingt nötig.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 73


apparmor.vim<br />

Eine Syntaxfarbgebungsdatei für den Texteditor vim markiert verschiedene Funktionen<br />

eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils <strong>mit</strong> Farben. Durch die Verwendung <strong>von</strong> vim und dem<br />

<strong>Novell</strong> <strong>AppArmor</strong>-Syntaxmodus für vim können Sie die semantischen Implikationen<br />

Ihrer Pr<strong>of</strong>ile anhand <strong>von</strong> farblichen Markierungen sehen. Verwenden Sie vim, um Ihr<br />

Pr<strong>of</strong>il anzuzeigen und zu bearbeiten, indem Sie "vim" in ein Terminalfenster eingeben.<br />

Wenn Sie beim Bearbeiten eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils in vim Syntaxfarben aktivieren<br />

möchten, verwenden Sie die Befehle :syntax on und dann :set<br />

syntax=apparmor. Alternativ können Sie diese Zeilen in Ihre Datei ~/.vimrc<br />

eingeben:<br />

syntax on<br />

set modeline<br />

set modelines=5<br />

Wenn Sie diese Funktion aktivieren, färbt vim die Zeilen des Pr<strong>of</strong>ils für Sie:<br />

Blau<br />

#include-Zeilen, die an<strong>der</strong>e <strong>Novell</strong> <strong>AppArmor</strong>-Regeln abrufen, und Kommentare,<br />

die <strong>mit</strong> # beginnen<br />

Weiß<br />

Zeilen für normalen Lesezugriff<br />

Braun<br />

Funktionsanweisungen und Meldungsflags<br />

Gelb<br />

Zeilen, die Schreibzugriff gewähren<br />

Grün<br />

Zeilen, die Ausführungsberechtigung gewähren (ix o<strong>der</strong> px)<br />

Rot<br />

Zeilen, die uneingeschränkten Zugriff gewähren (ux)<br />

Roter Hintergrund<br />

Syntaxfehler, die nicht korrekt in die <strong>AppArmor</strong>-Module geladen werden<br />

74 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


ANMERKUNG<br />

Bei <strong>der</strong> Verwendung dieser Zeilen in Ihrer .vimrc-Datei besteht ein Sicherheitsrisiko,<br />

da sie vim veranlassen, dem Syntaxmodus in den Dateien zu vertrauen,<br />

die Sie bearbeiten. Das kann einem Angreifer ermöglichen, Ihnen eine Datei<br />

zu senden, die <strong>mit</strong> vim geöffnet wird und schädliche Aktionen ausführt.<br />

Verwenden Sie die Manualpages apparmor.vim und vim und die Syntax :help<br />

im vim-Editor, um weitere vim-Hilfe zur Syntaxmarkierung zu erhalten. Die <strong>Novell</strong><br />

<strong>AppArmor</strong>-Syntax wird in /usr/share/vim/current/syntax/apparmor<br />

.vim gespeichert.<br />

Unconfined (Uneingeschränkt)<br />

Der Befehl unconfined prüft <strong>of</strong>fene Netzwerkports auf Ihrem System, vergleicht<br />

diese <strong>mit</strong> dem auf dem System geladenen Pr<strong>of</strong>ilsatz und meldet Netzwerkdienste, die<br />

über kein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il verfügen. Er benötigt root-Berechtigung und darf<br />

nicht durch ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il eingeschränkt sein.<br />

unconfined muss als root ausgeführt werden, um den Link auf das im Prozess ausgeführte<br />

Programm aus dem proc-Dateisystem abzurufen. Dieses Programm hat Probleme<br />

bei den folgenden zeitabhängigen Konflikten:<br />

• Ein gelöschter Eintrag für eine ausführbare Datei wird falsch behandelt.<br />

• Eine ausführbare Datei, die vor dem Laden eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils gestartet<br />

wurde, wird nicht in <strong>der</strong> Ausgabe angezeigt, obwohl sie ohne Einschränkung ausgeführt<br />

wird.<br />

• Ein Prozess, <strong>der</strong> zwischen netstat(8) und weiteren Prüfungen "stirbt", wird<br />

falsch behandelt.<br />

ANMERKUNG<br />

Dieses Programm listet nur Prozesse auf, die TCP und UDP verwenden. Kurz<br />

gesagt eignet sich dieses Programm nicht zum Nachweis <strong>von</strong> Abläufen und ist<br />

nur als Hilfe dafür gedacht, Pr<strong>of</strong>ile für alle im Netzwerk zugänglichen Prozesse<br />

im Labor zu erstellen.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 75


Weitere Informationen über die Theorie und Sicherheit <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> finden<br />

Sie in den folgenden Arbeiten:<br />

SubDomain: Parsimonious Server Security (Sparsame Serversicherheit) <strong>von</strong> Crispin<br />

Cowan, Steve Beattie, Greg Kroah-Hartman, Calton Pu, Perry Wagle und Virgil Gligor<br />

Beschreibt die anfängliche Entwicklung und Implementierung <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>. Herausgegeben in den Veröffentlichungen <strong>der</strong> USENIX LISA Conference,<br />

Dezember 2000, New Orleans, LA.<br />

Diese Arbeit ist nun veraltet und beschreibt Syntax und Funktionen, die sich vom<br />

aktuellen <strong>Novell</strong> <strong>AppArmor</strong>-Produkt unterscheiden. Sie sollte nur als wissenschaftlicher<br />

Hintergrund und nicht für technische Dokumentation verwendet werden.<br />

Defcon Capture the Flag: Defending Vulnerable Code from Intense Attack (Verteidigung<br />

<strong>von</strong> anfälligem Code vor intensiven Angriffen) <strong>von</strong> Crispin Cowan, Seth Arnold, Steve<br />

Beattie, Chris Wright und John Viega<br />

Eine gute Anleitung für den strategischen und taktischen Einsatz <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong> zur Lösung ernster Sicherheitsprobleme innerhalb kürzester Zeit. Herausgegeben<br />

in den Veröffentlichungen <strong>der</strong> DARPA Information Survivability<br />

Conference und Expo (DISCEX III), April 2003, Washington, DC.<br />

3.6 Pfadnamen und Platzhalter<br />

Platzhalter (zum Abgleich regulärer Ausdrücke) werden verwendet, um den Verzeichnispfad<br />

so zu än<strong>der</strong>n, dass eine Gruppe <strong>von</strong> Dateien o<strong>der</strong> Unterverzeichnissen berücksichtigt<br />

wird. Dateiressourcen können <strong>mit</strong> einer Platzhaltersyntax angegeben werden,<br />

die <strong>der</strong>jenigen <strong>von</strong> gängigen Shells gleicht, wie csh, bash und zsh.<br />

*<br />

**<br />

76 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch<br />

Ersetzt eine beliebige Anzahl an Zeichen, außer<br />

/.<br />

Beispiel: Eine beliebige Anzahl an Pfadelementen,<br />

einschließlich ganzer Verzeichnisse.<br />

Ersetzt eine beliebige Anzahl an Zeichen, einschließlich<br />

/.


?<br />

[abc]<br />

[a-c]<br />

{ab,cd}<br />

Beispiel: Eine beliebige Anzahl an Pfadelementen,<br />

einschließlich ganzer Verzeichnisse.<br />

Ersetzt ein beliebiges Einzelzeichen, außer /.<br />

Ersetzt das Einzelzeichen a, b o<strong>der</strong> c<br />

Beispiel: Eine Regel, die<br />

/home[01]/*/.plan entspricht, erlaubt<br />

einem Programm den Zugriff auf .plan-Dateien<br />

für Benutzer in /home0 und /home1.<br />

Ersetzt das Einzelzeichen a, b o<strong>der</strong> c<br />

Wird erweitert auf eine Regel, die ab entspricht,<br />

und eine Regel, die cd entspricht.<br />

Beispiel: Eine Regel, die<br />

/{usr,www}/pages/** entspricht, gewährt<br />

Zugriff auf Webseiten in /usr/pages und<br />

/www/pages.<br />

3.7 Modi für<br />

Dateizugriffsberechtigungen<br />

Modi für Dateizugriffsberechtigungen bestehen aus Kombinationen <strong>der</strong> folgenden sechs<br />

Modi:<br />

r<br />

w<br />

px<br />

ux<br />

Lese-Modus<br />

Schreibmodus<br />

Ausführungsmodus für Einzelpr<strong>of</strong>ile<br />

uneingeschränkter Ausführungsmodus<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 77


ix<br />

l<br />

3.7.1 Lese-Modus<br />

vererbter Ausführungsmodus<br />

Link-Modus<br />

Gestattet dem Programm Lesezugriff auf die Ressource. Lesezugriff ist erfor<strong>der</strong>lich<br />

für Shell-Skripts und an<strong>der</strong>en interpretierten Inhalt und bestimmt, ob ein ausgeführter<br />

Prozess einen Speicherauszug erzeugen o<strong>der</strong> <strong>mit</strong> ptrace(2) untersucht werden kann.<br />

(ptrace(2) wird <strong>mit</strong> Dienstprogrammen wie strace(1), ltrace(1) und<br />

gdb(1) verwendet.)<br />

3.7.2 Schreibmodus<br />

Gestattet dem Programm Schreibzugriff auf die Ressource. Dateien müssen über diese<br />

Berechtigung verfügen, wenn sie ausgetragen (entfernt) werden sollen.<br />

3.7.3 Ausführungsmodus für Einzelpr<strong>of</strong>ile<br />

Dieser Modus verlangt, dass ein einzelnes Sicherheitspr<strong>of</strong>il für eine Ressource definiert<br />

wird, die bei einem <strong>Novell</strong> <strong>AppArmor</strong>-Domänenwechsel ausgeführt wird. Wenn kein<br />

Pr<strong>of</strong>il definiert ist, wird <strong>der</strong> Zugriff verweigert. Inkompatibel <strong>mit</strong> den Ausführungseinträgen<br />

inherit und unconstrained.<br />

3.7.4 Uneingeschränkter Ausführungsmodus<br />

Gestattet dem Programm, die Ressource auszuführen, ohne dass ihr ein <strong>Novell</strong><br />

<strong>AppArmor</strong>-Pr<strong>of</strong>il zugewiesen wird. Erfor<strong>der</strong>t auch die Angabe des Ausführungsmodus.<br />

Inkompatibel <strong>mit</strong> den Ausführungseinträgen inherit und discrete pr<strong>of</strong>ile.<br />

Dieser Modus ist nützlich, wenn ein eingeschränktes Programm eine privilegierte<br />

Operation ausführen muss, z. B. einen Neustart des Rechners. Indem Sie den privilegierten<br />

Abschnitt in ein an<strong>der</strong>es ausführbares Programm setzen und uneingeschränkte<br />

Ausführungsberechtigung gewähren, können Sie die obligatorischen Einschränkungen<br />

78 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


umgehen, die für alle eingeschränkten Prozesse gelten. Weitere Informationen zu den<br />

Einschränkungen finden Sie auf <strong>der</strong> Manualpage apparmor(7).<br />

3.7.5 Vererbter Ausführungsmodus<br />

Verhin<strong>der</strong>t den normalen <strong>Novell</strong> <strong>AppArmor</strong>-Domänenwechsel beim<br />

execve(2)-Systemaufruf, wenn das Programm, für welches das Pr<strong>of</strong>il gilt, die Ressource<br />

ausführt. Stattdessen erbt die ausgeführte Ressource das aktuelle Pr<strong>of</strong>il.<br />

Inkompatibel <strong>mit</strong> den Ausführungseinträgen unconstrained und discrete pr<strong>of</strong>ile. Dieser<br />

Modus ist nützlich, wenn ein eingeschränktes Programm ein an<strong>der</strong>es eingeschränktes<br />

Programm aufrufen muss, ohne die Berechtigungen des Zielpr<strong>of</strong>ils zu erhalten o<strong>der</strong> die<br />

Berechtigungen des aktuellen Pr<strong>of</strong>ils zu verlieren. Dieser Modus wird selten verwendet.<br />

3.7.6 Link-Modus<br />

Der Link-Modus ver<strong>mit</strong>telt Zugriff auf symbolische Links und Hardlinks und die<br />

Berechtigung, Dateien auszutragen (o<strong>der</strong> zu löschen). Beim Anlegen eines Links muss<br />

die betr<strong>of</strong>fene Datei über dieselben Zugriffsberechtigungen verfügen wie <strong>der</strong> erstellte<br />

Link (<strong>mit</strong> <strong>der</strong> Ausnahme, dass das Ziel keinen Link-Zugriff besitzt).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> 79


Verwalten <strong>von</strong> Anwendungen <strong>mit</strong><br />

<strong>Pr<strong>of</strong>ilen</strong><br />

Nach dem <strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> und Immunisieren Ihrer Anwendungen wird SUSE<br />

Linux effizienter und besser geschützt, wenn Sie die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ilwartung<br />

ausführen, die das Er<strong>mit</strong>teln <strong>von</strong> häufigen Problemen umfasst. Sie können übliche<br />

Schwachstellen bereinigen, bevor sie zu einem Problem werden, indem Sie die Ereignisbenachrichtigung<br />

per E-Mail einrichten, regelmäßige Berichte generieren, Pr<strong>of</strong>ile<br />

aus Systemprotokolleinträgen aktualisieren (was im Wesentlichen aus dem Ausführen<br />

des Werkzeugs logpr<strong>of</strong> durch YaST besteht) und Wartungsprobleme lösen. Anleitungen<br />

für jede dieser Aufgaben erhalten Sie unter:<br />

• Abschnitt 4.1, „Überwachen Ihrer geschützten Anwendungen“ (S. 81)<br />

• Abschnitt 4.5, „Pflegen Ihrer Sicherheitspr<strong>of</strong>ile“ (S. 109).<br />

4.1 Überwachen Ihrer geschützten<br />

Anwendungen<br />

Anwendungen, die durch <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitspr<strong>of</strong>ile eingeschränkt sind,<br />

generieren Meldungen, sobald sie auf unerwartete Weise o<strong>der</strong> außerhalb ihres festgelegten<br />

Pr<strong>of</strong>ils ausgeführt werden. Diese Meldungen lassen sich durch Ereignisbenachrichtigung,<br />

Generieren regelmäßiger Berichte o<strong>der</strong> Einbindung in den Berichtmechanismus<br />

eines Drittanbieters überwachen. Die folgenden Abschnitte enthalten Einzelheiten<br />

für die Verwendung dieser Funktionen und Verweise auf weitere Ressourcen.<br />

• Abschnitt 4.2, „Einrichten <strong>der</strong> Ereignisbenachrichtigung“ (S. 82)<br />

4<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 81


• Abschnitt 4.3, „Berichte“ (S. 86)<br />

• Abschnitt 4.4, „Reaktion auf Sicherheitsereignisse“ (S. 108)<br />

4.2 Einrichten <strong>der</strong><br />

Ereignisbenachrichtigung<br />

Sicherheitsereignisbenachrichtigung ist eine <strong>Novell</strong> <strong>AppArmor</strong>-Funktion, die einen<br />

angegebenen E-Mail-Empfänger benachrichtigt, wenn eine systemabhängige <strong>Novell</strong><br />

<strong>AppArmor</strong>-Aktivität auftritt. Diese Funktion steht <strong>der</strong>zeit über YaST zur Verfügung.<br />

Wenn Sie eine E-Mail-Adresse eingeben, werden Sie bei Eintreten eines <strong>Novell</strong><br />

<strong>AppArmor</strong>-Sicherheitsereignisses per E-Mail benachrichtigt. Sie können die folgenden<br />

drei Benachrichtigungstypen aktivieren:<br />

Terse (Knapp)<br />

Knappe Benachrichtigungen fassen die Gesamtanzahl an Systemereignissen ohne<br />

Einzelheiten zusammen. Beispiel:<br />

dhcp-101.up.wirex.com has had 10 security events since Tue Oct 12 11:10:00<br />

2004<br />

Summary Notification (Zusammenfassungsbenachrichtigung)<br />

Die Zusammenfassungsbenachrichtigung zeigt die protokollierten <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsereignisse<br />

und listet die Häufigkeit sowie das Datum des letzten<br />

Auftretens auf. Beispiel:<br />

<strong>AppArmor</strong>: PERMITTING access to capability ’setgid’ (httpd2-prefork(6347)<br />

pr<strong>of</strong>ile /usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork) 2 times,<br />

the latest at Sat Oct 9 16:05:54 2004.<br />

Verbose Notification (Umfassende Benachrichtigung)<br />

Die umfassende Benachrichtigung zeigt unverän<strong>der</strong>te, protokollierte <strong>Novell</strong><br />

<strong>AppArmor</strong>-Sicherheitsereignisse an. Bei jedem Auftreten eines Ereignisses wird<br />

eine neue Zeile in das umfassende Protokoll eingetragen und Sie werden über das<br />

Ereignis informiert. Diese Sicherheitsereignisse umfassen Datum und Uhrzeit des<br />

Ereignisses, wann das Anwendungspr<strong>of</strong>il den Zugriff erlaubt und abweist, sowie<br />

den Typ <strong>der</strong> Dateizugriffsberechtigung, die erlaubt o<strong>der</strong> abgewiesen wird. Die<br />

ausführliche Benachrichtigung teilt auch mehrere Meldungen <strong>mit</strong>, die das Werkzeug<br />

logpr<strong>of</strong> (siehe „logpr<strong>of</strong>“ (S. 67)) für die Interpretation <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> benutzt. Beispiel:<br />

82 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Oct 9 15:40:31 <strong>AppArmor</strong>: PERMITTING r access to /etc/apache2/httpd.conf<br />

(httpd2-prefork(6068) pr<strong>of</strong>ile /usr/sbin/httpd2-prefork active<br />

/usr/sbin/httpd2-prefork)<br />

ANMERKUNG<br />

Wie die Ereignisbenachrichtigung konfiguriert wird, erfahren Sie unter<br />

Abschnitt 4.2.2, „Konfigurieren <strong>der</strong> Sicherheitsereignisbenachrichtigung“ (S. 83).<br />

Lesen Sie nach dem Konfigurieren <strong>der</strong> Sicherheitsereignisbenachrichtigung die<br />

Berichte und bestimmen Sie, welche Ereignisse überprüft werden müssen. Eine<br />

Überprüfung kann die in Abschnitt 4.4.1, „Empfang einer Sicherheitsereignisablehnung“<br />

(S. 109) beschriebenen Prozeduren beinhalten.<br />

4.2.1 Benachrichtigung über den<br />

Schweregrad<br />

Sie können <strong>Novell</strong> <strong>AppArmor</strong> so einrichten, dass Sie Ereignismeldungen für Vorfälle<br />

erhalten, die sich in <strong>der</strong> Severity-Datenbank und über <strong>der</strong> gewählten Ebene befinden.<br />

Diese werden <strong>von</strong> eins bis zehn nummeriert, wobei zehn den schwerwiegendsten<br />

Sicherheitsvorfall bezeichnet. Die Datei severity.db definiert den Schweregrad<br />

<strong>von</strong> potenziellen Sicherheitsereignissen. Die Schweregrade werden durch die Wichtigkeit<br />

<strong>von</strong> verschiedenen Sicherheitsereignissen bestimmt, z. B. bestimmte Ressourcen, auf<br />

die zugegriffen wird, o<strong>der</strong> abgelehnte Dienste.<br />

4.2.2 Konfigurieren <strong>der</strong><br />

Sicherheitsereignisbenachrichtigung<br />

Die Sicherheitsereignisbenachrichtigung ist eine <strong>Novell</strong> <strong>AppArmor</strong>-Funktion, die Sie<br />

informiert, wenn eine systemabhängige <strong>Novell</strong> <strong>AppArmor</strong>-Aktivität auftritt. Indem Sie<br />

eine Benachrichtigungshäufigkeit wählen (z. B. den Empfang <strong>von</strong> täglichen Benachrichtigungen),<br />

aktivieren Sie die Benachrichtigung. Sie müssen eine E-Mail-Adresse<br />

eingeben, da<strong>mit</strong> Sie bei Eintreten eines <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsereignisses per<br />

E-Mail benachrichtigt werden können.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 83


ANMERKUNG<br />

Sie müssen in Ihrem SUSE Linux einen Mailserver einrichten, <strong>der</strong> ausgehende<br />

Mail <strong>mit</strong> dem SMTP-Protokoll senden kann (z. B. postfix o<strong>der</strong> exim), da<strong>mit</strong> die<br />

Ereignisbenachrichtigung funktioniert.<br />

1 Klicken Sie im Bereich Sicherheitsereignisbenachrichtigung aktivieren des<br />

Fensters <strong>AppArmor</strong>-Konfiguration auf Konfigurieren.<br />

2 Im Fenster Sicherheitsereignisbenachrichtigung können Sie Terse (Knapp),<br />

Summary (Zusammenfassung) o<strong>der</strong> Verbose (Ausführlich) aktivieren. (Siehe<br />

dazu Abschnitt 4.2.1, „Benachrichtigung über den Schweregrad“ (S. 83).) Um<br />

eine Benachrichtigungs-E-Mail <strong>mit</strong> Angabe <strong>der</strong> letzten <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Sicherheitsereignisse zu erhalten, müssen Sie Ihren bevorzugten Benachrichtigungstyp<br />

festlegen.<br />

3 Geben Sie in das vorgesehene Feld im Bereich für den gewünschten Benachrichtigungstyp<br />

die E-Mail-Adressen <strong>von</strong> den Personen ein, die eine Benachrichtigung<br />

erhalten sollen. Wenn Benachrichtigung aktiviert ist, müssen Sie eine E-Mail-<br />

Adresse eingeben. An<strong>der</strong>nfalls erhalten Sie eine Fehlermeldung. Trennen Sie<br />

mehrere E-Mail-Adressen durch Kommas.<br />

84 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


4 Wählen Sie die Häufigkeit für jeden Benachrichtigungstyp, den Sie aktivieren<br />

möchten.<br />

Wählen Sie eine Benachrichtigungshäufigkeit aus den folgenden Optionen:<br />

• Deaktiviert<br />

• 1 Minute<br />

• 5 Minuten<br />

• 10 Minuten<br />

• 15 Minuten<br />

• 30 Minuten<br />

• 1 Stunde<br />

• 1 Tag<br />

• 1 Woche<br />

5 Wählen Sie für jeden gewählten Benachrichtigungstyp den geringsten Schweregrad,<br />

für den eine Benachrichtigung gesendet werden soll. Sicherheitsereignisse<br />

werden protokolliert und die Benachrichtigungen werden im angegebenen Zeitintervall<br />

gesendet, wenn Ereignisse <strong>mit</strong> dem gewählten o<strong>der</strong> einem größeren<br />

Schweregrad eintreten. Wenn das Intervall 1 Tag ist, wird die Benachrichtigung<br />

täglich gesendet, falls Sicherheitsereignisse auftreten. Weitere Informationen<br />

über Schweregrade finden Sie unter Abschnitt 4.2.1, „Benachrichtigung über<br />

den Schweregrad“ (S. 83).<br />

6 Klicken Sie auf OK.<br />

7 Klicken Sie im Fenster <strong>Novell</strong> <strong>AppArmor</strong>-Konfiguration auf Fertig.<br />

8 Klicken Sie im YaST-Kontrollzentrum auf Datei → Beenden.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 85


4.3 Berichte<br />

Die <strong>Novell</strong> <strong>AppArmor</strong>-Berichtfunktion sorgt für Flexibilität, indem sie die Anzeigemöglichkeiten<br />

<strong>von</strong> Sicherheitsereignisdaten erweitert. Das Berichtwerkzeug führt folgende<br />

Aktionen durch:<br />

• Erstellt On-Demand-Berichte<br />

• Exportiert Berichte<br />

• Plant periodische Berichte für die Archivierung<br />

• Schickt periodische Berichte per E-Mail<br />

• Filtert Berichtdaten nach Datum<br />

• Filtert Berichtdaten nach an<strong>der</strong>en Optionen, z. B. nach Programmname<br />

Mithilfe <strong>von</strong> Berichten können Sie wichtige <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsereignisse<br />

nachlesen, die in Protokolldateien aufgezeichnet wurden, ohne mühselig alle Meldungen<br />

durchsuchen zu müssen, die nur für das logpr<strong>of</strong>-Werkzeug nützlich sind. Sie können<br />

die Größe des Berichts verringern, indem Sie nach Datumsbereich o<strong>der</strong> Programmname<br />

filtern. Sie können auch eine html- o<strong>der</strong> csv-Datei exportieren.<br />

Die folgenden drei Berichttypen stehen in <strong>Novell</strong> <strong>AppArmor</strong> zur Verfügung:<br />

Zusammenfassung <strong>der</strong> Ausführungssicherheit<br />

Ein aus einem o<strong>der</strong> mehreren Sicherheitsereignisberichten bestehen<strong>der</strong> kombinierter<br />

Bericht für einen o<strong>der</strong> mehrere Computer. Dieser Bericht kann eine Einzelansicht<br />

<strong>der</strong> Sicherheitsereignisse auf mehreren Computern liefern. Weitere Einzelheiten<br />

finden Sie unter „Zusammenfassung <strong>der</strong> Ausführungssicherheit“ (S. 96).<br />

Anwendungsprüfbericht<br />

Ein Prüfwerkzeug für Berichte zu den laufenden Anwendungsservern und zu den<br />

<strong>von</strong> <strong>AppArmor</strong> beschränkten Anwendungen. Anwendungsserver sind Anwendungen,<br />

die eingehende Netzwerkverbindungen annehmen. Weitere Einzelheiten finden<br />

Sie unter „Anwendungsprüfbericht“ (S. 92).<br />

86 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Sicherheitsereignisbericht<br />

Ein Bericht, in dem die Anwendungssicherheit für einen einzelnen Host angezeigt<br />

wird. Hier werden die Richtlinienverstöße für lokal eingeschränkte Anwendungen<br />

in einem bestimmten Zeitraum angegeben. Sie können den Bericht bearbeiten,<br />

anpassen o<strong>der</strong> ihm neue Versionen hinzufügen. Weitere Einzelheiten finden Sie<br />

unter „Sicherheitsereignisbericht“ (S. 94).<br />

Gehen Sie zur Nutzung <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Berichtfunktionen wie folgt vor:<br />

1 Um Berichte auszuführen, öffnen Sie YaST → <strong>Novell</strong> <strong>AppArmor</strong>. Die <strong>Novell</strong><br />

<strong>AppArmor</strong>-Oberfläche wird geöffnet.<br />

2 Klicken Sie unter <strong>Novell</strong> <strong>AppArmor</strong> auf <strong>AppArmor</strong>-Berichte. Das Fenster<br />

<strong>AppArmor</strong>-Sicherheitsereignisberichte wird angezeigt. Wählen Sie im Fenster<br />

Berichte eine Option aus und folgen Sie den Anleitungen im entsprechenden<br />

Abschnitt:<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 87


Archiv anzeigen<br />

Zeigt alle Berichte an, die ausgeführt und in /var/log/apparmor/<br />

reports-archived/ gespeichert wurden. Wählen Sie den Bericht aus,<br />

dessen Einzelheiten Sie sehen möchten, und klicken Sie auf Anzeigen.<br />

Anleitungen zu Archiv anzeigen erhalten Sie unter Abschnitt 4.3.1, „Anzeigen<br />

<strong>von</strong> archivierten Berichten“ (S. 89).<br />

Jetzt ausführen<br />

Erzeugt eine s<strong>of</strong>ortige Version des ausgewählten Berichttyps. Wenn Sie<br />

einen Sicherheitsereignisbericht wählen, kann er auf verschiedene Arten<br />

weiter gefiltert werden. Anleitungen zu Jetzt ausführen erhalten Sie unter<br />

Abschnitt 4.3.2, „Jetzt ausführen: Ausführen <strong>von</strong> On-Demand-Berichten“<br />

(S. 98).<br />

Hinzufügen<br />

Erstellt einen geplanten Sicherheitsereignisbericht. Anleitungen zu Hinzufügen<br />

erhalten Sie unter Abschnitt 4.3.3, „Hinzufügen <strong>von</strong> neuen Berichten“<br />

(S. 101).<br />

Bearbeiten<br />

Bearbeitet einen geplanten Sicherheitsereignisbericht.<br />

88 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Löschen<br />

Löscht einen geplanten Sicherheitsereignisbericht. Alle Bestands- o<strong>der</strong><br />

Archivberichte können nicht gelöscht werden.<br />

Zurück<br />

Wechselt wie<strong>der</strong> in das <strong>Novell</strong> <strong>AppArmor</strong>-Hauptfenster.<br />

Abbrechen<br />

Wechselt wie<strong>der</strong> in das <strong>Novell</strong> <strong>AppArmor</strong>-Hauptfenster.<br />

Weiter<br />

Führt dieselbe Funktion aus wie die Schaltfläche Jetzt ausführen.<br />

4.3.1 Anzeigen <strong>von</strong> archivierten Berichten<br />

Über Berichte anzeigen können Sie den Speicherort einer Berichtsammlung aus einem<br />

o<strong>der</strong> mehreren Systemen angeben sowie Berichte nach Datum o<strong>der</strong> Programmnamen<br />

filtern und alle zusammen in einem Bericht anzeigen.<br />

1 Wählen Sie im Fenster <strong>AppArmor</strong>-Sicherheitsereignisberichte die Option Archiv<br />

anzeigen.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 89


2 Wählen Sie den anzuzeigenden Berichttyp. Wechseln Sie zwischen verschiedenen<br />

Typen (SIR (Sicherheitsereignisbericht), App Aud (Anwendungsprüfbericht) und<br />

ESS (Zusammenfassung <strong>der</strong> Ausführungssicherheit).<br />

3 Sie können das Verzeichnis für die archivierten Berichte in Speicherort <strong>der</strong><br />

archivierten Berichte än<strong>der</strong>n. Wählen Sie Übernehmen, um das aktuelle Verzeichnis<br />

zu verwenden, o<strong>der</strong> Durchsuchen, um einen neuen Berichtspeicherort zu<br />

finden. Das Standardverzeichnis ist /var/log/apparmor/<br />

reports-archived/.<br />

4 Um alle Berichte im Archiv anzuzeigen, wählen Sie Alle anzeigen. Um einen<br />

bestimmten Bericht anzuzeigen, wählen Sie eine <strong>der</strong> Berichtdateien im Feld<br />

Bericht aus und klicken Sie auf Anzeigen.<br />

5 Fahren Sie für Anwendungsprüfbericht und Zusammenfassung <strong>der</strong> Ausführungssicherheit<br />

<strong>mit</strong> Schritt 9 (S. 92) fort.<br />

6 Das Dialogfeld Berichtkonfiguration wird für Sicherheitsereignisberichte<br />

geöffnet.<br />

7 Im Dialogfeld Berichtkonfiguration können Sie die im vorherigen Bildschirm<br />

ausgewählten Berichte filtern. Geben Sie die gewünschten Filterdetails ein. Folgende<br />

Fel<strong>der</strong> stehen zur Verfügung:<br />

90 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Zeitspanne<br />

Um Berichte für eine bestimmte Zeitspanne anzuzeigen, wählen Sie Nach<br />

Zeitspanne filtern. Geben Sie das Start- und das Enddatum ein, um den<br />

Berichtumfang zu definieren.<br />

Programmname<br />

Wenn Sie einen Programmnamen o<strong>der</strong> ein Muster eingeben, das <strong>mit</strong> dem<br />

Namen <strong>der</strong> ausführbaren Binärdatei des relevanten Programms übereinstimmt,<br />

werden im Bericht Sicherheitsereignisse angezeigt, die für ein spezielles<br />

Programm aufgetreten sind.<br />

Pr<strong>of</strong>ilname<br />

Wenn Sie den Namen des Pr<strong>of</strong>ils eingeben, werden im Bericht die für das<br />

angegebene Pr<strong>of</strong>il generierten Sicherheitsereignisse angezeigt. Hier<strong>mit</strong><br />

können Sie die Einschränkungen eines speziellen Pr<strong>of</strong>ils er<strong>mit</strong>teln.<br />

PID-Nummer<br />

Bei <strong>der</strong> PID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein spezieller<br />

Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird (diese<br />

Nummer ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Schweregrad<br />

Wählen Sie den geringsten Schweregrad für Sicherheitsereignisse aus, die<br />

in den Bericht aufgenommen werden sollen. Der ausgewählte Schweregrad<br />

und alle darüber liegenden werden in die Berichte aufgenommen.<br />

Detail<br />

Eine Quelle, für die dem Pr<strong>of</strong>il <strong>der</strong> Zugriff verweigert wurde. Dies umfasst<br />

Funktionen und Dateien. Mit diesem Feld können Sie die Ressourcen im<br />

Bericht erfassen, auf die Pr<strong>of</strong>ile den Zugriff verhin<strong>der</strong>n.<br />

Zugriffstyp<br />

Der Zugriffstyp gibt an, wie tatsächlich <strong>mit</strong> dem Sicherheitsereignis verfahren<br />

wird. Wählen Sie eine <strong>der</strong> folgenden Optionen: ZULASSEN, ABLEHNEN<br />

o<strong>der</strong> PRÜFEN.<br />

Modus<br />

Der Modus ist die Berechtigung, die das Pr<strong>of</strong>il dem Programm o<strong>der</strong> dem<br />

Prozess erteilt, auf das bzw. den es angewendet wird. Wählen Sie eine <strong>der</strong><br />

folgenden Optionen: r (lesen) w (schreiben) l (Link erstellen) x (ausführen).<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 91


Exporttyp<br />

Hier<strong>mit</strong> können Sie eine CSV- o<strong>der</strong> eine HTML-Datei exportieren. In <strong>der</strong><br />

CSV-Datei werden Datenabschnitte in den Protokolleinträgen durch Kommas<br />

getrennt, um sie in Tabellenkalkulationsprogramme importieren zu können.<br />

Sie können einen Pfadnamen für den exportierten Bericht angeben, indem<br />

Sie den vollständigen Pfadnamen in das dafür vorgesehene Feld eingeben.<br />

Speicherort für das Protokoll<br />

Hier<strong>mit</strong> können Sie den Speicherort än<strong>der</strong>n, an dem <strong>der</strong> exportierte Bericht<br />

abgelegt wird. Der Standardspeicherort ist /var/log/apparmor/<br />

reports-exported. Wenn Sie diesen Speicherort än<strong>der</strong>n, wählen Sie<br />

Übernehmen. Wählen Sie Durchsuchen, um das Dateisystem zu durchsuchen.<br />

8 Zur Anzeige des Berichts in <strong>der</strong> gewünschten Filterung wählen Sie Weiter. Einer<br />

<strong>der</strong> drei Berichte wird angezeigt.<br />

9 In den folgenden Abschnitten finden Sie ausführliche Informationen zu jedem<br />

Berichttyp.<br />

• Informationen über den Anwendungsprüfbericht finden Sie unter „Anwendungsprüfbericht“<br />

(S. 92).<br />

• Informationen über den Sicherheitsereignisbericht finden Sie unter „Sicherheitsereignisbericht“<br />

(S. 94).<br />

• Informationen über den Zusammenfassungsbericht <strong>der</strong> Ausführungssicherheit<br />

finden Sie unter „Zusammenfassung <strong>der</strong> Ausführungssicherheit“ (S. 96).<br />

Anwendungsprüfbericht<br />

Ein Prüfwerkzeug für Berichte zu den laufenden Anwendungsservern und zu den durch<br />

<strong>AppArmor</strong> beschränkten Anwendungen. Anwendungsserver sind Anwendungen, die<br />

eingehende Netzwerkverbindungen annehmen. In diesem Bericht werden die IP-<br />

Adresse des Hostcomputers, das Datum, an dem <strong>der</strong> Anwendungsprüfbericht ausgeführt<br />

wurde, <strong>der</strong> Name und <strong>der</strong> Pfad des uneingeschränkten Programms o<strong>der</strong> Anwendungsservers,<br />

das vorgeschlagene Pr<strong>of</strong>il o<strong>der</strong> ein Platzhalter für ein Pr<strong>of</strong>il eines uneingeschränkten<br />

Programms, die Prozess-ID-Nummer, <strong>der</strong> Status des Programms (eingeschränkt<br />

o<strong>der</strong> uneingeschränkt) und <strong>der</strong> Typ <strong>der</strong> Beschränkung angegeben, die das<br />

Pr<strong>of</strong>il ausführt (erzwingen o<strong>der</strong> melden).<br />

92 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Das folgende Fenster stellt einen Anwendungsprüfbericht dar:<br />

Im Folgenden handelt es sich um Definitionen für die Fel<strong>der</strong> im Anwendungsprüfbericht:<br />

Host<br />

Der durch <strong>AppArmor</strong> geschützte Rechner, über den die Sicherheitsereignisse berichtet<br />

werden.<br />

Datum<br />

Das Datum, an dem Sicherheitsereignisse aufgetreten sind.<br />

Programm<br />

Der Name des laufenden Prozesses.<br />

Pr<strong>of</strong>il<br />

Der absolute Name des Sicherheitspr<strong>of</strong>ils, das auf den Prozess angewendet wird.<br />

PID<br />

Bei <strong>der</strong> Prozess-ID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein spezieller<br />

Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird (diese Nummer<br />

ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 93


Status<br />

Dieses Feld gibt an, ob das im Programmfeld aufgeführte Programm eingeschränkt<br />

ist. Wenn es nicht eingeschränkt ist, sollten Sie erwägen, ein Pr<strong>of</strong>il dafür zu<br />

erstellen.<br />

Typ<br />

Dieses Feld zeigt den Einschränkungstyp an, den das Sicherheitsereignis repräsentiert.<br />

Dieser lautet entwe<strong>der</strong> "melden" o<strong>der</strong> "erzwingen". Wenn die Anwendung<br />

nicht eingeschränkt ist (Status), wird kein Einschränkungstyp <strong>mit</strong>geteilt.<br />

Sicherheitsereignisbericht<br />

Ein Bericht, in dem die relevanten Sicherheitsereignisse für einen Administrator angezeigt<br />

werden. Im SIR werden die Richtlinienverstöße für lokal beschränkte Anwendungen<br />

in einem bestimmten Zeitraum angegeben. Im SIR werden Richtlinienausnahmen<br />

und Statusän<strong>der</strong>ungen <strong>der</strong> Richtlinien-Engine angegeben. Diese beiden Arten <strong>von</strong><br />

Sicherheitsereignissen werden wie folgt definiert:<br />

Richtlinienausnahmen<br />

Wenn eine Anwendung eine Ressource anfor<strong>der</strong>t, die in ihrem Pr<strong>of</strong>il nicht definiert<br />

ist, wird ein Sicherheitsereignis ausgelöst. Ein Bericht wird generiert, in dem die<br />

relevanten Sicherheitsereignisse für einen Administrator angezeigt werden. Im SIR<br />

werden die Richtlinienverstöße für lokal beschränkte Anwendungen in einem<br />

bestimmten Zeitraum angegeben. Im SIR werden Richtlinienausnahmen und Statusän<strong>der</strong>ungen<br />

<strong>der</strong> Richtlinien-Engine angegeben.<br />

Statusän<strong>der</strong>ungen <strong>der</strong> Richtlinien-Engine<br />

Erzwingt die Richtlinie für Anwendungen und zeichnet den Zustand auf, beispielsweise<br />

das Starten o<strong>der</strong> Anhalten <strong>von</strong> Engines, das Neuladen einer Richtlinie o<strong>der</strong><br />

das Aktivieren o<strong>der</strong> Deaktivieren einer globalen Sicherheitsfunktion.<br />

94 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Das folgende Fenster stellt einen SIR-Bericht dar:<br />

Im Folgenden handelt es sich um Definitionen für die Fel<strong>der</strong> im SIR-Bericht:<br />

Host<br />

Der durch <strong>AppArmor</strong> geschützte Rechner, über den die Sicherheitsereignisse berichtet<br />

werden.<br />

Datum<br />

Das Datum, an dem Sicherheitsereignisse aufgetreten sind.<br />

Programm<br />

Der Name des laufenden Prozesses.<br />

Pr<strong>of</strong>il<br />

Der absolute Name des Sicherheitspr<strong>of</strong>ils, das auf den Prozess angewendet wird.<br />

PID<br />

Bei <strong>der</strong> Prozess-ID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein spezieller<br />

Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird (diese Nummer<br />

ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 95


Schweregrad<br />

Schweregrade <strong>von</strong> Ereignissen werden aus <strong>der</strong> severity-Datenbank <strong>mit</strong>geteilt. Die<br />

severity-Datenbank definiert die Wichtigkeit <strong>von</strong> potenziellen Sicherheitsereignissen<br />

und nummeriert diese <strong>von</strong> eins bis zehn, wobei zehn das Sicherheitsereignis <strong>mit</strong><br />

dem größten Schweregrad angibt. Die Schweregrade werden durch die Bedrohung<br />

o<strong>der</strong> Wichtigkeit <strong>von</strong> verschiedenen Sicherheitsereignissen bestimmt, z. B.<br />

bestimmte Ressourcen, auf die zugegriffen wird, o<strong>der</strong> abgelehnte Dienste.<br />

Modus<br />

Der Modus ist die Berechtigung, die das Pr<strong>of</strong>il dem Programm o<strong>der</strong> dem Prozess<br />

erteilt, auf das bzw. den es angewendet wird. Die Optionen sind r (lesen), w<br />

(schreiben), l (Link erstellen) und x (ausführen).<br />

Detail<br />

Eine Quelle, auf die das Pr<strong>of</strong>il den Zugriff verweigert hat. Dies umfasst Funktionen<br />

und Dateien. Mit diesem Feld können Sie die Ressourcen im Bericht erfassen, auf<br />

die das Pr<strong>of</strong>il den Zugriff verhin<strong>der</strong>t.<br />

Zugriffstyp<br />

Der Zugriffstyp gibt an, wie tatsächlich <strong>mit</strong> dem Sicherheitsereignis verfahren wird.<br />

Die Optionen sind ZULASSEN, ABLEHNEN o<strong>der</strong> PRÜFEN.<br />

Zusammenfassung <strong>der</strong> Ausführungssicherheit<br />

Ein aus einem o<strong>der</strong> mehreren Sicherheitsereignisberichten hoher Stufe bestehen<strong>der</strong><br />

kombinierter Bericht für einen o<strong>der</strong> mehrere Computer. Dieser Bericht bietet eine Einzelansicht<br />

<strong>der</strong> Sicherheitsereignisse auf mehreren Computern, s<strong>of</strong>ern die Daten aller<br />

Computer in das Archivverzeichnis für Berichte, /var/ log/apparmor/<br />

reports-archived, kopiert werden. In diesem Bericht werden die IP-Adresse des<br />

Hostcomputers, Start- und Enddatum <strong>der</strong> abgefragten Ereignisse, die Gesamtanzahl<br />

<strong>der</strong> Ablehnungen, die Gesamtanzahl <strong>der</strong> Ereignisse, <strong>der</strong> durchschnittliche Schweregrad<br />

<strong>der</strong> Meldungen und <strong>der</strong> höchste Schweregrad angegeben. Eine Zeile des ESS-Berichts<br />

stellt einen Bereich <strong>von</strong> SIR-Berichten dar.<br />

96 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Das folgende Fenster stellt einen Zusammenfassungsbericht <strong>der</strong> Ausführungssicherheit<br />

dar:<br />

Im Folgenden handelt es sich um Definitionen für die Fel<strong>der</strong> im Zusammenfassungsbericht<br />

<strong>der</strong> Ausführungssicherheit:<br />

Host<br />

Der durch <strong>AppArmor</strong> geschützte Rechner, über den die Sicherheitsereignisse<br />

berichtet werden.<br />

Startdatum<br />

Das erste Datum in einem Datumsbereich, für den Sicherheitsereignisse berichtet<br />

werden.<br />

Enddatum<br />

Das letzte Datum in einem Datumsbereich, für den Sicherheitsereignisse berichtet<br />

werden.<br />

Anzahl <strong>der</strong> Ablehnungen<br />

Im angegebenen Datumsbereich die Gesamtanzahl an Sicherheitsereignissen, die<br />

abgelehnte Zugriffsversuche darstellen.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 97


Anzahl <strong>der</strong> Ereignisse<br />

Im angegebenen Datumsbereich die Gesamtanzahl an Sicherheitsereignissen.<br />

Avg Severity (Durchschnittlicher Schweregrad)<br />

Dies ist <strong>der</strong> Durchschnitt <strong>der</strong> Schweregrade, die im angegebenen Datumsbereich<br />

gemeldet wurden. Unbekannte Schweregrade werden in dieser Zahl nicht berücksichtigt.<br />

High Severity (Hoher Schweregrad)<br />

Dies ist <strong>der</strong> höchste Schweregrad, <strong>der</strong> im angegebenen Datumsbereich gemeldet<br />

wurde.<br />

4.3.2 Jetzt ausführen: Ausführen <strong>von</strong><br />

On-Demand-Berichten<br />

Die Berichtfunktion Jetzt ausführen ermöglicht Ihnen, s<strong>of</strong>ort Berichtinformationen aus<br />

den <strong>Novell</strong> <strong>AppArmor</strong>-Ereignisprotokollen zu extrahieren, ohne geplante Ereignisse<br />

abzuwarten. Kehren Sie an den Beginn dieses Abschnitts zurück, wenn Sie Hilfe zur<br />

Navigation im Bericht-Hauptfenster benötigen (siehe Abschnitt 4.3, „Berichte“ (S. 86)).<br />

Führen Sie die folgenden Schritte aus, um einen Bericht aus <strong>der</strong> Berichtliste auszuführen:<br />

1 Wählen Sie den Bericht, den Sie s<strong>of</strong>ort ausführen möchten, aus <strong>der</strong> Berichtliste<br />

im Fenster Berichte planen.<br />

2 Wählen Sie Jetzt ausführen o<strong>der</strong> Weiter. Das nächste Fenster hängt da<strong>von</strong> ab,<br />

welchen Bericht Sie im vorherigen Schritt gewählt haben. Fahren Sie für<br />

Anwendungsprüfbericht und Zusammenfassung <strong>der</strong> Ausführungssicherheit <strong>mit</strong><br />

Schritt 6 (S. 100) fort.<br />

3 Das Dialogfeld Berichtkonfiguration wird für Sicherheitsereignisberichte angezeigt.<br />

98 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


4 Im Dialogfeld Berichtkonfiguration können Sie die im vorherigen Fenster ausgewählten<br />

Berichte filtern. Geben Sie die gewünschten Filterdetails ein. Die folgenden<br />

Filteroptionen stehen zur Verfügung:<br />

Zeitspanne<br />

Um Berichte auf eine bestimmte Zeitspanne zu begrenzen, wählen Sie Nach<br />

Zeitspanne filtern. Geben Sie das Start- und das Enddatum ein, um den<br />

Berichtumfang zu bestimmen.<br />

Programmname<br />

Wenn Sie einen Programmnamen o<strong>der</strong> ein Muster eingeben, das <strong>mit</strong> dem<br />

Namen <strong>der</strong> ausführbaren Binärdatei des relevanten Programms übereinstimmt,<br />

werden im Bericht nur Sicherheitsereignisse angezeigt, die für das angegebene<br />

Programm aufgetreten sind.<br />

Pr<strong>of</strong>ilname<br />

Wenn Sie den Namen des Pr<strong>of</strong>ils eingeben, werden im Bericht die für das<br />

angegebene Pr<strong>of</strong>il generierten Sicherheitsereignisse angezeigt. Hier<strong>mit</strong><br />

können Sie die Einschränkungen eines speziellen Pr<strong>of</strong>ils er<strong>mit</strong>teln.<br />

PID-Nummer<br />

Bei <strong>der</strong> Prozess-ID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein<br />

spezieller Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird<br />

(diese Nummer ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 99


Schweregrad<br />

Wählen Sie den geringsten Schweregrad für Sicherheitsereignisse aus, die<br />

in den Bericht aufgenommen werden sollen. Der ausgewählte Schweregrad<br />

und alle darüber liegenden werden in die Berichte aufgenommen.<br />

Detail<br />

Eine Quelle, für die dem Pr<strong>of</strong>il <strong>der</strong> Zugriff verweigert wurde. Dies umfasst<br />

Funktionen und Dateien. Mit diesem Feld können Sie die Ressourcen im<br />

Bericht erfassen, auf die Pr<strong>of</strong>ile den Zugriff verhin<strong>der</strong>n.<br />

Zugriffstyp<br />

Der Zugriffstyp gibt an, wie tatsächlich <strong>mit</strong> dem Sicherheitsereignis verfahren<br />

wird. Die Optionen sind ZULASSEN, ABLEHNEN o<strong>der</strong> PRÜFEN.<br />

Modus<br />

Der Modus ist die Berechtigung, die das Pr<strong>of</strong>il dem Programm o<strong>der</strong> dem<br />

Prozess erteilt, auf das bzw. den es angewendet wird. Die Optionen sind r<br />

(lesen), w (schreiben), l (Link erstellen) und x (ausführen).<br />

Exporttyp<br />

Hier<strong>mit</strong> können Sie eine CSV- o<strong>der</strong> eine HTML-Datei exportieren. In <strong>der</strong><br />

CSV-Datei werden Datenabschnitte in den Protokolleinträgen durch Kommas<br />

getrennt, um sie in Tabellenkalkulationsprogramme importieren zu können.<br />

Sie können einen Pfadnamen für den exportierten Bericht angeben, indem<br />

Sie den vollständigen Pfadnamen in das dafür vorgesehene Feld eingeben.<br />

Speicherort für das Protokoll<br />

Hier<strong>mit</strong> können Sie den Speicherort än<strong>der</strong>n, an dem <strong>der</strong> exportierte Bericht<br />

abgelegt wird. Der Standardspeicherort ist /var/log/apparmor/<br />

reports-exported. Wenn Sie diesen Speicherort än<strong>der</strong>n, wählen Sie<br />

Übernehmen. Wählen Sie Durchsuchen, um das Dateisystem zu durchsuchen.<br />

5 Zur Anzeige des Berichts in <strong>der</strong> gewünschten Filterung wählen Sie Weiter. Einer<br />

<strong>der</strong> drei Berichte wird angezeigt.<br />

6 In den folgenden Abschnitten finden Sie ausführliche Informationen zu jedem<br />

Berichttyp.<br />

• Informationen über den Anwendungsprüfbericht finden Sie unter „Anwendungsprüfbericht“<br />

(S. 92).<br />

100 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• Informationen über den Sicherheitsereignisbericht finden Sie unter „Sicherheitsereignisbericht“<br />

(S. 94).<br />

• Informationen über den Zusammenfassungsbericht <strong>der</strong> Ausführungssicherheit<br />

finden Sie unter „Zusammenfassung <strong>der</strong> Ausführungssicherheit“ (S. 96).<br />

4.3.3 Hinzufügen <strong>von</strong> neuen Berichten<br />

Durch das Hinzufügen neuer Berichte können Sie einen geplanten Sicherheitsereignisbericht<br />

erstellen, <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsereignisse gemäß Ihren voreingestellten<br />

Filtern anzeigt. Wenn ein Bericht in Berichte planen eingerichtet wird, wird<br />

regelmäßig ein Bericht <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-Sicherheitsereignissen gestartet, die im<br />

System aufgetreten sind.<br />

Sie können einen täglichen, wöchentlichen, monatlichen o<strong>der</strong> stündlichen Bericht<br />

konfigurieren, <strong>der</strong> in einer angegebenen Zeitspanne ausgeführt wird. Sie können den<br />

Bericht so einstellen, dass er Ablehnungen für bestimmte Sicherheitsstufen zeigt o<strong>der</strong><br />

nach Programmname, Pr<strong>of</strong>ilname, Schweregrad o<strong>der</strong> verweigerten Ressourcen filtert.<br />

Dieser Bericht kann in ein HTML (Hypertext Markup Language)- o<strong>der</strong> CSV (Comma<br />

Separated Values)- Dateiformat exportiert werden.<br />

ANMERKUNG<br />

Kehren Sie an den Beginn dieses Abschnitts zurück, wenn Sie Hilfe zur Navigation<br />

im Bericht-Hauptfenster benötigen (siehe Abschnitt 4.3, „Berichte“ (S. 86)).<br />

Zum Hinzufügen eines neuen geplanten Sicherheitsereignisberichts gehen Sie wie folgt<br />

vor:<br />

1 Klicken Sie auf Add (Hinzufügen), um einen neuen Sicherheitsereignisbericht<br />

zu erstellen. Die erste Seite <strong>von</strong> Add Scheduled SIR (Geplanten SIR hinzufügen)<br />

wird geöffnet.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 101


2 Füllen Sie die Fel<strong>der</strong> wie erfor<strong>der</strong>lich <strong>mit</strong> den folgenden Filterinformationen aus:<br />

Berichtname<br />

Geben Sie den Namen des Berichts an. Verwenden Sie Namen, die einen<br />

Bericht deutlich vom nächsten unterscheiden.<br />

Tag des Monats<br />

Wählen Sie einen beliebigen Tag des Monats, um monatliche Filterung in<br />

Berichten zu aktivieren. Wenn Sie Alle wählen, wird keine monatliche<br />

Filterung ausgeführt.<br />

Wochentag<br />

Wählen Sie nach Wunsch den Wochentag, an dem wöchentliche Berichte<br />

geplant sind. Wenn Sie ALLE wählen, wird keine wöchentliche Filterung<br />

ausgeführt. Falls monatliche Filterung ausgewählt ist, übernimmt dieses Feld<br />

standardmäßig den Eintrag ALLE.<br />

Stunde und Minute<br />

Wählen Sie die Zeit aus. Dies gibt die Stunde und Minute an, zu denen die<br />

Berichte ausgeführt werden sollen. Wenn Sie die Uhrzeit nicht än<strong>der</strong>n,<br />

werden ausgewählte Berichte um Mitternacht ausgeführt. Wenn we<strong>der</strong> Monat<br />

noch Wochentag gewählt sind, wird <strong>der</strong> Bericht täglich zum angegebenen<br />

Zeitpunkt ausgeführt.<br />

102 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


E-Mail Target (E-Mail-Empfänger)<br />

Sie haben die Möglichkeit, den geplanten Sicherheitsereignisbericht per E-<br />

Mail an bis zu drei Empfänger zu senden. Geben Sie einfach die E-Mail-<br />

Adressen <strong>der</strong> Personen ein, die die Sicherheitsereignisinformationen benötigen.<br />

Exporttyp<br />

Mithilfe dieser Option können Sie eine CSV- o<strong>der</strong> eine HTML-Datei<br />

exportieren. In <strong>der</strong> CSV-Datei werden Datenabschnitte in den Protokolleinträgen<br />

durch Kommas getrennt, um sie in Tabellenkalkulationsprogramme<br />

importieren zu können. Sie können einen Pfadnamen für den exportierten<br />

Bericht angeben, indem Sie den vollständigen Pfadnamen in das dafür vorgesehene<br />

Feld eingeben.<br />

Speicherort für das Protokoll<br />

Hier<strong>mit</strong> können Sie den Speicherort än<strong>der</strong>n, an dem <strong>der</strong> exportierte Bericht<br />

abgelegt wird. Der Standardspeicherort ist /var/log/apparmor/<br />

reports-exported. Wenn Sie diesen Speicherort än<strong>der</strong>n, wählen Sie<br />

Übernehmen. Wählen Sie Durchsuchen, um das Dateisystem zu durchsuchen.<br />

3 Mit Weiter wechseln Sie zur zweiten Seite <strong>von</strong> Add Scheduled SIR (Geplanten<br />

SIR hinzufügen).<br />

4 Füllen Sie die Fel<strong>der</strong> wie erfor<strong>der</strong>lich <strong>mit</strong> den folgenden Filterinformationen aus:<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 103


Programmname<br />

Sie können einen Programmnamen o<strong>der</strong> ein Muster angeben, das <strong>mit</strong> dem<br />

Namen <strong>der</strong> ausführbaren Binärdatei des relevanten Programms übereinstimmt.<br />

Der Bericht zeigt nur Sicherheitsereignisse an, die für das angegebene Programm<br />

aufgetreten sind.<br />

Pr<strong>of</strong>ilname<br />

Sie können den Namen des Pr<strong>of</strong>ils eingeben, für das <strong>der</strong> Bericht Sicherheitsereignisse<br />

anzeigen soll. Hier<strong>mit</strong> können Sie die Einschränkungen eines<br />

speziellen Pr<strong>of</strong>ils er<strong>mit</strong>teln.<br />

PID-Nummer<br />

Bei <strong>der</strong> Prozess-ID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein<br />

spezieller Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird<br />

(diese Nummer ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Detail<br />

Eine Quelle, für die dem Pr<strong>of</strong>il <strong>der</strong> Zugriff verweigert wurde. Dies umfasst<br />

Funktionen und Dateien. Mit diesem Feld können Sie einen Bericht <strong>mit</strong><br />

Ressourcen erstellen, auf die Pr<strong>of</strong>ile den Zugriff verhin<strong>der</strong>n.<br />

Schweregrad<br />

Wählen Sie den geringsten Schweregrad für Sicherheitsereignisse aus, die<br />

in den Bericht aufgenommen werden sollen. Der ausgewählte Schweregrad<br />

und alle darüber liegenden werden in die Berichte aufgenommen.<br />

Zugriffstyp<br />

Der Zugriffstyp gibt an, wie tatsächlich <strong>mit</strong> dem Sicherheitsereignis verfahren<br />

wird. Die Optionen sind ZULASSEN, ABLEHNEN o<strong>der</strong> PRÜFEN.<br />

Modus<br />

Der Modus ist die Berechtigung, die das Pr<strong>of</strong>il dem Programm o<strong>der</strong> dem<br />

Prozess erteilt, auf das bzw. den es angewendet wird. Die Optionen sind r<br />

(lesen), w (schreiben), l (Link erstellen) und x (ausführen).<br />

5 Klicken Sie auf Speichern, um diesen Bericht zu speichern. <strong>Novell</strong> <strong>AppArmor</strong><br />

kehrt in das Hauptfenster Scheduled Reports (Geplante Berichte) zurück. Dort<br />

wird <strong>der</strong> neu geplante Bericht in <strong>der</strong> Liste <strong>der</strong> Berichte angezeigt.<br />

104 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


4.<strong>3.4</strong> Bearbeiten <strong>von</strong> Berichten<br />

Im Fenster Berichte <strong>von</strong> <strong>AppArmor</strong> können Sie einen Bericht auswählen und bearbeiten.<br />

Die Bestandsberichte können nicht bearbeitet o<strong>der</strong> gelöscht werden.<br />

ANMERKUNG<br />

Kehren Sie an den Beginn dieses Abschnitts zurück, wenn Sie Hilfe zur Navigation<br />

im Bericht-Hauptfenster benötigen (siehe Abschnitt 4.3, „Berichte“ (S. 86)).<br />

Führen Sie die folgenden Schritte aus, um einen Bericht aus <strong>der</strong> Berichtliste auszuführen:<br />

1 Wählen Sie den Bericht, den Sie bearbeiten möchten, aus <strong>der</strong> Berichtliste im<br />

Fenster Berichte planen.<br />

2 Klicken Sie auf Bearbeiten, um den Sicherheitsereignisbericht zu bearbeiten.<br />

Die erste Seite <strong>von</strong> Edit Scheduled SIR (Geplanten SIR bearbeiten) wird geöffnet.<br />

3 Geben Sie wie erfor<strong>der</strong>lich die folgenden Filterinformationen ein:<br />

Tag des Monats<br />

Wählen Sie einen beliebigen Tag des Monats, um monatliche Filterung in<br />

Berichten zu aktivieren. Wenn Sie Alle wählen, wird keine monatliche<br />

Filterung ausgeführt.<br />

Wochentag<br />

Wählen Sie den Wochentag, an dem wöchentliche Berichte geplant sind.<br />

Wenn Sie Alle wählen, wird keine wöchentliche Filterung ausgeführt. Falls<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 105


ein monatlicher Bericht ausgewählt ist, zeigt dieses Feld standardmäßig den<br />

Eintrag Alle.<br />

Stunde und Minute<br />

Wählen Sie die Zeit aus. Dies gibt die Stunde und Minute an, zu denen die<br />

Berichte ausgeführt werden sollen. Wenn Sie die Uhrzeit nicht än<strong>der</strong>n,<br />

werden ausgewählte Berichte um Mitternacht ausgeführt. Wenn we<strong>der</strong> <strong>der</strong><br />

Tag des Monats noch ein Wochentag ausgewählt ist, wird <strong>der</strong> Bericht täglich<br />

zum angegebenen Zeitpunkt ausgeführt.<br />

E-Mail Target (E-Mail-Empfänger)<br />

Sie haben die Möglichkeit, den geplanten Sicherheitsereignisbericht per E-<br />

Mail an bis zu drei Empfänger zu senden. Geben Sie einfach die E-Mail-<br />

Adressen <strong>der</strong> Personen ein, die die Sicherheitsereignisinformationen benötigen.<br />

Exporttyp<br />

Mithilfe dieser Option können Sie eine CSV- o<strong>der</strong> eine HTML-Datei<br />

exportieren. In <strong>der</strong> CSV-Datei werden Datenabschnitte in den Protokolleinträgen<br />

durch Kommas getrennt, um sie in Tabellenkalkulationsprogramme<br />

importieren zu können. Sie können einen Pfadnamen für den exportierten<br />

Bericht angeben, indem Sie den vollständigen Pfadnamen in das dafür vorgesehene<br />

Feld eingeben.<br />

Speicherort für das Protokoll<br />

Hier<strong>mit</strong> können Sie den Speicherort än<strong>der</strong>n, an dem <strong>der</strong> exportierte Bericht<br />

abgelegt wird. Der Standardspeicherort ist /var/log/apparmor/<br />

reports-exported. Wenn Sie diesen Speicherort än<strong>der</strong>n, wählen Sie<br />

Übernehmen. Wählen Sie Durchsuchen, um das Dateisystem zu durchsuchen.<br />

4 Mit Weiter wechseln Sie zur nächsten Seite <strong>von</strong> Edit Scheduled SIR (Geplanten<br />

SIR bearbeiten). Die zweite Seite <strong>von</strong> Edit Scheduled Reports (Geplanten SIR<br />

bearbeiten) wird geöffnet.<br />

106 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


5 Füllen Sie die Fel<strong>der</strong> wie erfor<strong>der</strong>lich <strong>mit</strong> den folgenden Filterinformationen aus:<br />

Programmname<br />

Sie können einen Programmnamen o<strong>der</strong> ein Muster angeben, das <strong>mit</strong> dem<br />

Namen <strong>der</strong> ausführbaren Binärdatei des relevanten Programms übereinstimmt.<br />

Der Bericht zeigt nur Sicherheitsereignisse an, die für das angegebene Programm<br />

aufgetreten sind.<br />

Pr<strong>of</strong>ilname<br />

Sie können den Namen des Pr<strong>of</strong>ils eingeben, für das Sicherheitsereignisse<br />

angezeigt werden sollen. Hier<strong>mit</strong> können Sie die Einschränkungen eines<br />

speziellen Pr<strong>of</strong>ils er<strong>mit</strong>teln.<br />

PID-Nummer<br />

Bei <strong>der</strong> Prozess-ID-Nummer handelt es sich um eine Nummer, <strong>mit</strong> <strong>der</strong> ein<br />

spezieller Prozess o<strong>der</strong> ein laufendes Programm eindeutig identifiziert wird<br />

(diese Nummer ist nur während <strong>der</strong> Lebensdauer des Prozesses gültig).<br />

Detail<br />

Eine Quelle, für die dem Pr<strong>of</strong>il <strong>der</strong> Zugriff verweigert wurde. Dies umfasst<br />

Funktionen und Dateien. Mit diesem Feld können Sie einen Bericht <strong>mit</strong><br />

Ressourcen erstellen, auf die Pr<strong>of</strong>ile den Zugriff verhin<strong>der</strong>n.<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 107


Schweregrad<br />

Wählen Sie den geringsten Schweregrad für Sicherheitsereignisse aus, die<br />

in den Bericht aufgenommen werden sollen. Der ausgewählte Schweregrad<br />

und alle darüber liegenden werden in die Berichte aufgenommen.<br />

Zugriffstyp<br />

Der Zugriffstyp gibt an, wie tatsächlich <strong>mit</strong> dem Sicherheitsereignis verfahren<br />

wird. Die Optionen sind ZULASSEN, ABLEHNEN o<strong>der</strong> PRÜFEN.<br />

Modus<br />

Der Modus ist die Berechtigung, die das Pr<strong>of</strong>il dem Programm o<strong>der</strong> dem<br />

Prozess erteilt, auf das bzw. den es angewendet wird. Die Optionen sind r<br />

(lesen), w (schreiben), l (Link erstellen) und x (ausführen).<br />

6 Wählen Sie Speichern, um die Än<strong>der</strong>ungen an diesem Bericht zu speichern.<br />

<strong>Novell</strong> <strong>AppArmor</strong> kehrt in das Hauptfenster Scheduled Reports (Geplante Berichte)<br />

zurück. Dort wird <strong>der</strong> geplante Bericht in <strong>der</strong> Liste <strong>der</strong> Berichte angezeigt.<br />

4.3.5 Löschen <strong>von</strong> Berichten<br />

Über Delete a Report (Bericht löschen) können Sie einen Bericht permanent aus <strong>der</strong><br />

Liste <strong>der</strong> geplanten <strong>Novell</strong> <strong>AppArmor</strong>-Berichte entfernen. Folgen Sie zum Löschen<br />

eines Berichts diesen Anleitungen:<br />

1 Um einen Bericht aus <strong>der</strong> Berichtliste zu entfernen, markieren Sie den Bericht<br />

und klicken Sie auf Löschen.<br />

2 Wählen Sie im Bestätigungsfenster Abbrechen, falls Sie den ausgewählten Bericht<br />

nicht löschen möchten. Wenn Sie sicher sind, dass Sie den Bericht permanent<br />

aus <strong>der</strong> Berichtliste entfernen möchten, wählen Sie Löschen.<br />

4.4 Reaktion auf Sicherheitsereignisse<br />

Es gibt ein paar übliche Wartungsvorfälle, die Sie regelmäßig prüfen und gemäß den<br />

Regeln, die Sie aufgestellt haben, bereinigen sollten. Einige übliche Wartungsvorfälle,<br />

die auftreten können:<br />

108 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• Abschnitt 4.4.1, „Empfang einer Sicherheitsereignisablehnung“ (S. 109).<br />

• Abschnitt 4.5.2, „Än<strong>der</strong>n Ihrer Sicherheitspr<strong>of</strong>ile“ (S. 110).<br />

4.4.1 Empfang einer<br />

Sicherheitsereignisablehnung<br />

Wenn Sie eine Ablehnung empfangen, prüfen Sie die Zugriffsverletzung und bestimmen<br />

Sie, ob das angegebene Ereignis eine Bedrohung darstellt o<strong>der</strong> Teil des normalen<br />

Anwendungsverhaltens war. Anwendungsspezifische Kenntnisse sind erfor<strong>der</strong>lich, um<br />

diese Entscheidung zu treffen. Wenn die Ablehnung normales Anwendungsverhalten<br />

darstellt, können Sie logpr<strong>of</strong> in <strong>der</strong> Befehlszeile o<strong>der</strong> den Assistenten zum Aktualisieren<br />

<strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> in <strong>Novell</strong> <strong>AppArmor</strong> ausführen, um durch alle Ablehnungsmeldungen zu<br />

blättern. Indem Sie die Meldung für die entsprechende Ablehnung auswählen, können<br />

Sie Ihr Pr<strong>of</strong>il automatisch aktualisieren.<br />

Wenn die Ablehnung nicht Teil des normalen Anwendungsverhaltens ist, sollte dieser<br />

Zugriff als möglicher Angriffsversuch (<strong>der</strong> verhin<strong>der</strong>t wurde) betrachtet werden und<br />

diese Benachrichtigung sollte an die verantwortliche Person für Sicherheit in Ihrer<br />

Organisation gesendet werden.<br />

4.4.2 Än<strong>der</strong>n <strong>der</strong> Anwendungssicherheit<br />

Benutzer können das Pr<strong>of</strong>il immer manuell bearbeiten, indem Sie vim in <strong>der</strong> Befehlszeile<br />

o<strong>der</strong> Pr<strong>of</strong>il bearbeiten in YaST verwenden.<br />

4.5 Pflegen Ihrer Sicherheitspr<strong>of</strong>ile<br />

In einer Produktionsumgebung sollten Sie die Pflege <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für alle eingesetzten<br />

Anwendungen einplanen. Die Sicherheitsrichtlinien sind ein integraler Teil Ihrer Ausstattung.<br />

Sie sollten Maßnahmen für Sicherung und Wie<strong>der</strong>herstellung <strong>von</strong> Sicherheitsrichtliniendateien,<br />

S<strong>of</strong>tware-Än<strong>der</strong>ungen und erfor<strong>der</strong>liche Modifizierung <strong>von</strong> Sicherheitsrichtlinien<br />

planen, die Ihre Umgebung for<strong>der</strong>t. Diese Punkte werden in den folgenden<br />

Abschnitten behandelt:<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 109


• Abschnitt 4.5.1, „Sichern Ihrer Sicherheitspr<strong>of</strong>ile“ (S. 110).<br />

• Abschnitt 4.5.2, „Än<strong>der</strong>n Ihrer Sicherheitspr<strong>of</strong>ile“ (S. 110).<br />

• Abschnitt 4.5.3, „Einführung neuer S<strong>of</strong>tware in Ihrer Umgebung“ (S. 111).<br />

4.5.1 Sichern Ihrer Sicherheitspr<strong>of</strong>ile<br />

Da Sie sich die Zeit nehmen, Pr<strong>of</strong>ile zu definieren, sollten Sie <strong>von</strong> diesen auch eine<br />

Sicherungskopie anlegen. Das Sichern <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> kann Ihnen die Neuerstellung <strong>von</strong><br />

<strong>Pr<strong>of</strong>ilen</strong> für alle Ihre Programme nach einem Plattenausfall ersparen. Außerdem können<br />

Sie nach Pr<strong>of</strong>ilän<strong>der</strong>ungen die vorherige Einstellungen aus den gesicherten Daten<br />

bequem wie<strong>der</strong>herstellen.<br />

Sichern Sie Pr<strong>of</strong>ile, indem Sie die Pr<strong>of</strong>ildateien in ein angegebenes Verzeichnis kopieren.<br />

1 Zunächst sollten Sie die Dateien in einer einzigen Datei archivieren. Öffnen Sie<br />

hierfür ein Terminalfenster und geben Sie als root Folgendes ein:<br />

tar zclpf pr<strong>of</strong>iles.tgz /etc/apparmor.d<br />

Am einfachsten sorgen Sie dafür, dass Ihre Sicherheitsrichtliniendateien regelmäßig<br />

gesichert werden, indem Sie das Verzeichnis/etc/apparmor.d in Ihre<br />

Liste <strong>von</strong> Verzeichnissen aufnehmen, die Ihr Sicherungssystem archiviert.<br />

2 Sie können auch scp o<strong>der</strong> einen Datei-Manager wie Konqueror o<strong>der</strong> Nautilus<br />

verwenden, um die Dateien auf einer Art <strong>von</strong> Speichermedium, im Netzwerk<br />

o<strong>der</strong> auf einem an<strong>der</strong>en Computer zu speichern.<br />

4.5.2 Än<strong>der</strong>n Ihrer Sicherheitspr<strong>of</strong>ile<br />

Die Wartung <strong>von</strong> Sicherheitspr<strong>of</strong>ilen umfasst das Än<strong>der</strong>n <strong>der</strong> Pr<strong>of</strong>ile, falls Sie entscheiden,<br />

dass Ihr System mehr o<strong>der</strong> weniger Sicherheit für seine Anwendungen benötigt.<br />

Wie Sie Pr<strong>of</strong>ile in <strong>Novell</strong> <strong>AppArmor</strong> än<strong>der</strong>n, erfahren Sie in Abschnitt 3.3.3, „Bearbeiten<br />

eines Pr<strong>of</strong>ils“ (S. 38).<br />

110 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


4.5.3 Einführung neuer S<strong>of</strong>tware in Ihrer<br />

Umgebung<br />

Wenn Sie Ihrem System eine neue Anwendungsversion o<strong>der</strong> einen Patch hinzufügen,<br />

sollten Sie stets das Pr<strong>of</strong>il Ihren Anfor<strong>der</strong>ungen entsprechend aktualisieren. Sie haben<br />

mehrere Optionen, die <strong>von</strong> <strong>der</strong> S<strong>of</strong>tware-Entwicklungsstrategie Ihres Unternehmens<br />

abhängen. Sie können Ihre Patches und Upgrades in einer Test- o<strong>der</strong> Produktionsumgebung<br />

einsetzen. Im Folgenden wird dies für jede Methode beschrieben.<br />

Wenn Sie einen Patch o<strong>der</strong> ein Upgrade in einer Testumgebung installieren möchten,<br />

aktualisieren Sie Ihre Pr<strong>of</strong>ile am besten auf eine <strong>der</strong> folgenden Arten:<br />

• Führen Sie den Assistenten zum Hinzufügen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> in YaST aus. Dadurch<br />

werden Ihre Anwendungspr<strong>of</strong>ile <strong>mit</strong> minimalem Aufwand <strong>mit</strong> den aktuellen Produktionen<br />

aktualisiert. Schrittweise Anleitungen finden Sie unter Abschnitt 3.3.1,<br />

„Hinzufügen eines Pr<strong>of</strong>ils <strong>mit</strong> dem Assistenten“ (S. 26).<br />

• Führen Sie genpr<strong>of</strong> aus, indem Sie genpr<strong>of</strong> in ein Terminalfenster eingeben,<br />

während Sie als root angemeldet sind. Detaillierte Anleitungen finden Sie unter<br />

„genpr<strong>of</strong>“ (S. 61).<br />

Wenn Sie einen Patch o<strong>der</strong> ein Upgrade direkt in einer Produktionsumgebung einsetzen<br />

möchten, aktualisieren Sie Ihre Pr<strong>of</strong>ile am besten auf eine <strong>der</strong> folgenden Arten:<br />

• Überwachen Sie das System häufig, um zu er<strong>mit</strong>teln, ob dem Pr<strong>of</strong>il neue Ablehnungen<br />

hinzugefügt werden sollten, und aktualisieren Sie es bei Bedarf <strong>mit</strong>hilfe <strong>von</strong><br />

logpr<strong>of</strong>. Detaillierte Anleitungen finden Sie unter „logpr<strong>of</strong>“ (S. 67).<br />

• Führen Sie die Pr<strong>of</strong>ilerstellungswerkzeuge aus, um das neue Verhalten zu lernen<br />

(hohes Sicherheitsrisiko, da alle Zugriffe erlaubt und protokolliert werden und kein<br />

Zugriff abgelehnt wird). Schrittweise Anleitungen finden Sie unter Abschnitt 3.3.5,<br />

„Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> aus den Syslog-Einträgen“ (S. 41).<br />

Verwalten <strong>von</strong> Anwendungen <strong>mit</strong> <strong>Pr<strong>of</strong>ilen</strong> 111


<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre<br />

Webanwendungen <strong>mit</strong> ChangeHat<br />

Apache<br />

Ein <strong>Novell</strong>® <strong>AppArmor</strong>-Pr<strong>of</strong>il repräsentiert Sicherheitsrichtlinien für eine einzelne<br />

Programminstanz o<strong>der</strong> einen Prozess. Es gilt für ein ausführbares Programm. Wenn<br />

aber ein Teil des Programms abweichende Zugriffsberechtigungen benötigt, kann das<br />

Programm den „Hat wechseln“, um einen an<strong>der</strong>en Sicherheitskontext zu verwenden,<br />

<strong>der</strong> sich vom Zugriff auf das Hauptprogramm unterscheidet. Dies wird als Hat o<strong>der</strong><br />

Unterpr<strong>of</strong>il bezeichnet.<br />

ChangeHat ermöglicht Programmen, innerhalb eines <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ils <strong>von</strong><br />

o<strong>der</strong> zu einem Hat zu wechseln. Es gibt Ihnen die Möglichkeit, Sicherheit in feineren<br />

Abstufungen als dem Prozess zu definieren.<br />

Diese Funktion setzt voraus, dass „Changehat“ je<strong>der</strong> Anwendung "bekannt" ist, d. h.,<br />

die Anwendung wird so geän<strong>der</strong>t, dass sie eine Anfor<strong>der</strong>ung an das <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Modul sendet, zu beliebigen Zeitpunkten während <strong>der</strong> Anwendungsausführung die<br />

Sicherheitsdomäne zu wechseln.<br />

Ein Pr<strong>of</strong>il kann eine beliebige Anzahl an Unterpr<strong>of</strong>ilen enthalten, aber es gibt nur zwei<br />

Ebenen: Ein Unterpr<strong>of</strong>il kann keine weiteren Unterpr<strong>of</strong>ile besitzen. Ein Unterpr<strong>of</strong>il<br />

wird als separates Pr<strong>of</strong>il geschrieben und erhält denselben Namen wie das übergeordnete<br />

Pr<strong>of</strong>il, gefolgt <strong>von</strong> einem ^ und dann dem Unterpr<strong>of</strong>ilnamen. Unterpr<strong>of</strong>ile müssen<br />

in <strong>der</strong>selben Datei gespeichert werden wie ihr übergeordnetes Pr<strong>of</strong>il.<br />

ANMERKUNG<br />

Weitere Informationen finden Sie auf <strong>der</strong> Manualpage change_hat.<br />

5<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 113


5.1 Apache ChangeHat<br />

<strong>Novell</strong> <strong>AppArmor</strong> stellt ein mod-apparmor-Modul für das Apache-Programm bereit.<br />

Das mod-apparmor-Modul sorgt auf Ihrem SUSE Linux dafür, dass <strong>der</strong> Apache-<br />

Webserver „ChangeHat-fähig“ wird. Es wird installiert, wenn sich Apache auf Ihrem<br />

System befindet.<br />

Wenn Apache ChangeHat-fähig ist, prüft es in <strong>der</strong> angegebenen Reihenfolge für jede<br />

empfangene URI-Anfor<strong>der</strong>ung, ob die folgenden benutzerdefinierten <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Sicherheitspr<strong>of</strong>ile vorhanden sind.<br />

• URI-spezifischer Hat (z. B. ^phpsysinfo-dev/templates/classic/<br />

images/bar_left.gif)<br />

• DEFAULT_URI<br />

• HANDLING_UNTRUSTED_INPUT<br />

Wenn auf Ihrem System das erfor<strong>der</strong>liche Apache 2 vorhanden ist, wird das<br />

mod-apparmor-Modul automatisch <strong>mit</strong> <strong>Novell</strong> <strong>AppArmor</strong> installiert und <strong>der</strong> Apache-<br />

Konfiguration hinzugefügt. Apache 1.3 wird nicht unterstützt.<br />

ANMERKUNG<br />

Wenn Sie mod-apparmor ohne <strong>Novell</strong> <strong>AppArmor</strong> installieren, müssen Sie<br />

sicherstellen, dass die Konfigurationsdatei des Apache-Lademoduls einen Befehl<br />

enthält, <strong>der</strong> das mod-apparmor-Modul lädt, indem Sie Ihrer Apache-Konfigurationsdatei<br />

die folgende Zeile hinzufügen:<br />

LoadModule change_hat_module modules/mod_change_hat.so<br />

5.1.1 Werkzeuge zur Verwaltung <strong>von</strong><br />

ChangeHat-fähigen Anwendungen<br />

Wie bei den meisten <strong>Novell</strong> <strong>AppArmor</strong>-Werkzeugen stehen Ihnen zwei Methoden zur<br />

Verwaltung <strong>von</strong> ChangeHat zur Verfügung: YaST o<strong>der</strong> die Befehlszeilenschnittstelle.<br />

ChangeHat-fähige Anwendungen lassen sich an <strong>der</strong> Befehlszeile viel flexibler verwalten,<br />

114 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


aber <strong>der</strong> Prozess ist auch komplizierter. Beide Methoden gestatten Ihnen, die Hats für<br />

Ihre Anwendung zu verwalten und sie <strong>mit</strong> Pr<strong>of</strong>ileinträgen zu füllen.<br />

Die folgenden Schritte zeigen Ihnen, wie einem Apache-Pr<strong>of</strong>il <strong>mit</strong>hilfe <strong>von</strong> YaST Hats<br />

hinzugefügt werden. Im Assistenten zum Hinzufügen <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> werden Sie durch<br />

die <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il-Dienstprogramme aufgefor<strong>der</strong>t, neue Hats für einzelne<br />

URI-Anfor<strong>der</strong>ungen zu erstellen. Wenn Sie sich für die Erstellung eines neuen Hats<br />

entscheiden, können Sie individuelle Pr<strong>of</strong>ile für jeden URI erstellen. Da<strong>mit</strong> lassen sich<br />

sehr strenge Regeln für jede Anfor<strong>der</strong>ung festlegen.<br />

Wenn <strong>der</strong> verarbeitete URI keine wichtige Verarbeitung bzw. kein wesentliches<br />

Sicherheitsrisiko bedeutet, können Sie einfach Use Default Hat (Standard-Hat verwenden)<br />

wählen, um diesen URI im Standard-Hat zu verwenden, <strong>der</strong> das Standard-Sicherheitspr<strong>of</strong>il<br />

darstellt.<br />

In <strong>der</strong> Demo erstellen wir einen neuen Hat für den URI phpsysinfo-dev und seine<br />

darauf folgenden Zugriffe. Mithilfe <strong>der</strong> Dienstprogramme zur Pr<strong>of</strong>ilerstellung legen<br />

wir fest, was diesem neuen Hat hinzugefügt wird. Der resultierende Hat wird zu einem<br />

Hochsicherheits-Container, <strong>der</strong> sämtliche Verarbeitung auf dem Server beinhaltet, die<br />

bei <strong>der</strong> Übergabe des phpsysinfo-dev-URI an den Apache-Webserver stattfindet.<br />

In dieser Demo erzeugen wir ein Pr<strong>of</strong>il für die Anwendung phpsysinfo (siehe http://<br />

phpsysinfo.sourceforge.net für weitere Informationen). Es wird angenommen,<br />

dass das phpsysinfo-dev-Paket unter /srv/www/htdocs/phpsysinfo-dev/ in<br />

einer sauberen (neuen) Installation <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> installiert wird.<br />

1 Sobald phpsysinfo-dev installiert ist, können Sie dem Apache-Pr<strong>of</strong>il Hats hinzufügen.<br />

Starten Sie den Assistenten zum Aktualisieren <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> in <strong>der</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong>-Benutzeroberfläche.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 115


2 Geben Sie in Pr<strong>of</strong>ile to Add (Neues Pr<strong>of</strong>il) den Text httpd2-prefork ein.<br />

3 Klicken Sie auf Pr<strong>of</strong>il erstellen. Das Fenster des <strong>AppArmor</strong>-Pr<strong>of</strong>ilassistenten<br />

wird geöffnet.<br />

116 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


4 Starten Sie Apache neu, indem Sie rcapache2 restart in ein Terminalfenster<br />

eingeben.<br />

ANMERKUNG<br />

Starten Sie jetzt jedes Programm neu, für das Sie gerade Pr<strong>of</strong>ile erstellen.<br />

5 Öffnen Sie http://localhost/phpsysinfo-dev/ in einem Webbrowserfenster.<br />

Das Browserfenster sollte Netzwerkauslastung und Systeminformationen<br />

anzeigen.<br />

ANMERKUNG<br />

Da<strong>mit</strong> sichergestellt ist, dass <strong>der</strong> Server diese Anfor<strong>der</strong>ung verarbeitet<br />

und Sie keine Cache-Daten in Ihrem Browser sehen, sollten Sie die Seite<br />

aktualisieren. Klicken Sie dazu im Browser auf die Schaltfläche Aktualisieren,<br />

um sicherzustellen, dass Apache die Anfor<strong>der</strong>ung für den<br />

phpsysinfo-dev-URI verarbeitet.<br />

6 Klicken Sie auf Scan System Log for Entries to Add to Pr<strong>of</strong>iles (Systemlog auf<br />

Einträge für Pr<strong>of</strong>ile prüfen). <strong>Novell</strong> <strong>AppArmor</strong> startet das logpr<strong>of</strong>-Werkzeug,<br />

das alle Informationen scannt, die im vorherigen Schritt erfasst wurden. Es<br />

beginnt, Ihnen Pr<strong>of</strong>ilfragen zu stellen.<br />

7 In unserer Demo bittet uns logpr<strong>of</strong> um die Entscheidung zwischen Add Requested<br />

Hat (Angefor<strong>der</strong>ten Hat hinzufügen) und Use Default Hat (Standard-Hat verwenden),<br />

da es bemerkt hat, dass phpsysinfo-dev auf einen URI zugegriffen<br />

hat. Wählen Sie Add Requested Hat (Angefor<strong>der</strong>ten Hat hinzufügen).<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 117


8 Klicken Sie auf Allow (Erlauben).<br />

Durch die Wahl <strong>von</strong> Add Requested Hat (Angefor<strong>der</strong>ten Hat hinzufügen) im<br />

vorherigen Schritt wird ein neuer Hat im Pr<strong>of</strong>il erstellt und festgelegt, dass folgende<br />

Fragen über die Aktionen des Skripts im neu erstellten Hat und nicht im<br />

Standard-Hat für diese Anwendung hinzugefügt werden.<br />

Im nächsten Fenster zeigt <strong>Novell</strong> <strong>AppArmor</strong> ein externes Programm an, das vom<br />

Skript ausgeführt wurde. Sie können festlegen, dass die Ausführung des Programms<br />

durch den phpsysinfo-dev-Hat (Inherit (Erben) wählen) o<strong>der</strong> durch ein<br />

separates Pr<strong>of</strong>il (Pr<strong>of</strong>il wählen) eingeschränkt werden o<strong>der</strong> uneingeschränkt bzw.<br />

ohne Sicherheitspr<strong>of</strong>il (Unconfined (Uneingeschränkt) erfolgen soll. Nach Wahl<br />

<strong>der</strong> Option Pr<strong>of</strong>il wird für das Programm ein neues Pr<strong>of</strong>il erstellt, s<strong>of</strong>ern noch<br />

keines existiert.<br />

ANMERKUNG<br />

Die Option Unconfined (Uneingeschränkt) kann eine erhebliche Sicherheitslücke<br />

verursachen und sollte <strong>mit</strong> Umsicht verwendet werden.<br />

118 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


a Wählen Sie Inherit (Erben) für den Pfad /bin/bash. Dadurch wird /bin/<br />

bash/ (auf das Apache zugreift) dem phpsysinfo-dev-Hat-Pr<strong>of</strong>il <strong>mit</strong> den<br />

erfor<strong>der</strong>lichen Berechtigungen hinzugefügt.<br />

b Klicken Sie auf Allow (Erlauben).<br />

9 Die weiteren Fragen for<strong>der</strong>n Sie zur Erstellung neuer Hats und zum Hinzufügen<br />

<strong>von</strong> Einträgen zu Ihrem Pr<strong>of</strong>il und dessen Hats auf. Das Hinzufügen <strong>von</strong> Einträgen<br />

zu <strong>Pr<strong>of</strong>ilen</strong> wird detailliert im Abschnitt Abschnitt 3.3.1, „Hinzufügen eines<br />

Pr<strong>of</strong>ils <strong>mit</strong> dem Assistenten“ (S. 26) beschrieben.<br />

Klicken Sie nach <strong>der</strong> Beantwortung aller Pr<strong>of</strong>ilfragen auf Finish (Beenden), um<br />

Ihre Än<strong>der</strong>ungen zu speichern und den Assistenten zu beenden.<br />

Dies ist ein Beispiel für einen phpsyinfo-dev-Hat:<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 119


Beispiel 5.1 Beispiel für phpsysinfo-dev-Hat<br />

^phpsysinfo {<br />

#include <br />

/bin/df ix,<br />

/bin/bash ix,<br />

/dev/tty rw,<br />

/etc/SuSE-release r,<br />

/etc/fstab r,<br />

/etc/hosts r,<br />

/etc/mtab r,<br />

/proc/** r,<br />

/sbin/lspci ix,<br />

/srv/www/htdocs/sysinfo/** r,<br />

/sys/bus/pci/devices r,<br />

/sys/devices/** r,<br />

/usr/bin/who ix,<br />

/usr/share/pci.ids r,<br />

/var/log/apache2/{access,error}_log w,<br />

/var/run/utmp r,<br />

}<br />

ANMERKUNG<br />

Das Pr<strong>of</strong>il ^phpsysinfo-dev ist nur im Kontext eines Prozesses gültig, <strong>der</strong><br />

unter dem übergeordneten Pr<strong>of</strong>il httpd2-prefork abläuft.<br />

5.1.2 Hinzufügen <strong>von</strong> Hats und Einträgen in<br />

Hats<br />

Wenn Sie das Dialogfeld Pr<strong>of</strong>il bearbeiten verwenden (Anleitungen siehe unter<br />

Abschnitt 3.3.3, „Bearbeiten eines Pr<strong>of</strong>ils“ (S. 38)) o<strong>der</strong> über <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il<br />

manuell hinzufügen (Anleitungen siehe unter Abschnitt 3.3.2, „Manuelles Hinzufügen<br />

eines Pr<strong>of</strong>ils“ (S. 33)) ein neues Pr<strong>of</strong>il hinzufügen, erhalten Sie die Option, Ihren <strong>Novell</strong><br />

<strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> Hats (Unterpr<strong>of</strong>ile) hinzuzufügen.<br />

Sie können ein ChangeHat-Unterpr<strong>of</strong>il über das Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ildialog hinzufügen.<br />

120 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


1 Klicken Sie im Fenster <strong>AppArmor</strong>-Pr<strong>of</strong>ile Dialog auf Add Entry (Eintrag hinzufügen)<br />

und wählen Sie dann Hat. Das Dialogfeld Enter Hat Name (Hat-Namen<br />

eingeben) wird geöffnet:<br />

2 Geben Sie den Namen des Hats ein, <strong>der</strong> dem <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il hinzugefügt<br />

werden soll. Der Name ist <strong>der</strong> URI, <strong>der</strong> beim Zugriff die im Hat festgelegten<br />

Berechtigungen erhält.<br />

3 Klicken Sie auf Create Hat (Hat erstellen). Sie kehren in das Fenster <strong>AppArmor</strong>-<br />

Pr<strong>of</strong>ildialog zurück.<br />

4 Nachdem Sie den neuen Hat hinzugefügt haben, klicken Sie auf Fertig.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 121


ANMERKUNG<br />

Ein Beispiel für ein <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>il finden Sie unter Beispiel 5.1, „Beispiel<br />

für phpsysinfo-dev-Hat“ (S. 120).<br />

5.2 Apache-Konfiguration für<br />

mod-apparmor<br />

Apache wird durch die Angabe <strong>von</strong> Direktiven in Klartext-Konfigurationsdateien<br />

konfiguriert. Die Hauptkonfigurationsdatei ist gewöhnlich httpd.conf. Wenn Sie<br />

Apache kompilieren, können Sie den Speicherort dieser Datei angeben. Direktiven<br />

können in beliebige dieser Konfigurationsdateien gesetzt werden, um das Verhalten<br />

<strong>von</strong> Apache zu än<strong>der</strong>n. Wenn Sie die Hauptkonfigurationsdateien än<strong>der</strong>n, müssen Sie<br />

Apache starten bzw. neu starten, da<strong>mit</strong> die Än<strong>der</strong>ungen in Kraft treten.<br />

5.2.1 Direktiven für den virtuellen Host<br />

Direktiven für den virtuellen Host steuern, ob Anfor<strong>der</strong>ungen <strong>mit</strong> Pfadnameninformationen,<br />

die einem tatsächlichen Dateinamen (o<strong>der</strong> einer nicht existenten Datei in einem<br />

bestehenden Verzeichnis) nachgestellt sind, akzeptiert o<strong>der</strong> abgelehnt werden. Informationen<br />

über Apache-Dokumentation zu Direktiven für virtuelle Hosts finden Sie unter<br />

http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost<br />

Das für change_hat spezifische Konfigurationsschlüsselwort lautet<br />

ImmDefaultHatName und wird ähnlich zu ImmHatName verwendet, z. B.<br />

ImmDefaultHatName My_Funky_Default_Hat.<br />

Die Konfigurationsoption basiert im Prinzip auf einer Server-Direktive, <strong>mit</strong> <strong>der</strong>en Hilfe<br />

Sie das Schlüsselwort außerhalb an<strong>der</strong>er Optionen nutzen und da<strong>mit</strong> für den Standardserver<br />

festlegen können. Virtuelle Hosts werden Apache-intern als separate „Server“<br />

betrachtet, Sie können also einen Standard-Hat-Namen für den Standardserver festlegen<br />

sowie bei Bedarf einen für jeden virtuellen Host.<br />

Die folgenden Schritte zeigen die Reihenfolge, in <strong>der</strong> mod-apparmor beim Eingang<br />

einer Anfor<strong>der</strong>ung versucht, Hats anzuwenden.<br />

122 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


1. Ein Speicherort- o<strong>der</strong> Verzeichnis-Hat, wie im Schlüsselwort ImmHatName<br />

angegeben.<br />

2. Ein Hat, <strong>der</strong> durch den vollständigen URI-Pfad angegeben wird.<br />

3. Ein Standardserver-Hat, wie im Schlüsselwort ImmDefaultHatName angegeben.<br />

4. DEFAULT_URI (und falls keiner <strong>von</strong> diesen existiert, erfolgt die Rückkehr zum<br />

„übergeordneten“ Apache-Hat).<br />

5.2.2 Speicherort- und<br />

Verzeichnis-Direktiven<br />

Speicherort- und Verzeichnis-Direktiven geben Hat-Namen in <strong>der</strong> Programmkonfigurationsdatei<br />

an, da<strong>mit</strong> das Programm den Hat für seine Sicherheit aufruft. Für Apache<br />

finden Sie Dokumentation über Speicherort- und Verzeichnis-Direktiven unter http://<br />

httpd.apache.org/docs-2.0/sections.html.<br />

Das nachstehende Beispiel einer location-Direktive legt fest, dass mod-apparmor<br />

für einen bestimmten Speicherort einen bestimmten Hat verwenden soll:<br />

<br />

ImmHatName MY_HAT_NAME<br />

<br />

Hier wird versucht, MY_HAT_NAME für jeden URI anzuwenden, <strong>der</strong> <strong>mit</strong> /foo/ (/foo/<br />

, /foo/bar, /foo/cgi/path/beliebig/beliebig usw.) beginnt.<br />

Die directory-Direktive gleicht <strong>der</strong> location-Direktive <strong>mit</strong> <strong>der</strong> Ausnahme, dass sie sich<br />

auf einen Pfadnamen im Dateisystem bezieht, wie in folgendem Beispiel:<br />

# Fehlenden nachgestellten<br />

Schrägstrich beachten<br />

ImmHatName immunix.com<br />

<br />

Beispiel: Das Programm phpsysinfo wird verwendet, um eine location-Direktive in<br />

folgendem Beispiel zu illustrieren. Der Tarball kann <strong>von</strong> http://phpsysinfo<br />

.sourceforge.com heruntergeladen werden.<br />

<strong>Erstellen</strong> <strong>von</strong> <strong>Pr<strong>of</strong>ilen</strong> für Ihre Webanwendungen <strong>mit</strong> ChangeHat Apache 123


1 Installieren Sie den Tarball nach dem Herunterladen in /srv/www/htdocs/<br />

sysinfo/.<br />

2 <strong>Erstellen</strong> Sie /etc/apache2/conf.d/sysinfo.conf und fügen Sie den<br />

folgenden Text hinzu:<br />

<br />

ImmHatName sysinfo<br />

<br />

Der folgende Hat sollte dann für phpsyinfo funktionieren:<br />

^sysinfo {<br />

#include <br />

/bin/df ix,<br />

/bin/bash ix,<br />

/dev/tty rw,<br />

/etc/SuSE-release r,<br />

/etc/fstab r,<br />

/etc/hosts r,<br />

/etc/mtab r,<br />

/proc/** r,<br />

/sbin/lspci ix,<br />

/srv/www/htdocs/sysinfo/** r,<br />

/sys/bus/pci/devices r,<br />

/sys/devices/** r,<br />

/usr/bin/who ix,<br />

/usr/share/pci.ids r,<br />

/var/log/apache2/{access,error}_log w,<br />

/var/run/utmp r,<br />

}<br />

3 Laden Sie <strong>Novell</strong> <strong>AppArmor</strong>-Pr<strong>of</strong>ile neu, indem Sie rcapparmor restart<br />

als root an einem Terminalfenster eingeben.<br />

4 Starten Sie Apache neu, indem Sie rcapache2 restart in ein Terminalfenster<br />

eingeben, während Sie als root angemeldet sind.<br />

5 Geben Sie http://hostname/sysinfo/ in einen Browser ein, um die<br />

Systeminformationen zu empfangen, die phpsysinfo liefert.<br />

6 Er<strong>mit</strong>teln Sie Konfigurationsfehler, indem Sie zu /var/log/syslog wechseln<br />

o<strong>der</strong> dmesg ausführen und etwaige Ablehnungen in <strong>der</strong> Ausgabe suchen.<br />

124 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Unterstützung<br />

Dieses Kapitel umreißt Aufgaben bei <strong>der</strong> Wartung. Sie erfahren, wie Sie <strong>Novell</strong>®<br />

<strong>AppArmor</strong> aktualisieren können und eine Liste verfügbarer Manualpages erhalten, die<br />

grundlegende Hilfe zu den <strong>Novell</strong> <strong>AppArmor</strong>-Befehlszeilenwerkzeugen bieten. Im<br />

Abschnitt über die Fehlersuche lernen Sie einige mögliche Probleme in <strong>Novell</strong><br />

<strong>AppArmor</strong> und <strong>der</strong>en Lösung kennen. Verschaffen Sie sich zum Abschluss einen<br />

Überblick über die Unterstützungsoptionen, die <strong>mit</strong> Ihrer Kopie <strong>von</strong> SUSE Linux verfügbar<br />

sind.<br />

6.1 Online-Aktualisierung <strong>von</strong> <strong>Novell</strong><br />

<strong>AppArmor</strong><br />

Aktualisierungen für <strong>Novell</strong> <strong>AppArmor</strong>-Pakete werden auf dieselbe Weise bereitgestellt<br />

wie alle an<strong>der</strong>en Aktualisierungen für SUSE Linux-basierte Produkte. Rufen Sie die<br />

Updates ab und wenden Sie sie an wie jedes an<strong>der</strong>e Paket, das als Teil eines SUSE<br />

Linux-Produkts geliefert wird.<br />

6.2 Verwenden <strong>der</strong> Manualpages<br />

Ihnen werden Manualpages zur Unterstützung angeboten. Geben Sie an einem Terminal<br />

man apparmo ein, um die Manualpage für <strong>AppArmor</strong> zu öffnen. Manualpages werden<br />

in Abschnitten <strong>von</strong> 1 bis 8 verteilt. Je<strong>der</strong> Abschnitt ist spezifisch für eine Kategorie <strong>der</strong><br />

Dokumentation:<br />

6<br />

Unterstützung 125


Tabelle 6.1 Manualpages: Abschnitte und Kategorien<br />

Abschnitt<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

Kategorie<br />

Benutzerbefehle<br />

Systemaufrufe<br />

Bibliotheksfunktionen<br />

Gerätetreiberinformation<br />

Konfigurationsdateiformate<br />

Spiele<br />

Übergeordnete Konzepte<br />

Administratorbefehle<br />

Die Abschnittnummern dienen <strong>der</strong> Unterscheidung zwischen den Manualpages. Beispiel:<br />

exit(2) beschreibt den Systemaufruf "exit", während exit(3) die C-Bibliotheksfunktion<br />

"exit" beschreibt.<br />

Die <strong>Novell</strong> <strong>AppArmor</strong>-Manualpages:<br />

• unconfined(8)<br />

• autodep(1)<br />

• complain(1)<br />

• enforce(1)<br />

• genpr<strong>of</strong>(1)<br />

• logpr<strong>of</strong>(1)<br />

• change_hat(2)<br />

• logpr<strong>of</strong>.conf(5)<br />

126 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


• apparmor.conf(5)<br />

• apparmor.d(5)<br />

• apparmor.vim(5)<br />

• apparmor(7)<br />

• apparmor_parser(8)<br />

6.3 Weitere Informationen<br />

Weitere Informationen zu dem <strong>AppArmor</strong>-Produkt finden Sie auf <strong>der</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<br />

Produktseite bei <strong>Novell</strong>: http://www.novell.com/products/apparmor/.<br />

Die Dokumentation für <strong>Novell</strong> <strong>AppArmor</strong> einschließlich dieses Dokuments finden Sie<br />

unter http://www.novell.com/documentation/apparmor/ o<strong>der</strong> im<br />

installierten System unter /usr/share/doc/packages/apparmor-docs/.<br />

Es gibt spezielle Mailinglisten für <strong>AppArmor</strong>, in denen die Benutzer Beiträge schreiben<br />

und sich <strong>mit</strong> Entwicklern austauschen können.<br />

apparmor-general@forge.novell.com<br />

Dies ist eine Mailingliste für die Endbenutzer <strong>von</strong> <strong>AppArmor</strong>. Hier können Sie<br />

Fragen dazu stellen, wie Sie <strong>AppArmor</strong> zum Schutz Ihrer Anwendungen einsetzen<br />

können.<br />

apparmor-dev@forge.novell.com<br />

Dies ist eine Entwickler-Mailingliste für die <strong>AppArmor</strong>-Entwickler und Community-Mitglie<strong>der</strong>.<br />

Diese Liste ist für Fragen zur Entwicklung <strong>der</strong> Kernfunktionen<br />

<strong>von</strong> <strong>AppArmor</strong> gedacht: Kernel-Modul und Pr<strong>of</strong>ilwerkzeuge. Wenn Sie daran<br />

interessiert sind, den Code für <strong>AppArmor</strong> zu überprüfen und Überprüfungen o<strong>der</strong><br />

Patches beizusteuern, ist dies die richtige Liste für Sie.<br />

apparmor-announce@forge.novell.com<br />

Dies ist eine Liste <strong>mit</strong> geringem Nachrichtenaufkommen, in <strong>der</strong> die Verfügbarkeit<br />

neuer Versionen o<strong>der</strong> Funktionen gemeldet wird.<br />

Unterstützung 127


6.4 Fehlerbehebung<br />

Der folgende Abschnitt behandelt die gängigsten Probleme und Fehlermeldungen, die<br />

beim Einsatz <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong> auftreten können.<br />

SUSE Linux ist installiert, aber <strong>AppArmor</strong> wird nicht im YaST-Menü angezeigt<br />

<strong>AppArmor</strong> wird standardmäßig installiert, wenn <strong>der</strong> GNOME- o<strong>der</strong> KDE-Desktop<br />

zum Zeitpunkt <strong>der</strong> Installation ausgewählt wird. Wenn Sie Minimales grafisches<br />

System o<strong>der</strong> Expertenmodus wählen, ist <strong>AppArmor</strong> nicht standardmäßig inbegriffen.<br />

Verwenden Sie in diesen Fällen YaST, um die fehlenden Pakete zu installieren.<br />

Weitere Informationen hierzu finden Sie im <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Installations<br />

und Einführungshandbuch.<br />

Merkwürdiges Anwendungsverhalten<br />

Wenn Sie ein merkwürdiges Verhalten o<strong>der</strong> ein an<strong>der</strong>es Anwendungsproblem<br />

bemerken, sollten Sie zunächst anhand <strong>der</strong> Ablehnungsmeldungen in den Protokolldateien<br />

prüfen, ob <strong>AppArmor</strong> Ihre Anwendung zu stark einschränkt.<br />

Starten Sie zur Prüfung <strong>der</strong> Ablehnungsmeldungen YaST → <strong>Novell</strong> <strong>AppArmor</strong> und<br />

rufen Sie <strong>AppArmor</strong>-Berichte auf. Wählen Sie Archiv anzeigen und App Aud für<br />

den Anwendungsprüfbericht. Sie können Datum und Uhrzeit filtern, um die Zeitspanne<br />

einzugrenzen, in <strong>der</strong> das seltsame Anwendungsverhalten begann.<br />

Probleme <strong>mit</strong> Apache<br />

Apache startet nicht ordnungsgemäß o<strong>der</strong> stellt keine Webseiten bereit und Sie<br />

haben gerade ein neues Modul installiert o<strong>der</strong> eine Konfigurationsän<strong>der</strong>ung vorgenommen.<br />

Wenn Sie zusätzliche Apache-Module installieren (wie mod-apparmor) o<strong>der</strong><br />

Konfigurationsän<strong>der</strong>ungen in Apache durchführen, sollten Sie erneut die Apache-<br />

Pr<strong>of</strong>ilerstellung ausführen, um etwaige zusätzliche Regeln zu er<strong>mit</strong>teln, die dem<br />

Pr<strong>of</strong>il hinzugefügt werden müssen.<br />

Berichte werden nicht per E-Mail gesendet<br />

Wenn die Berichtfunktion eine HTML- o<strong>der</strong> CSV-Datei generiert, die die Standardgröße<br />

überschreitet, wird die Datei nicht gesendet. Mailserver haben eine standardmäßige,<br />

feste Größenbeschränkung für E-Mails. Diese Beschränkung kann die<br />

Fähigkeit <strong>von</strong> <strong>AppArmor</strong> zum Senden <strong>von</strong> E-Mails behin<strong>der</strong>n, die zu Berichtzwecken<br />

generiert wurden. Wenn Ihre Mail nicht ankommt, könnte dies <strong>der</strong> Grund<br />

sein.<br />

128 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Benutzer müssen über die Begrenzung <strong>der</strong> Mailgröße Bescheid wissen und sollten<br />

in ihren Archiven prüfen, ob E-Mails nicht empfangen wurden.<br />

Ausschließen <strong>von</strong> bestimmten <strong>Pr<strong>of</strong>ilen</strong> aus <strong>der</strong> Liste <strong>der</strong> verwendeten Pr<strong>of</strong>ile<br />

<strong>AppArmor</strong> lädt stets alle Pr<strong>of</strong>ile und wendet sie an, die sich in seinem Pr<strong>of</strong>ilverzeichnis<br />

(/etc/apparmor.d/) befinden. Wenn Sie entscheiden, ein Pr<strong>of</strong>il nicht<br />

für eine bestimmte Anwendung zu nutzen, löschen Sie das betreffende Pr<strong>of</strong>il o<strong>der</strong><br />

verschieben Sie es an einen an<strong>der</strong>en Speicherort, an dem <strong>AppArmor</strong> nicht danach<br />

sucht.<br />

Der Betrieb <strong>von</strong> <strong>AppArmor</strong> kann verschiedene Fehler generieren. Im Folgenden<br />

erhalten Sie eine Liste <strong>der</strong> möglichen Fehler und <strong>der</strong>en Beseitigung.<br />

Can’t find apparmor_parser (apparmor_parser nicht gefunden)<br />

Wenn Sie logpr<strong>of</strong> als Nicht-root-Benutzer, z. B. als tux, ausführen, sehen Sie<br />

wahrscheinlich diesen Fehler:<br />

tux@localhost:~> /usr/sbin/logpr<strong>of</strong><br />

Can’t find apparmor_parser.<br />

ANMERKUNG<br />

Sie sollten logpr<strong>of</strong> nur als root ausführen.<br />

/usr/sbin/genpr<strong>of</strong> must be run as root (/usr/sbin/genpr<strong>of</strong> muss als root ausgeführt werden)<br />

Das Ausführen <strong>von</strong> genpr<strong>of</strong> als Nicht-root-Benutzer führt zu einem ähnlichen<br />

Ergebnis:<br />

tux@localhost:~> /usr/sbin/genpr<strong>of</strong><br />

/usr/sbin/genpr<strong>of</strong> must be run as root.<br />

Unloading <strong>AppArmor</strong>pr<strong>of</strong>iles..failed (Entladen <strong>von</strong> Unterdomänen-<strong>Pr<strong>of</strong>ilen</strong> fehlgeschlagen)<br />

Sie müssen die Skripts "apparmor start" und "apparmor stop" als root ausführen.<br />

Die Ausführung als Nicht-root-Benutzer führt zu diesem Ergebnis:<br />

tux@localhost:~> /etc/init.d/apparmor stop<br />

/sbin/apparmor_parser: Sorry. You need root priveleges to run this program.<br />

Unloading <strong>AppArmor</strong> pr<strong>of</strong>iles..failed<br />

<strong>AppArmor</strong> parser error (<strong>AppArmor</strong>-Analysefehler)<br />

Das folgende Beispiel zeigt die Syntax des vollständigen Analysefehlers.<br />

Unterstützung 129


Bei <strong>der</strong> manuellen Bearbeitung <strong>von</strong> <strong>Novell</strong> <strong>AppArmor</strong>-<strong>Pr<strong>of</strong>ilen</strong> können sich Syntaxfehler<br />

einschleichen. Wenn Sie versuchen, <strong>AppArmor</strong> <strong>mit</strong> Syntaxfehlern in den<br />

<strong>Pr<strong>of</strong>ilen</strong> zu starten o<strong>der</strong> neu zu starten, erhalten Sie Fehler wie den folgenden:<br />

localhost:~ # /etc/init.d/apparmor start<br />

Loading <strong>AppArmor</strong> pr<strong>of</strong>iles<br />

<strong>AppArmor</strong> parser error, line 2: Found unexpected character: ’h’<br />

Pr<strong>of</strong>ile /etc/apparmor.d/usr.sbin.squid failed to load<br />

failed<br />

6.5 Melden <strong>von</strong> Programmfehlern für<br />

<strong>AppArmor</strong><br />

Die Entwickler <strong>von</strong> <strong>AppArmor</strong> und SUSE Linux sind bestrebt, Produkte in höchster<br />

Qualität zu liefern. Ihr Feedback und Ihre Fehlerberichte helfen uns dabei, unsere gute<br />

Arbeit fortzusetzen. Reichen Sie also bei jedem Auftreten eines Fehlers in <strong>AppArmor</strong><br />

einen Fehlerbericht für dieses Produkt ein:<br />

1 Wechseln Sie in Ihrem Webbrowser zu https://bugzilla.novell.com/<br />

index.cgi.<br />

2 Geben Sie die Kontodaten Ihres <strong>Novell</strong>-Kontos ein und klicken Sie auf Login<br />

(Anmeldung).<br />

O<strong>der</strong>:<br />

<strong>Erstellen</strong> Sie wie folgt ein <strong>Novell</strong>-Konto:<br />

a Klicken Sie auf Create New Account (Neues Konto erstellen) auf <strong>der</strong> Seite<br />

Login to Continue (Anmelden, um fortzufahren).<br />

b Geben Sie einen Benutzernamen und ein Passwort sowie zusätzliche<br />

Adressdaten ein und klicken Sie auf Create Login (Anmeldung erstellen),<br />

um s<strong>of</strong>ort <strong>mit</strong> <strong>der</strong> Anmeldungserstellung fortzufahren.<br />

O<strong>der</strong>:<br />

Geben Sie Daten über an<strong>der</strong>e <strong>Novell</strong>-Konten ein, die Sie führen, um all<br />

diese auf ein Konto zu synchronisieren.<br />

130 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


3 Prüfen Sie, ob ein ähnliches Problem wie das Ihre bereits gemeldet wurde, indem<br />

Sie auf Search Reports (Berichte durchsuchen) klicken.<br />

Führen Sie entwe<strong>der</strong> eine Schnellsuche <strong>mit</strong> einem angegebenen Produkt und<br />

Stichwort aus o<strong>der</strong> verwenden Sie die Advanced Search (Erweiterte Suche).<br />

4 Wenn Ihr Problem bereits gemeldet wurde, prüfen Sie diesen Fehlerbericht und<br />

fügen Sie ggf. zusätzliche Informationen hinzu.<br />

5 Wenn Ihr Problem noch nicht gemeldet wurde, wählen Sie New (Neu) in <strong>der</strong><br />

oberen Navigationsleiste und wechseln Sie zur Seite Enter Bug (Programmfehler<br />

eingeben).<br />

6 Wählen Sie das Produkt aus, für das Sie einen Programmfehler melden möchten.<br />

In Ihrem Fall ist das Ihre SUSE Linux-Version. Klicken Sie auf Sub<strong>mit</strong> (Senden).<br />

7 Wählen Sie Produktversion, Komponente (<strong>AppArmor</strong> in diesem Fall), Hardwareplattform<br />

und Schweregrad.<br />

8 Geben Sie eine kurze Überschrift ein, die Ihr Problem beschreibt, und fügen Sie<br />

eine ausführlichere Beschreibung <strong>mit</strong> Protokolldateien darunter ein.<br />

Sie können Ihrem Fehlerbericht Anlagen <strong>mit</strong> Screenshots, Protokolldateien o<strong>der</strong><br />

Testfällen hinzufügen.<br />

9 Klicken Sie auf Sub<strong>mit</strong> (Senden), nachdem Sie alle Einzelheiten eingegeben<br />

haben, um Ihren Bericht an die Entwickler zu senden.<br />

Unterstützung 131


Glossar<br />

Apache<br />

Apache ist ein kostenlos verfügbarer Webserver auf UNIX-Basis. Es ist <strong>der</strong>zeit <strong>der</strong><br />

am häufigsten verwendete Webserver im Internet. Weitere Informationen zu Apache<br />

finden Sie auf <strong>der</strong> Apache-Website unter http://www.apache.org:<br />

Anwendungs-Firewall<br />

<strong>Novell</strong> <strong>AppArmor</strong> enthält Anwendungen und beschränkt die Aktionen, die diese<br />

ausführen dürfen. Es verhin<strong>der</strong>t <strong>mit</strong>hilfe <strong>von</strong> Berechtigungseinschränkungen, dass<br />

Angreifer auf dem geschützten Server bösartige Programme ausführen o<strong>der</strong> sogar<br />

vertrauenswürdige Programme zweckentfremden.<br />

Angriffssignatur<br />

Muster in System- o<strong>der</strong> Netzwerkaktivität, das einen möglichen Viren- o<strong>der</strong> einen<br />

Hackerangriff signalisiert. Intrusion Detection-Systeme können anhand <strong>von</strong><br />

Angriffssignaturen zwischen legitimen und potenziell bösartigen Aktivitäten<br />

unterscheiden.<br />

Indem es sich nicht auf Angriffssignaturen verlässt, bietet <strong>Novell</strong> <strong>AppArmor</strong><br />

"proaktive" anstelle <strong>von</strong> "reaktiver" Verteidigung gegen Angriffe. Der Ansatz ist<br />

besser, da es keine Sicherheitslücke gibt, für die eigens eine Angriffssignatur für<br />

<strong>Novell</strong> <strong>AppArmor</strong> definiert werden muss, wie das bei Produkten erfor<strong>der</strong>lich ist,<br />

die ihre Netzwerke <strong>mit</strong>hilfe <strong>von</strong> Angriffssignaturen schützen.<br />

GUI<br />

Grafische Benutzeroberfläche (Graphical User Interface). Bezeichnet ein S<strong>of</strong>tware-<br />

Frontend, das eine ansprechende und bequeme Schnittstelle zwischen einem<br />

Computerbenutzer und einer Anwendung bieten soll. Die Elemente einer grafischen<br />

Benutzeroberfläche umfassen z. B. Fenster, Symbole, Schaltflächen, Zeiger und<br />

Bildlaufleisten.<br />

HIP<br />

Verhin<strong>der</strong>ung <strong>von</strong> unbefugtem Zugriff auf den Host (Host Intrusion Prevention).<br />

Blockiert gemeinsam <strong>mit</strong> dem Betriebssystemkern abnormales Anwendungsverhalten<br />

in <strong>der</strong> Annahme, dass das abnormale Verhalten einen unbekannten Angriff<br />

darstellt. Am Host werden bösartige Pakete auf Netzwerkebene blockiert, bevor<br />

sie <strong>der</strong> Zielanwendung „schaden“ können.


Obligatorische Zugriffskontrolle<br />

Diese Methode zur Beschränkung des Objektzugriffs beruht auf festen Sicherheitsattributen,<br />

die Benutzern, Dateien und an<strong>der</strong>en Objekten zugewiesen wurden. Die<br />

Kontrollen sind obligatorisch in dem Sinne, dass sie sich nicht durch Benutzer o<strong>der</strong><br />

<strong>der</strong>en Programme än<strong>der</strong>n lassen.<br />

Pr<strong>of</strong>il Foundation Classes<br />

Pr<strong>of</strong>ilbausteine, die für gängige Anwendungsaktivitäten wie DNS-Lookup und<br />

Benutzerauthentifizierung erfor<strong>der</strong>lich sind.<br />

RPM<br />

Der RPM-Paket-Manager. Ein <strong>of</strong>fenes Paketsystem, das je<strong>der</strong> verwenden kann. Es<br />

funktioniert unter Red Hat Linux, SUSE Linux und an<strong>der</strong>en Linux- und UNIX-<br />

Systemen. Es kann Computer-S<strong>of</strong>twarepakete installieren, deinstallieren, verifizieren,<br />

abfragen und aktualisieren. Weitere Informationen hierzu finden Sie unter<br />

http://www.rpm.org/.<br />

SSH<br />

Secure Shell. Ein Dienst, <strong>mit</strong> dessen Hilfe Sie <strong>von</strong> einem entfernten Computer über<br />

eine sichere Verbindung auf Ihren Server zugreifen und Textbefehle erteilen können.<br />

Optimierte Zugriffskontrolle<br />

<strong>Novell</strong> <strong>AppArmor</strong> bietet eine optimierte Zugriffskontrolle für Netzwerkdienste<br />

durch die Angabe <strong>der</strong> Dateien, die jedes Programm lesen, schreiben und ausführen<br />

darf. Da<strong>mit</strong> wird sichergestellt, dass jedes Programm ausschließlich die beabsichtigten<br />

Aktionen ausführt.<br />

URI (URI)<br />

Universal Resource Identifiers. Der generische Begriff für alle Typen <strong>von</strong> Namen<br />

und Adressen, die sich auf Objekte im World Wide Web beziehen. Eine URL ist<br />

eine Art <strong>von</strong> URI.<br />

URL<br />

Uniform Resource Locator. Die globale Adresse <strong>von</strong> Dokumenten und an<strong>der</strong>en<br />

Ressourcen im World Wide Web.<br />

Der erste Teil <strong>der</strong> Adresse gibt das zu verwendende Protokoll an, <strong>der</strong> zweite Teil<br />

gibt die IP-Adresse o<strong>der</strong> den Namen <strong>der</strong> Domäne an, in <strong>der</strong> sich die Ressource<br />

befindet.<br />

134 <strong>Novell</strong> <strong>AppArmor</strong> 2.0-Administrationshandbuch


Beispiel: In http://www.immuix.com/index.html ist http das zu verwendende<br />

Protokoll.<br />

Schwachstellen<br />

Ein Aspekt eines Systems o<strong>der</strong> Netzwerks, <strong>der</strong> eine Angriffsfläche bietet. Merkmale<br />

<strong>von</strong> Computersystemen, die einem Individuum ermöglichen, den einwandfreien<br />

Betrieb zu verhin<strong>der</strong>n o<strong>der</strong> die nicht autorisierten Benutzern erlauben, die Kontrolle<br />

des Systems zu übernehmen. Schwächen in Design, Administration o<strong>der</strong> Implementierung<br />

o<strong>der</strong> Fehler in Hardware, Firmware o<strong>der</strong> S<strong>of</strong>tware. Bei entsprechen<strong>der</strong><br />

Ausnutzung kann ein Risiko zu einem inakzeptablen Einfluss in Form <strong>von</strong> unberechtigtem<br />

Zugriff auf Informationen o<strong>der</strong> einer Störung wichtiger Verarbeitungsvorgänge<br />

führen.<br />

Glossar 135

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!