Apache2 mit AppArmor from the Scratch: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Grundlegendes Profil= = AppArmor-Profil für Apache = *Dieses AppArmor-Profil gibt dem Apache-Webserver die grundlegenden Zugriffsrechte, die er benötigt, um…“)
 
(kein Unterschied)

Aktuelle Version vom 10. Oktober 2024, 18:39 Uhr

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/global definiert sind. Dies ist eine nützliche Voreinstellung für AppArmor-Profile, um Standardpfade wie /home oder /tmp einzuschließ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 /tmp oder 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.