4.4. Einschränken von Berechtigungen mit AppArmor

Viele Sicherheitsrisiken resultieren aus Fehlern in vertrauenswürdigen Programmen. Ein vertrauenswürdiges Programm läuft mit einer Berechtigung, die ein Angreifer gerne hätte. Das Programm kann dieses Vertrauen nicht rechtfertigen, wenn ein Fehler dem Angreifer erlaubt, sich diese Berechtigung zu verschaffen.

Novell® AppArmor ist eine Lösung für Anwendungssicherheit, die insbesondere konzipiert wurde, um verdächtige Programme auf die geringste Berechtigungsstufe einzuschränken. Mit AppArmor kann der Administrator den Bereich der Aktivitäten angeben, die das Programm ausführen darf, indem er ein Sicherheitsprofil für diese Anwendung entwickelt — d. h. eine Liste der Dateien, auf die das Programm zugreifen darf, und der Operationen, die das Programm ausführen darf.

Für die wirksame Immunisierung eines Computersystems muss die Anzahl der Programme minimiert werden, die Berechtigungen vermitteln. Dann müssen die Programme so gut wie möglich abgesichert werden. Mit Novell AppArmor brauchen Sie für die Programme, die in Ihrer Umgebung Angriffen ausgesetzt sind, nur Profile zu erstellen und verringern damit den Aufwand für die Immunisierung Ihres Computers erheblich. AppArmor-Profile erzwingen die Einhaltung von Richtlinien und stellen damit sicher, dass Programme ihre Aufgaben erfüllen und keine anderen Aktionen ausführen.

Administratoren müssen sich nur um die Anwendungen kümmern, die durch Angriffe gefährdet sind, und Profile für diese Anwendungen anlegen. Die Immunisierung eines Systems besteht im Wesentlichen aus dem Erstellen und Pflegen des AppArmor-Profilsatzes und der Überwachung aller Richtlinienverstöße oder Ausnahmen, die durch die Protokollfunktion von AppArmor aufgezeichnet werden.

Die Erstellung von AppArmor-Profilen zur Einschränkung einer Anwendung ist sehr bequem und einfach. AppArmor wird mit mehreren Werkzeugen geliefert, die Sie bei der Profilerstellung unterstützen. AppArmor verlangt keine Programmierung oder den Einsatz von Skripts. Als einzige Aufgabe muss der Administrator eine strenge Zugriffsrichtlinie und Ausführungsberechtigungen für jede Anwendung festlegen, die immunisiert werden muss.

Aktualisierungen oder Änderungen der Anwendungsprofile sind nur erforderlich, wenn sich die Softwarekonfiguration oder der gewünschte Aktionsumfang ändert. AppArmor bietet einfach zu handhabende Werkzeuge für Profilaktualisierungen oder -änderungen.

Benutzer bemerken AppArmor gar nicht. Es läuft „im Hintergrund“ und erfordert keinerlei Benutzereingriffe. Die Leistung wird durch AppArmor nicht merklich eingeschränkt. Wenn eine Aktivität der Anwendung nicht durch ein AppArmor-Profil abgedeckt ist oder durch AppArmor verhindert wird, muss der Administrator das Profil dieser Anwendung für die entsprechende Verhaltensweise anpassen.

Diese Anleitung umreißt die grundlegenden Aufgaben, die mit AppArmor ausgeführt werden müssen, um ein System wirksam zu schützen. Ausführlichere Informationen finden Sie im Novell AppArmor 2.0-Administrationshandbuch.

4.4.1. Installation von Novell AppArmor

Benutzer, die eine GNOME- oder die KDE-Desktop-Auswahl installieren, können diesen Abschnitt überspringen, da Novell AppArmor standardmäßig als Teil dieser Optionen installiert wird.

Wenn keine dieser Desktop-Optionen installiert oder sogar eine vollständig textbasierte Umgebung geplant ist, führen Sie mithilfe des YaST-Paket-Managers die folgenden Schritte aus, um die erforderlichen Pakete zu installieren.

  1. Melden Sie sich als root an und starten Sie YaST.

  2. Wählen Sie im YaST-Kontrollzentrum Software+Software-Management.

  3. Verwenden Sie die Suchfunktion von YaST (Schlüsselwort „AppArmor“), um die folgenden Pakete zu installieren:

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. Wählen Sie alle diese Pakete für die Installation aus und wählen Sie dann Übernehmen. YaST löst etwaige Abhängigkeiten auf und installiert alle Pakete automatisch.

  5. Nachdem YaST die Systemkonfiguration aktualisiert hat, wählen Sie Beenden, um den Paket-Manager zu beenden.

