Apparmor Apache2

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Die apparmor-utils sollten installiert sein

  • apt-get install apparmor-utils

Installation dem Apache2 Modules

  • apt install libapache2-mod-apparmor

Aktivieren des Moduls

  • aa-enforce /etc/apparmor.d/usr.sbin.apache2

Konfiguration von Apache2

  • a2enmod mpm_prefork
  • a2enmod apparmor
  • systemctl restart apache2

Gucken ob apache2 Dinge tut die, die er nicht darf

  • aa-logprof

Absicherung eines Apache2-Webservers mit AppArmor auf Debian

Ziel

  • Minimierung der Angriffsfläche durch strikte Zugriffskontrolle.
  • Nur explizit erlaubte Dateien, Verzeichnisse und Aktionen für den Apache-Prozess.
  • Schutz vor Webshells, Directory Traversal und unautorisierten Zugriffen.

Voraussetzungen

  • Debian-basiertes System (z. B. Debian 12, Ubuntu)
  • Apache2 ist installiert und läuft
  • AppArmor ist aktiv (Standard auf Debian)

Status prüfen

  • Läuft AppArmor?*
systemctl status apparmor
  • Ist das Apache-Profil geladen?*
aa-status | grep apache2

AppArmor-Profil für Apache2 aktivieren

  • Standardpfad des Profils prüfen (meist bereits vorhanden):*
ls /etc/apparmor.d/usr.sbin.apache2
  • Profil aktivieren:*
ln -s /etc/apparmor.d/usr.sbin.apache2 /etc/apparmor.d/force-complain/usr.sbin.apache2
aa-enforce /etc/apparmor.d/usr.sbin.apache2

AppArmor in den Audit-Log-Modus versetzen (zum Anlernen)

  • In complain mode wechseln:*
aa-complain /etc/apparmor.d/usr.sbin.apache2
  • Apache-Dienst neu starten:*
systemctl restart apache2
  • Webseite besuchen, damit Zugriffe geloggt werden.*

Profil erweitern/lernen

  • Log prüfen und Profilvorschläge generieren:*
aa-logprof
  • Einträge durchgehen, sinnvolle Zugriffe erlauben, alles andere ablehnen.*

Zurück in den Enforce-Modus wechseln

  • Nach dem Anlernen wieder aktiv schalten:*
aa-enforce /etc/apparmor.d/usr.sbin.apache2

Beispiel: Zugriff auf /srv/www erlauben

  • Wenn du das Webroot geändert hast (z. B. auf /srv/www), musst du das Profil anpassen:*
nano /etc/apparmor.d/usr.sbin.apache2
  • Ergänzen:*
/srv/www/ r,
/srv/www/** r,

Tuning: Schreibzugriffe nur auf spezielle Verzeichnisse erlauben

  • Beispiel für Uploads:*
/var/www/html/uploads/ rw,
/var/www/html/uploads/** rw,

Testen

  • AppArmor-Modus anzeigen:*
aa-status
  • Fehlermeldungen prüfen:*
journalctl -xe | grep DENIED

Apache neu starten

  • Nach jeder Profiländerung:*
systemctl restart apache2