Hierfür wurde das Modul mod_apparmor für den Apache 2.0 geschaffen. Wird dieses Modul von dem Apache 2.0 geladen, so versucht der Apache 2.0 Webserver für jede URI (z.B. /webapp/index.php) in ein entsprechendes Subprofil zu wechseln. Existiert kein Subprofil mit dem Namen, verwendet der Apache das Subprofil mit dem Namen DEFAULT_URI. Die Erzeugung eines derartigen Profils wurde in 9.6 beschrieben.
Jedoch gibt es auch die Möglichkeit, ein Subprofil mit einem beliebigen Namen zu erzeugen und dieses für bestimmte Teile im Webserver zu aktivieren. Hierzu stellt das Modul mod_apparmor zwei Optionen zur Verfügung: AAHatName und AADefaultHatName. Bei älteren Versionen heissen diese beiden Optionen ImmHatName und ImmDefaultHatName.
Mit der Option AADefaultHatName können Sie ein Default-Subprofil definieren. Dieses kann für jeden virtuellen Host und den eigentlichen Apache-Server unterschiedlich konfiguriert werden. Jeder virtuelle Host kann also ein eigenes Default-Subprofil besitzen. Existiert das angegebene Subprofil nicht, verhält sich der Apache so, als ob die Direktive nicht gesetzt sei. Das bedeutet, er sucht zunächst nach einem Profil entsprechend der URI des Zugriffes und verwendet, falls auch ein derartiges nicht existiert, das Subprofil DEFAULT_URI.
Das mit dem Parameter AADefaultHatName gewählte Subprofil kann dann mit dem Parameter AAHatName überschrieben werden. Damit können Sie für bestimmte Bereiche innerhalb des DocumentRoot des Web-Server oder des virtuellen Hosts vom AADefaultHatName abweichende Subprofile aktivieren. Der Apache Web-Server bietet hierfür die Parameter Location und Directory. Wenn Sie den Ort als absoluten Pfad im Linux-Verzeichnisbaum angeben möchten, verwenden Sie die Option Directory. Falls Sie den Ort in Abhängigkeit der URL angeben möchten, nutzen Sie Location. Normalerweise verwenden Sie diese Optionen, um den Zugriff auf einen bestimmten Bereich zu beschränken. Eine typische Konfiguration sieht folgendermaßen aus:
<Directory /srv/www/htdocs/webapp> Order Allow,Deny Allow from All Deny from 192.168.0.0/24 Options None </Directory> <Location /server-status> SetHandler server-status Order Allow,Deny Allow from 10.0.0.5 </Location>Achtung. Das mod_apparmor-Modul ist nicht in der Lage Vermischungen der Directory- und Location-Direktiven sauber aufzulösen. Daher sollten Sie in Ihrer Konfiguration entweder nur Directory oder Location verwenden.
Um die Funktion in dem Beispiel aus dem Abschnitt 9.6 zu sehen, stoppen Sie den Apache und
AppArmor. Editieren Sie anschließend das AppArmor-Profil für den Apache
(/etc/apparmor.d/usr.sbin.httpd2-prefork) und benennen Sie das in
9.6 erzeugte Subprofil um
in ^info. Damit nun dieses Profil geladen wird, erzeugen Sie in dem
Verzeichnis /etc/httpd2/conf.d eine neue Datei sysinfo.conf. Alle
Dateien mit der Endung .conf in diesem Verzeichnis werden von dem Apache
automatisch bei seinem Start geladen. Tragen Sie die folgenden Zeilen in dieser
Datei ein:
<Directory /srv/www/htdocs/phpsysinfo> AAHatName info # Aeltere Versionen benoetigen ImmHatName info </Directory>Starten Sie AppArmor und den Apache neu und prüfen Sie die Funktion.
Interessant ist insbesondere die Anwendung von AppArmor in einem Shared-Hosting-Umfeld. Eine typische Anwendung wird in 13.3 besprochen.
Die mit den Parametern AAHatName und AADefaultHatName gewählten Hats haben Vorrang vor allen weiteren Hats. Wird ein entsprechender
Hat nicht gefunden, oder sind die Parameter nicht gesetzt, prüft AppArmor, ob
ein Hat ^URI existiert. Ist dieser nicht vorhanden, nutzt AppArmor
^DEFAULT_URI. Fehlt auch dieser Hat wird das globale Apache-Profil genutzt.
Ralf Spenneberg 2007-11-13