37.3 Einführung in die Erstellung von Anwendungsprofilen

Bereiten Sie Ihr System für einen erfolgreichen Einsatz von Novell AppArmor vor, indem Sie die folgenden Punkte genau beachten:

  1. Ermitteln Sie die Anwendungen, die ein Profil brauchen. Weitere Informationen dazu finden Sie unter Abschnitt 37.3.1, Wählen der Anwendungen, die ein Profil erhalten sollen.

  2. Erstellen Sie die erforderlichen Profile wie in Abschnitt 37.3.2, Erstellen und Ändern von Profilen umrissen. Prüfen Sie die Ergebnisse und passen Sie die Profile bei Bedarf an.

  3. Bleiben Sie auf dem Laufenden über die Vorgänge auf Ihrem System, indem Sie AppArmor-Berichte erzeugen und auf Sicherheitsereignisse reagieren. Weitere Informationen finden Sie unter Abschnitt 37.3.3, Konfigurieren von Novell AppArmor-Ereignisbenachrichtigung und -Berichten.

  4. Aktualisieren Sie Ihre Profile, wenn sich Ihre Umgebung ändert. Andernfalls müssen Sie auf Sicherheitsereignisse reagieren, die das AppArmor-Berichtwerkzeug protokolliert. Weitere Informationen finden Sie unter Abschnitt 37.3.4, Aktualisieren Ihrer Profile.

37.3.1 Wählen der Anwendungen, die ein Profil erhalten sollen

Sie müssen nur die Programme schützen, die in Ihrer speziellen Konfiguration Angriffen ausgesetzt sind. Verwenden Sie also nur Profile für die Anwendungen, die Sie wirklich ausführen. Ermitteln Sie anhand der folgenden Liste die wahrscheinlichsten Kandidaten:

Netzwerkagenten

Programme (Server und Clients) mit offenen Netzwerkports. Benutzer-Clients, wie Mail-Clients und Webbrowser, haben bestimmte Privilegien. Diese Programme werden mit der Berechtigung ausgeführt, in das Home-Verzeichnis des Benutzers zu schreiben, und sie verarbeiten Eingaben von potenziell feindseligen entfernten Quellen, wie feindseligen Websites und per E-Mail gesendeten bösartigen Code.

Webanwendungen

Programme, die sich durch einen Webbrowser aufrufen lassen, einschließlich CGI-Skripten in Perl, PHP-Seiten und komplexere Webanwendungen.

Cronjobs

Programme, die der cron-Daemon regelmäßig ausführt, lesen Eingaben aus einer Vielzahl von Quellen.

Um die Prozesse zu ermitteln, die derzeit mit offenen Netzwerkports laufen und eventuell ein Profil zur Beschränkung brauchen, führen Sie den Befehl aa-unconfined als root aus.

Beispiel 37-1 Ausgabe von aa-unconfined

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

In obigem Beispiel brauchen die Prozesse mit der Beschriftung not confined eventuell ein benutzerdefiniertes Profil zur Einschränkung. Die Prozesse mit der Angabe confined by sind bereits durch AppArmor geschützt.

TIPP: Weiterführende Informationen

Weitere Informationen zur Auswahl der richtigen Anwendungen für die Profilerstellung finden Sie unter Abschnitt 1.2, Determining Programs to Immunize, (↑ Novell AppArmor Administration Guide ).

37.3.2 Erstellen und Ändern von Profilen

Novell AppArmor auf openSUSE wird mit einem vorkonfigurierten Satz von Profilen für die wichtigsten Anwendungen geliefert. Zusätzlich können Sie mit AppArmor Ihre eigenen Profile für jede beliebige Anwendung erstellen.

Es gibt zwei verschiedene Möglichkeiten, Profile zu verwalten. Die eine verwendet das grafische Frontend der YaST Novell AppArmor-Module und die andere nutzt die Befehlszeilen-Werkzeuge, die in der AppArmor-Suite zur Verfügung stehen. Beide Methoden arbeiten grundsätzlich auf dieselbe Weise.

Die Ausführung von aa-unconfined (wie in Abschnitt 37.3.1, Wählen der Anwendungen, die ein Profil erhalten sollen beschrieben) identifiziert eine Liste von Anwendungen, die eventuell ein Profil benötigen, um in einem sicheren Modus abzulaufen.

