Kapitel 5. Erstellen von Profilen für Ihre Webanwendungen mit ChangeHat Apache

Inhaltsverzeichnis

5.1. Apache ChangeHat
5.2. Apache-Konfiguration für mod-apparmor

Ein Novell® AppArmor-Profil repräsentiert Sicherheitsrichtlinien für eine einzelne Programminstanz oder einen Prozess. Es gilt für ein ausführbares Programm. Wenn aber ein Teil des Programms abweichende Zugriffsberechtigungen benötigt, kann das Programm den „Hat wechseln“, um einen anderen Sicherheitskontext zu verwenden, der sich vom Zugriff auf das Hauptprogramm unterscheidet. Dies wird als Hat oder Unterprofil bezeichnet.

ChangeHat ermöglicht Programmen, innerhalb eines Novell AppArmor-Profils von oder zu einem Hat zu wechseln. Es gibt Ihnen die Möglichkeit, Sicherheit in feineren Abstufungen als dem Prozess zu definieren.

Diese Funktion setzt voraus, dass „Changehat“ jeder Anwendung "bekannt" ist, d. h., die Anwendung wird so geändert, dass sie eine Anforderung an das Novell AppArmor-Modul sendet, zu beliebigen Zeitpunkten während der Anwendungsausführung die Sicherheitsdomäne zu wechseln.

Ein Profil kann eine beliebige Anzahl an Unterprofilen enthalten, aber es gibt nur zwei Ebenen: Ein Unterprofil kann keine weiteren Unterprofile besitzen. Ein Unterprofil wird als separates Profil geschrieben und erhält denselben Namen wie das übergeordnete Profil, gefolgt von einem ^ und dann dem Unterprofilnamen. Unterprofile müssen in derselben Datei gespeichert werden wie ihr übergeordnetes Profil.

[Note]Anmerkung

Weitere Informationen finden Sie auf der Manualpage change_hat.

5.1. Apache ChangeHat

Novell AppArmor stellt ein mod-apparmor-Modul für das Apache-Programm bereit. Das mod-apparmor-Modul sorgt auf Ihrem SUSE Linux dafür, dass der Apache-Webserver „ChangeHat-fähig“ wird. Es wird installiert, wenn sich Apache auf Ihrem System befindet.

Wenn Apache ChangeHat-fähig ist, prüft es in der angegebenen Reihenfolge für jede empfangene URI-Anforderung, ob die folgenden benutzerdefinierten Novell AppArmor-Sicherheitsprofile vorhanden sind.

  • URI-spezifischer Hat (z. B. ^phpsysinfo-dev/templates/classic/images/bar_left.gif)

  • DEFAULT_URI

  • HANDLING_UNTRUSTED_INPUT

Wenn auf Ihrem System das erforderliche Apache 2 vorhanden ist, wird das mod-apparmor-Modul automatisch mit Novell AppArmor installiert und der Apache-Konfiguration hinzugefügt. Apache 1.3 wird nicht unterstützt.

[Note]Anmerkung

Wenn Sie mod-apparmor ohne Novell AppArmor installieren, müssen Sie sicherstellen, dass die Konfigurationsdatei des Apache-Lademoduls einen Befehl enthält, der das mod-apparmor-Modul lädt, indem Sie Ihrer Apache-Konfigurationsdatei die folgende Zeile hinzufügen:

LoadModule change_hat_module modules/mod_change_hat.so

5.1.1. Werkzeuge zur Verwaltung von ChangeHat-fähigen Anwendungen

Wie bei den meisten Novell AppArmor-Werkzeugen stehen Ihnen zwei Methoden zur Verwaltung von ChangeHat zur Verfügung: YaST oder die Befehlszeilenschnittstelle. ChangeHat-fähige Anwendungen lassen sich an der Befehlszeile viel flexibler verwalten, aber der Prozess ist auch komplizierter. Beide Methoden gestatten Ihnen, die Hats für Ihre Anwendung zu verwalten und sie mit Profileinträgen zu füllen.

Die folgenden Schritte zeigen Ihnen, wie einem Apache-Profil mithilfe von YaST Hats hinzugefügt werden. Im Assistenten zum Hinzufügen von Profilen werden Sie durch die Novell AppArmor-Profil-Dienstprogramme aufgefordert, neue Hats für einzelne URI-Anforderungen zu erstellen. Wenn Sie sich für die Erstellung eines neuen Hats entscheiden, können Sie individuelle Profile für jeden URI erstellen. Damit lassen sich sehr strenge Regeln für jede Anforderung festlegen.

