5.2. Apache-Konfiguration für mod-apparmor

Apache wird durch die Angabe von Direktiven in Klartext-Konfigurationsdateien konfiguriert. Die Hauptkonfigurationsdatei ist gewöhnlich httpd.conf. Wenn Sie Apache kompilieren, können Sie den Speicherort dieser Datei angeben. Direktiven können in beliebige dieser Konfigurationsdateien gesetzt werden, um das Verhalten von Apache zu ändern. Wenn Sie die Hauptkonfigurationsdateien ändern, müssen Sie Apache starten bzw. neu starten, damit die Änderungen in Kraft treten.

5.2.1. Direktiven für den virtuellen Host

Direktiven für den virtuellen Host steuern, ob Anforderungen mit Pfadnameninformationen, die einem tatsächlichen Dateinamen (oder einer nicht existenten Datei in einem bestehenden Verzeichnis) nachgestellt sind, akzeptiert oder abgelehnt werden. Informationen über Apache-Dokumentation zu Direktiven für virtuelle Hosts finden Sie unter http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost

Das für change_hat spezifische Konfigurationsschlüsselwort lautet ImmDefaultHatName und wird ähnlich zu ImmHatName verwendet, z. B. ImmDefaultHatName My_Funky_Default_Hat.

Die Konfigurationsoption basiert im Prinzip auf einer Server-Direktive, mit deren Hilfe Sie das Schlüsselwort außerhalb anderer Optionen nutzen und damit für den Standardserver festlegen können. Virtuelle Hosts werden Apache-intern als separate „Server“ betrachtet, Sie können also einen Standard-Hat-Namen für den Standardserver festlegen sowie bei Bedarf einen für jeden virtuellen Host.

Die folgenden Schritte zeigen die Reihenfolge, in der mod-apparmor beim Eingang einer Anforderung versucht, Hats anzuwenden.

  1. Ein Speicherort- oder Verzeichnis-Hat, wie im Schlüsselwort ImmHatName angegeben.

  2. Ein Hat, der durch den vollständigen URI-Pfad angegeben wird.

  3. Ein Standardserver-Hat, wie im Schlüsselwort ImmDefaultHatName angegeben.

  4. DEFAULT_URI (und falls keiner von diesen existiert, erfolgt die Rückkehr zum „übergeordneten“ Apache-Hat).

5.2.2. Speicherort- und Verzeichnis-Direktiven

Speicherort- und Verzeichnis-Direktiven geben Hat-Namen in der Programmkonfigurationsdatei an, damit das Programm den Hat für seine Sicherheit aufruft. Für Apache finden Sie Dokumentation über Speicherort- und Verzeichnis-Direktiven unter http://httpd.apache.org/docs-2.0/sections.html.

Das nachstehende Beispiel einer location-Direktive legt fest, dass mod-apparmor für einen bestimmten Speicherort einen bestimmten Hat verwenden soll:

<Location /foo/>
      ImmHatName MY_HAT_NAME
</Location>

Hier wird versucht, MY_HAT_NAME für jeden URI anzuwenden, der mit /foo/ (/foo/, /foo/bar, /foo/cgi/path/beliebig/beliebig usw.) beginnt.

Die directory-Direktive gleicht der location-Direktive mit der Ausnahme, dass sie sich auf einen Pfadnamen im Dateisystem bezieht, wie in folgendem Beispiel:

 
<Directory "/srv/www/www.immunix.com/docs"> # Fehlenden nachgestellten Schrägstrich beachten 
      ImmHatName immunix.com 
</Directory>

Beispiel:  Das Programm phpsysinfo wird verwendet, um eine location-Direktive in folgendem Beispiel zu illustrieren. Der Tarball kann von http://phpsysinfo.sourceforge.com heruntergeladen werden.

  1. Installieren Sie den Tarball nach dem Herunterladen in /srv/www/htdocs/sysinfo/.

  2. Erstellen Sie /etc/apache2/conf.d/sysinfo.conf und fügen Sie den folgenden Text hinzu:

    <Location "/sysinfo">
              ImmHatName sysinfo
    </Location>

    Der folgende Hat sollte dann für phpsyinfo funktionieren:

       ^sysinfo {
      #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,
      }
    
  3. Laden Sie Novell AppArmor-Profile neu, indem Sie rcapparmor restart als root an einem Terminalfenster eingeben.

  4. Starten Sie Apache neu, indem Sie rcapache2 restart in ein Terminalfenster eingeben, während Sie als root angemeldet sind.

  5. Geben Sie http://hostname/sysinfo/ in einen Browser ein, um die Systeminformationen zu empfangen, die phpsysinfo liefert.

  6. Ermitteln Sie Konfigurationsfehler, indem Sie zu /var/log/syslog wechseln oder dmesg ausführen und etwaige Ablehnungen in der Ausgabe suchen.