4.4.2. Aktivieren von Novell AppArmor

Nachdem Novell AppArmor installiert wurde, müssen Sie es explizit aktivieren, um sicherzustellen, dass es bei jedem Systemstart gestartet wird. Verwenden Sie für diese Aufgabe die YaST-Systemdienste (Runlevel):

  1. Melden Sie sich als root an und starten Sie YaST.

  2. Starten Sie System+Systemdienste (Runlevel).

  3. Wählen Sie in der Diensteliste apparmor aus. Siehe Abbildung 4.3, „Aktivieren von Novell AppArmor mithilfe von YaST“.

  4. Klicken Sie zur permanenten Aktivierung von AppArmor auf Aktivieren.

  5. Klicken Sie zum Übernehmen der Einstellungen auf Beenden.

Abbildung 4.3. Aktivieren von Novell AppArmor mithilfe von YaST

Aktivieren von Novell AppArmor mithilfe von YaST

Mithilfe des YaST-Runlevel-Werkzeugs aktivieren Sie Dienste permanent – diese Einstellungen bleiben auch einen Neustart Ihres Systems in Kraft. Um AppArmor temporär – nur für die Dauer einer Sitzung – zu aktivieren, gehen Sie wie folgt vor:

  1. Melden Sie sich als root an und starten Sie YaST.

  2. Starten Sie Novell AppArmor+AppArmor-Kontrollleiste.

  3. Setzen Sie den AppArmor-Status auf AppArmor ist aktiviert, indem Sie auf Konfigurieren+Aktivieren+OK klicken.

  4. Übernehmen Sie die Einstellungen mit Fertig.

4.4.3. Einführung in die Erstellung von Anwendungsprofilen

Bereiten Sie einen erfolgreichen Einsatz von Novell AppArmor auf Ihrem System vor, indem Sie die folgenden Punkte genau beachten:

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

  2. Erstellen Sie die erforderlichen Profile wie in Abschnitt 4.4.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. Informationen finden Sie in Abschnitt 4.4.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. Informationen finden Sie in Abschnitt 4.4.3.4, „Aktualisieren Ihrer Profile“.

4.4.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) haben offene Netzwerkports und Netzwerkagenten sind Serverprogramme, die auf diese Netzwerkports reagieren. Benutzerclients (wie Mail-Clients und Webbrowser) haben ebenfalls offene Netzwerkports und vermitteln Berechtigungen.

Webanwendungen

CGI-Skripts in Perl, PHP-Seiten und komplexere Webanwendungen können durch einen Webbrowser aufgerufen werden.

Cron-Jobs

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 unconfined als root aus.

Beispiel 4.1. Ausgabe von 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.

[Tip]Weitere Informationen

Weitere Informationen über die Wahl der richtigen Anwendungen für ein Profil finden Sie im Kapitel Wählen von Programmen zur Immunisierung (Novell AppArmor 2.0-Administrationshandbuch).

4.4.3.2. Erstellen und Ändern von Profilen

Novell AppArmor unter SUSE Linux wird mit einem vorkonfigurierten Satz an Profilen für die wichtigsten Anwendungen geliefert. Zusätzlich können Sie mit AppArmor Ihre eigenen Profile für eine Gruppe von Anwendungen festlegen, die in /etc/apparmor/README.profiles definiert sind.

Es gibt zwei verschiedene Möglichkeiten, Profile zu verwalten. Die eine besteht in der Verwendung des grafischen Frontend der YaST Novell AppArmor-Module, bei der anderen werden die Befehlszeilenwerkzeuge genutzt, die in der AppArmor-Suite zur Verfügung stehen. Beide Methoden arbeiten grundsätzlich auf dieselbe Weise.