Führen Sie für jede Anwendung die folgenden Schritte aus, um ein Profil zu erstellen:

  1. Melden Sie sich als root an und lassen Sie AppArmor das Profil der Anwendung grob umreißen, indem Sie aa-genprof Programmname ausführen.

    oder

    Umreißen Sie das grundlegende Profil, indem Sie YaST > Novell AppArmor > Assistent zum Hinzufügen von Profilen ausführen und den vollständigen Pfad der Anwendung angeben, für die ein Profil erstellt werden soll.

    Ein grundlegendes Profil wird umrissen und AppArmor wird in den Lernmodus gebracht, d. h., es protokolliert jede Aktivität des ausgeführten Programms, schränkt es aber noch nicht ein.

  2. Führen Sie die vollständige Palette der Anwendungsaktionen aus, damit AppArmor ein sehr genaues Bild der Aktivitäten ermittelt.

  3. Lassen Sie AppArmor die Protokolldateien analysieren, die in Schritt 2 generiert wurden, indem Sie S in aa-genprof eingeben.

    oder

    Analysieren Sie die Protokolle, indem Sie im Assistenten zum Hinzufügen von Profilen auf Systemprotokoll auf AppArmor-Ereignisse prüfen klicken und den Anweisungen des Assistenten folgen, bis das Profil fertig gestellt ist.

    AppArmor prüft die Protokolle, die während der Ausführung der Anwendung aufgezeichnet wurden, und fordert Sie auf, für jedes protokollierte Ereignis die Zugriffsberechtigungen festzulegen. Legen Sie die Zugriffsberechtigungen für jede Datei fest oder verwenden Sie Platzhalterzeichen.

  4. Abhängig von der Komplexität Ihrer Anwendung müssen Schritt 2 und Schritt 3 eventuell wiederholt werden. Begrenzen Sie die Anwendung, führen Sie sie unter diesen neuen Bedingungen aus und verarbeiten Sie sämtliche neuen Protokollereignisse. Um die ganzen Möglichkeiten einer Anwendung richtig einzugrenzen, müssen Sie diese Vorgehensweise möglicherweise oft wiederholen.

  5. Sobald alle Berechtigungen festgelegt sind, wird Ihr Profil in den Erzwingen-Modus gesetzt. Das Profil wird angewendet und AppArmor schränkt die Anwendung gemäß dem soeben erstellten Profil ein.

    Wenn aa-genprof für eine Anwendung gestartet wurde, die über ein vorhandenes Profil im Meldungsmodus verfügte, bleibt dieses Profil beim Verlassen dieses Lernzyklus im Lernmodus. Weitere Informationen zum Ändern des Modus eines Profils finden Sie unter aa-complain—Entering Complain or Learning Mode, (↑ Novell AppArmor Administration Guide ) und aa-enforce—Entering Enforce Mode, (↑ Novell AppArmor Administration Guide ).

Testen Sie Ihre Profileinstellungen, indem Sie jede benötigte Aufgabe mit der soeben eingeschränkten Anwendung ausführen. Normalerweise funktioniert das eingeschränkte Programm reibungslos und die AppArmor-Aktivitäten verlaufen unbemerkt. Wenn Sie jedoch in Ihrer Anwendung ein gewisses Fehlverhalten erkennen, prüfen Sie anhand der Systemprotokolle, ob AppArmor Ihre Anwendung zu stark einschränkt. Je nachdem, welcher Protokollierungsmechanismus in Ihrem System eingesetzt wird, müssen Sie an mehreren Stellen nach AppArmor-Protokolleinträgen suchen:

/var/log/audit/audit.log

Wenn das Paket audit installiert ist und auditd ausgeführt wird, werden AppArmor-Ereignisse wie folgt protokolliert:

type=APPARMOR_DENIED msg=audit(1210347212.123:18): operation="inode_permission" requested_mask="::w" denied_mask="::w" fsuid=1000 name="/tmp/.X11-unix/X0" pid=9160 profile="/usr/bin/ksmserver
/var/log/messages

Wird auditd nicht verwendet, werden die AppArmor-Ereignisse im Standardsystemprotokoll unter /var/log/messages protokolliert. Ein Beispieleintrag würde wie folgt aussehen:

May  9 17:39:56 neovirt klogd: type=1503 audit(1210347596.146:23): operation="inode_permission" requested_mask="::w" denied_mask="::w" fsuid=1000 name="/tmp/.X11-unix/X0" pid=9347 profile="/usr/bin/ksmserver"
dmesg

Wird auditd nicht ausgeführt, können AppArmor-Ereignisse auch mit dem Befehl dmesg überprüft werden:

type=1503 audit(1210347596.146:23): operation="inode_permission" requested_mask="::w" denied_mask="::w" fsuid=1000 name="/tmp/.X11-unix/X0" pid=9347 profile="/usr/bin/ksmserver"

Analysieren Sie die Protokollmeldungen für diese Anwendung erneut, wie in Schritt 3 beschrieben, um das Profil anzupassen. Bestimmen Sie die Zugriffsberechtigungen oder Einschränkungen, wenn Sie dazu aufgefordert werden.

37.3.3 Konfigurieren von Novell AppArmor-Ereignisbenachrichtigung und -Berichten

Richten Sie eine Ereignisbenachrichtigung in Novell AppArmor ein, damit Sie Sicherheitsereignisse überprüfen können. Ereignisbenachrichtigung ist eine Novell AppArmor-Funktion, die einen angegebenen Email-Empfänger benachrichtigt, wenn im System eine Novell AppArmor-Aktivität unter der gewählten Sicherheitsebene auftritt. Diese Funktion steht derzeit über die YaST-Schnittstelle zur Verfügung.

