Apache2 mit AppArmor from the Scratch
Zur Navigation springen
Zur Suche springen
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.
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.