Apparmor Apache2
Version vom 24. Juni 2025, 10:41 Uhr von Thomas.will (Diskussion | Beiträge) (→Gucken ob apache2 Dinge tut die, die er nicht darf)
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