Zum Einrichten der Ereignisbenachrichtigung in YaST gehen Sie wie folgt vor:

  1. Stellen Sie sicher, dass ein Mailserver auf Ihrem System ausgeführt wird, der die Ereignismitteilungen liefert.

  2. Starten Sie YaST. Wählen Sie dann Novell AppArmor > AppArmor-Kontrollleiste aus.

  3. Wählen Sie unter Sicherheitsereignisbenachrichtigung die Option Konfigurieren aus.

  4. Stellen Sie für jeden Eintragstyp (Knapp, Zusammenfassung und Ausführlich) eine Berichthäufigkeit ein, geben Sie die E-Mail-Adresse ein, an welche die Berichte gesendet werden, und legen Sie den Schweregrad der aufzuzeichnenden Ereignisse fest. Zur Aufnahme von unbekannten Ereignissen in die Ereignisberichte aktivieren Sie Ereignisse mit unbekanntem Schweregrad aufnehmen.

    HINWEIS: Auswahl der zu protokollierenden Ereignisse

    Wenn Sie nicht mit der Ereigniskategorisierung von AppArmor vertraut sind, lassen Sie sich über alle Ereignisse in allen Sicherheitsstufen benachrichtigen.

  5. Schließen Sie dieses Dialogfeld mit OK > Fertig, um Ihre Einstellungen anzuwenden.

Mithilfe von Novell AppArmor-Berichten können Sie wichtige Novell AppArmor-Sicherheitsereignisse nachlesen, die in Protokolldateien aufgezeichnet wurden, ohne mühselig alle Meldungen zu durchsuchen, die nur für das aa-logprof-Werkzeug nützlich sind. Sie können die Größe des Berichts reduzieren, indem Sie nach Datumsbereich oder Programmname filtern.

Gehen Sie zur Konfiguration der AppArmor-Berichte wie folgt vor:

  1. Starten Sie YaST. Wählen Sie Novell AppArmor > AppArmor-Berichte.

  2. Wählen Sie den Berichttyp, den Sie prüfen oder konfigurieren möchten, aus Zusammenfassungsbericht der Ausführungssicherheit, Anwendungsprüfbericht und Sicherheitsereignisbericht.

  3. Bearbeiten Sie die Häufigkeit der Berichtgenerierung, E-Mail-Adresse, Exportformat und Speicherort der Berichte, indem Sie Bearbeiten wählen und die erforderlichen Daten angeben.

  4. Um einen Bericht des ausgewählten Typs zu generieren, klicken Sie auf Jetzt ausführen.

  5. Blättern Sie durch die archivierten Berichte eines bestimmten Typs, indem Sie Archiv anzeigen auswählen und den gewünschten Berichttyp angeben.

    oder

    Löschen Sie nicht mehr benötigte Berichte oder fügen Sie neue Berichte hinzu.

TIPP: Weiterführende Informationen

Weitere Informationen zum Konfigurieren der Ereignisbenachrichtigung in Novell AppArmor finden Sie in Abschnitt 7.2, Configuring Security Event Notification, (↑ Novell AppArmor Administration Guide ). Weitere Informationen zur Berichtkonfiguration finden Sie in Abschnitt 7.3, Configuring Reports, (↑ Novell AppArmor Administration Guide ).

37.3.4 Aktualisieren Ihrer Profile

Software- und Systemkonfigurationen ändern sich im Lauf der Zeit. Daher kann Ihre Profileinstellung für AppArmor gelegentliche Anpassungen erfordern. AppArmor prüft Ihr Systemprotokoll auf Verletzungen der Richtlinien oder andere AppArmor-Ereignisse und ermöglicht es Ihnen, Ihren Profilsatz entsprechend anzupassen. Jedes Anwendungsverhalten, das außerhalb einer Profildefinition liegt, kann auch über den Assistenten zum Aktualisieren von Profilen behandelt werden.

Gehen Sie wie folgt vor, um Ihren Profilsatz zu aktualisieren:

  1. Starten Sie YaST.

  2. Starten Sie in Novell AppArmor den Assistenten > zum Aktualisieren von Profilen.

  3. Passen Sie Zugriffs- oder Ausführungsberechtigungen für jede protokollierte Ressource oder jedes protokollierte ausführbare Programm an, wenn Sie dazu aufgefordert werden.

  4. Beenden Sie YaST, nachdem Sie alle Fragen beantwortet haben. Ihre Änderungen werden auf die jeweiligen Profile angewendet.

TIPP: Weiterführende Informationen

Weitere Informationen zur Aktualisierung Ihrer Profile über die Systemprotokolle finden Sie in Abschnitt 4.5, Updating Profiles from Log Entries, (↑ Novell AppArmor Administration Guide ).