Wenn der verarbeitete URI keine wichtige Verarbeitung bzw. kein wesentliches Sicherheitsrisiko bedeutet, können Sie einfach Use Default Hat (Standard-Hat verwenden) wählen, um diesen URI im Standard-Hat zu verwenden, der das Standard-Sicherheitsprofil darstellt.

In der Demo erstellen wir einen neuen Hat für den URI phpsysinfo-dev und seine darauf folgenden Zugriffe. Mithilfe der Dienstprogramme zur Profilerstellung legen wir fest, was diesem neuen Hat hinzugefügt wird. Der resultierende Hat wird zu einem Hochsicherheits-Container, der sämtliche Verarbeitung auf dem Server beinhaltet, die bei der Übergabe des phpsysinfo-dev-URI an den Apache-Webserver stattfindet.

In dieser Demo erzeugen wir ein Profil für die Anwendung phpsysinfo (siehe http://phpsysinfo.sourceforge.net für weitere Informationen). Es wird angenommen, dass das phpsysinfo-dev-Paket unter /srv/www/htdocs/phpsysinfo-dev/ in einer sauberen (neuen) Installation von Novell AppArmor installiert wird.

  1. Sobald phpsysinfo-dev installiert ist, können Sie dem Apache-Profil Hats hinzufügen. Starten Sie den Assistenten zum Aktualisieren von Profilen in der Novell AppArmor-Benutzeroberfläche.

    Assistent zum Hinzufügen von Profilen
  2. Geben Sie in Profile to Add (Neues Profil) den Text httpd2-prefork ein.

  3. Klicken Sie auf Profil erstellen. Das Fenster des AppArmor-Profilassistenten wird geöffnet.

    AppArmor-Profilassistent
  4. Starten Sie Apache neu, indem Sie rcapache2 restart in ein Terminalfenster eingeben.

    [Note]Anmerkung

    Starten Sie jetzt jedes Programm neu, für das Sie gerade Profile erstellen.

  5. Öffnen Sie http://localhost/phpsysinfo-dev/ in einem Webbrowserfenster. Das Browserfenster sollte Netzwerkauslastung und Systeminformationen anzeigen.

    [Note]Anmerkung

    Damit sichergestellt ist, dass der Server diese Anforderung verarbeitet und Sie keine Cache-Daten in Ihrem Browser sehen, sollten Sie die Seite aktualisieren. Klicken Sie dazu im Browser auf die Schaltfläche Aktualisieren, um sicherzustellen, dass Apache die Anforderung für den phpsysinfo-dev-URI verarbeitet.

  6. Klicken Sie auf Scan System Log for Entries to Add to Profiles (Systemlog auf Einträge für Profile prüfen). Novell AppArmor startet das logprof-Werkzeug, das alle Informationen scannt, die im vorherigen Schritt erfasst wurden. Es beginnt, Ihnen Profilfragen zu stellen.

  7. In unserer Demo bittet uns logprof um die Entscheidung zwischen Add Requested Hat (Angeforderten Hat hinzufügen) und Use Default Hat (Standard-Hat verwenden), da es bemerkt hat, dass phpsysinfo-dev auf einen URI zugegriffen hat. Wählen Sie Add Requested Hat (Angeforderten Hat hinzufügen).

    AppArmor-Profilassistent: Add requested hat (Angeforderten Hat hinzufügen)
  8. Klicken Sie auf Allow (Erlauben).

    Durch die Wahl von Add Requested Hat (Angeforderten Hat hinzufügen) im vorherigen Schritt wird ein neuer Hat im Profil erstellt und festgelegt, dass folgende Fragen über die Aktionen des Skripts im neu erstellten Hat und nicht im Standard-Hat für diese Anwendung hinzugefügt werden.

    Im nächsten Fenster zeigt Novell AppArmor ein externes Programm an, das vom Skript ausgeführt wurde. Sie können festlegen, dass die Ausführung des Programms durch den phpsysinfo-dev-Hat (Inherit (Erben) wählen) oder durch ein separates Profil (Profil wählen) eingeschränkt werden oder uneingeschränkt bzw. ohne Sicherheitsprofil (Unconfined (Uneingeschränkt) erfolgen soll. Nach Wahl der Option Profil wird für das Programm ein neues Profil erstellt, sofern noch keines existiert.

    [Note]Anmerkung

    Die Option Unconfined (Uneingeschränkt) kann eine erhebliche Sicherheitslücke verursachen und sollte mit Umsicht verwendet werden.

    AppArmor-Profilassistent: Inherit (Erben)
    1. Wählen Sie Inherit (Erben) für den Pfad /bin/bash. Dadurch wird /bin/bash/ (auf das Apache zugreift) dem phpsysinfo-dev-Hat-Profil mit den erforderlichen Berechtigungen hinzugefügt.

    2. Klicken Sie auf Allow (Erlauben).

  9. Die weiteren Fragen fordern Sie zur Erstellung neuer Hats und zum Hinzufügen von Einträgen zu Ihrem Profil und dessen Hats auf. Das Hinzufügen von Einträgen zu Profilen wird detailliert im Abschnitt Abschnitt 3.3.1, „Hinzufügen eines Profils mit dem Assistenten“ (↑ Novell AppArmor 2.0-Administrationshandbuch ) beschrieben.

    Klicken Sie nach der Beantwortung aller Profilfragen auf Finish (Beenden), um Ihre Änderungen zu speichern und den Assistenten zu beenden.

Dies ist ein Beispiel für einen phpsyinfo-dev-Hat:

Beispiel 5.1. Beispiel für phpsysinfo-dev-Hat

  ^phpsysinfo {
  #include <program-chunks/base-files>
    /bin/df                               ix,
    /bin/bash                             ix,
    /dev/tty                              rw,
    /etc/SuSE-release                     r,
    /etc/fstab                            r,
    /etc/hosts                            r,
    /etc/mtab                             r,
    /proc/**                              r,
    /sbin/lspci                           ix,
    /srv/www/htdocs/sysinfo/**            r,
    /sys/bus/pci/devices                  r,
    /sys/devices/**                       r,
    /usr/bin/who                          ix,
    /usr/share/pci.ids                    r,
    /var/log/apache2/{access,error}_log   w,
    /var/run/utmp                         r,
  }
[Note]Anmerkung

Das Profil ^phpsysinfo-dev ist nur im Kontext eines Prozesses gültig, der unter dem übergeordneten Profil httpd2-prefork abläuft.

5.1.2. Hinzufügen von Hats und Einträgen in Hats

Wenn Sie das Dialogfeld Profil bearbeiten verwenden (Anleitungen siehe unter Abschnitt 3.3.3, „Bearbeiten eines Profils“ (↑ Novell AppArmor 2.0-Administrationshandbuch )) oder über Novell AppArmor-Profil manuell hinzufügen (Anleitungen siehe unter Abschnitt 3.3.2, „Manuelles Hinzufügen eines Profils“ (↑ Novell AppArmor 2.0-Administrationshandbuch )) ein neues Profil hinzufügen, erhalten Sie die Option, Ihren Novell AppArmor-Profilen Hats (Unterprofile) hinzuzufügen.

Sie können ein ChangeHat-Unterprofil über das Fenster AppArmor-Profildialog hinzufügen.

AppArmor-Profildialog
  1. Klicken Sie im Fenster AppArmor-Profile Dialog auf Add Entry (Eintrag hinzufügen) und wählen Sie dann Hat. Das Dialogfeld Enter Hat Name (Hat-Namen eingeben) wird geöffnet:

    Enter hat name (Hat-Namen eingeben)
  2. Geben Sie den Namen des Hats ein, der dem Novell AppArmor-Profil hinzugefügt werden soll. Der Name ist der URI, der beim Zugriff die im Hat festgelegten Berechtigungen erhält.

  3. Klicken Sie auf Create Hat (Hat erstellen). Sie kehren in das Fenster AppArmor-Profildialog zurück.

  4. Nachdem Sie den neuen Hat hinzugefügt haben, klicken Sie auf Fertig.

[Note]Anmerkung

Ein Beispiel für ein Novell AppArmor-Profil finden Sie unter Beispiel 5.1, „Beispiel für phpsysinfo-dev-Hat“ (↑ Novell AppArmor 2.0-Administrationshandbuch ).