Die Ausführung von unconfined (wie in Abschnitt 4.4.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 genprof programmname ausführen.

    Oder:

    Führen Sie den YaST+Novell AppArmor+-Assistenten zum Hinzufügen von Profilen aus und geben Sie den vollständigen Pfad der Anwendung an, 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. Geben Sie dazu S in genprof ein

    Oder:

    Klicken Sie auf Scan system log for AppArmor events (Systemprotokoll auf AppArmor-Ereignisse prüfen) im Assistenten zum Hinzufügen von Profilen und folgen Sie den Anweisungen des Assistenten, 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 Platzhalter.

  4. Sobald alle Berechtigungen festgelegt sind, wird Ihr Profil in den Erzwingen-Modus gesetzt. Das Profil wird angewendet und AppArmor beschränkt die Anwendung entsprechend dem soeben erstellten Profil.

    Wenn 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 über das Ändern des Modus für ein Profil finden Sie im Abschnitt Meldungs- oder Lernmodus (Kapitel 3, Erstellen von Novell AppArmor-Profilen, Novell AppArmor 2.0-Administrationshandbuch) und im Abschnitt Erzwingen-Modus (Kapitel 3, Erstellen von Novell AppArmor-Profilen, Novell AppArmor 2.0-Administrationshandbuch).

Testen Sie Ihre Profileinstellungen, indem Sie jede benötigte Aufgabe mit der soeben eingeschränkten Anwendung ausführen. Normalerweise läuft das eingeschränkte Programm reibungslos und Sie bemerken überhaupt keine AppArmor-Aktivitäten. Wenn Sie jedoch in Ihrer Anwendung ein gewisses Fehlverhalten erkennen, prüfen Sie anhand der Systemprotokolle, ob AppArmor Ihre Anwendung zu stark einschränkt. Suchen Sie die entsprechenden Protokolle in /var/log/messages oder führen Sie dmesg aus.

Jeder Eintrag, der dem folgenden Beispiel gleicht, deutet darauf hin, dass AppArmor Ihre Anwendung zu stark einschränkt:

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

Um das Profil anzupassen, führen Sie erneut den Assistenten zum Hinzufügen von Profilen aus wie oben beschrieben und lassen Sie ihn die Protokolleinträge für diese spezielle Anwendung analysieren. Bestimmen Sie die Zugriffsberechtigungen oder Einschränkungen, wenn YaST Sie dazu auffordert.

[Tip]Weitere Informationen

Weitere Informationen über die Erstellung und Änderung von Profilen finden Sie im Kapitel Erstellen von Novell AppArmor-Profilen (Novell AppArmor 2.0 Administrationshandbuch) .

4.4.3.3. Konfigurieren von Novell AppArmor-Ereignisbenachrichtigung und -Berichten

Richten Sie Ereignisbenachrichtigung in Novell AppArmor ein, damit Sie Sicherheitsereignisse überprüfen können. Ereignisbenachrichtigung ist eine Novell AppArmor-Funktion, die einen angegebenen E-Mail-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. Melden Sie sich als root an und starten Sie YaST. Wählen Sie anschließend Novell AppArmor+AppArmor-Kontrollleiste.

  3. Wählen Sie im Bereich Sicherheitsereignisbenachrichtigung aktivieren die Option Konfigurieren.

  4. Stellen Sie für jeden Eintragstyp (Terse (Knapp), Zusammenfassung und Verbose (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. Wenn Sie unbekannte Ereignisse in die Ereignisberichte aufnehmen möchten, aktivieren Sie Ereignisse mit unbekanntem Schweregrad aufnehmen.

    [Note]Anmerkung

    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+Beenden, um Ihre Einstellungen anzuwenden.

Konfigurieren Sie Novell AppArmor-Berichte. Mithilfe von Berichten können Sie wichtige Novell AppArmor-Sicherheitsereignisse nachlesen, die in Protokolldateien aufgezeichnet wurden, ohne mühselig alle Meldungen durchsuchen zu müssen, die nur für das 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. Melden Sie sich als root an und 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 (SIR).

  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.

[Tip]Weitere Informationen

Weitere Informationen über das Konfigurieren der Ereignisbenachrichtigung in Novell AppArmor finden Sie im Abschnitt „Einrichten der Ereignisbenachrichtigung“ (Kapitel 4, Verwalten von Anwendungen mit Profil, Novell AppArmor 2.0-Administrationshandbuch). Weitere Informationen über die Berichtkonfiguration finden Sie im Abschnitt „Berichte“ (Kapitel 4, Verwalten von Anwendungen mit Profil, Novell AppArmor 2.0-Administrationshandbuch).

4.4.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 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. Melden Sie sich als root an und starten Sie YaST.

  2. Starten Sie den Novell AppArmor+-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.

[Tip]Weitere Informationen

Weitere Informationen über das Aktualisieren Ihrer Profile aus den Systemprotokollen finden Sie im Abschnitt „Aktualisieren von Profilen aus Syslog-Einträgen“ (Kapitel 3, Erstellen von Novell AppArmor-Profilen, Novell AppArmor 2.0-Administrationshandbuch).