Apparmor Apache2: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 11: Zeile 11:
 
=Gucken ob apache2 Dinge tut die, die er nicht darf=
 
=Gucken ob apache2 Dinge tut die, die er nicht darf=
 
*aa-logprof
 
*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

Version vom 24. Juni 2025, 10:41 Uhr

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