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
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