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…“)
 
 
Zeile 1: Zeile 1:
 
=Grundlegendes Profil=
 
=Grundlegendes Profil=
 
= AppArmor-Profil für Apache =
 
= AppArmor-Profil für Apache =
 
+
*Dieses AppArmor-Profil gibt dem Apache-Webserver die grundlegenden Zugriffsrechte, die er benötigt, um ordnungsgemäß zu funktionieren.  
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 ==
 
== Erklärung des Profils ==
 
 
<pre>
 
<pre>
 
#include &lt;tunables/global&gt;
 
#include &lt;tunables/global&gt;
Zeile 34: Zeile 31:
  
 
== Erläuterung der einzelnen Zeilen ==
 
== Erläuterung der einzelnen Zeilen ==
 
 
'''#include &lt;tunables/global&gt;'''
 
'''#include &lt;tunables/global&gt;'''
 
* Dies bindet globale Variablen und Pfade ein, die in der Datei <code>/etc/apparmor.d/tunables/global</code> definiert sind. Dies ist eine nützliche Voreinstellung für AppArmor-Profile, um Standardpfade wie <code>/home</code> oder <code>/tmp</code> einzuschließen.
 
* Dies bindet globale Variablen und Pfade ein, die in der Datei <code>/etc/apparmor.d/tunables/global</code> definiert sind. Dies ist eine nützliche Voreinstellung für AppArmor-Profile, um Standardpfade wie <code>/home</code> oder <code>/tmp</code> einzuschließen.
 
 
'''/usr/sbin/apache2 mr,'''
 
'''/usr/sbin/apache2 mr,'''
 
* '''mr''' gibt Apache das Recht, die Binärdatei selbst zu lesen ('''r''') und auszuführen ('''m''' für execute).
 
* '''mr''' gibt Apache das Recht, die Binärdatei selbst zu lesen ('''r''') und auszuführen ('''m''' für execute).
 
 
'''/etc/apache2/** r,'''
 
'''/etc/apache2/** r,'''
 
* Dies erlaubt Apache den Lesezugriff auf alle Apache-Konfigurationsdateien im Verzeichnis <code>/etc/apache2</code>.
 
* Dies erlaubt Apache den Lesezugriff auf alle Apache-Konfigurationsdateien im Verzeichnis <code>/etc/apache2</code>.
 
 
'''/var/www/** rwk,'''
 
'''/var/www/** rwk,'''
 
* '''rwk''' erlaubt Apache den Zugriff auf das Webroot-Verzeichnis <code>/var/www</code>. Apache kann Dateien lesen ('''r'''), schreiben ('''w''') und neue Dateien oder Verzeichnisse erstellen oder löschen ('''k''' für "lock").
 
* '''rwk''' erlaubt Apache den Zugriff auf das Webroot-Verzeichnis <code>/var/www</code>. Apache kann Dateien lesen ('''r'''), schreiben ('''w''') und neue Dateien oder Verzeichnisse erstellen oder löschen ('''k''' für "lock").
 
 
'''/var/log/apache2/** rw,'''
 
'''/var/log/apache2/** rw,'''
 
* Dies erlaubt Apache den Lese- und Schreibzugriff auf seine Protokolldateien im Verzeichnis <code>/var/log/apache2</code>.
 
* Dies erlaubt Apache den Lese- und Schreibzugriff auf seine Protokolldateien im Verzeichnis <code>/var/log/apache2</code>.
 
 
'''/lib/** rm, /lib64/** rm, /usr/lib/** rm,'''
 
'''/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.
 
* 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,'''
 
'''network inet stream,'''
 
* Dies erlaubt Apache den Netzwerkzugriff auf Internet-Sockets (IPv4/IPv6).
 
* Dies erlaubt Apache den Netzwerkzugriff auf Internet-Sockets (IPv4/IPv6).
 
 
== Erweiterte Überlegungen ==
 
== 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.
 
* '''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.
 
* '''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 <code>/tmp</code> oder andere spezifizierte Pfade hinzufügen.
 
* '''Uploads und temporäre Dateien''': Wenn Apache Uploads verarbeitet oder temporäre Dateien speichert, solltest du die notwendigen Zugriffsrechte für Verzeichnisse wie <code>/tmp</code> oder andere spezifizierte Pfade hinzufügen.
 
 
== Fazit ==
 
== Fazit ==
 
+
*Dieses Basisprofil sollte die grundlegenden Zugriffsrechte für einen Apache-Webserver bereitstellen.  
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.
+
*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.

Aktuelle Version vom 10. Oktober 2024, 18:21 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.