Apache2 mit Apparmor from the Scratch
Grundlegendes Profil
AppArmor-Profil für Apache
Dieses AppArmor-Profil gibt dem Apache-Webserver die grundlegenden Zugriffsrechte, die er benötigt, um ordnungsgemäß zu funktionieren. Nachfolgend wird das Profil erläutert und einige Erweiterungen für spezielle Anforderungen beschrieben.
Erklärung des Profils
#include <tunables/global>
/usr/sbin/apache2 {
# Apache benötigt diese Rechte, um korrekt zu funktionieren
# Zugriff auf Binärdateien
/usr/sbin/apache2 mr,
# Zugriff auf Konfigurationsdateien
/etc/apache2/** r,
# Zugriff auf Web-Verzeichnisse
/var/www/** rwk,
# Protokollverzeichnis
/var/log/apache2/** rw,
# Zugriff auf gemeinsam genutzte Bibliotheken
/lib/** rm,
/lib64/** rm,
/usr/lib/** rm,
# Netzwerkzugriff erlauben
network inet stream,
}
Erläuterung der einzelnen Zeilen
#include <tunables/global>
- Dies bindet globale Variablen und Pfade ein, die in der Datei
/etc/apparmor.d/tunables/globaldefiniert sind. Dies ist eine nützliche Voreinstellung für AppArmor-Profile, um Standardpfade wie/homeoder/tmpeinzuschließen.
/usr/sbin/apache2 mr,
- mr gibt Apache das Recht, die Binärdatei selbst zu lesen (r) und auszuführen (m für execute).
/etc/apache2/** r,
- Dies erlaubt Apache den Lesezugriff auf alle Apache-Konfigurationsdateien im Verzeichnis
/etc/apache2.
/var/www/** rwk,
- rwk erlaubt Apache den Zugriff auf das Webroot-Verzeichnis
/var/www. Apache kann Dateien lesen (r), schreiben (w) und neue Dateien oder Verzeichnisse erstellen oder löschen (k für "lock").
/var/log/apache2/** rw,
- Dies erlaubt Apache den Lese- und Schreibzugriff auf seine Protokolldateien im Verzeichnis
/var/log/apache2.
/lib/** rm, /lib64/** rm, /usr/lib/** rm,
- Diese Einträge erlauben Apache das Lesen (r) und Ausführen (m) von gemeinsam genutzten Bibliotheken, die typischerweise für die Ausführung benötigt werden.
network inet stream,
- Dies erlaubt Apache den Netzwerkzugriff auf Internet-Sockets (IPv4/IPv6).
Erweiterte Überlegungen
- Erweiterte Konfigurationen: Wenn du zusätzliche Apache-Module oder spezifische Erweiterungen (wie PHP-FPM oder mod_perl) verwendest, musst du das Profil möglicherweise erweitern, um diesen Modulen die erforderlichen Zugriffsrechte zu gewähren.
- Datenbankzugriff: Falls Apache auf eine Datenbank zugreifen muss, könnte zusätzlicher Netzwerkzugriff erforderlich sein, insbesondere für Datenbank-Sockets oder Ports.
- Uploads und temporäre Dateien: Wenn Apache Uploads verarbeitet oder temporäre Dateien speichert, solltest du die notwendigen Zugriffsrechte für Verzeichnisse wie
/tmpoder andere spezifizierte Pfade hinzufügen.
Fazit
Dieses Basisprofil sollte die grundlegenden Zugriffsrechte für einen Apache-Webserver bereitstellen. Je nach spezifischer Serverkonfiguration und zusätzlichen Anforderungen (wie Datenbanken, Module oder Uploads) müssen eventuell zusätzliche Zugriffsrechte in das Profil aufgenommen werden. Teste die volle Funktionalität des Servers, um sicherzustellen, dass AppArmor keine kritischen Zugriffe blockiert.