Apparmor Apache2
Version vom 24. Juni 2025, 16:41 Uhr von Thomas.will (Diskussion | Beiträge)
Absicherung eines Apache2-Webservers mit AppArmor auf Debian
Ziel
- Reduzierung der Angriffsfläche durch Zugriffsbeschränkungen auf Dateisystemebene.
- Der Apache2-Prozess darf nur auf explizit erlaubte Dateien und Verzeichnisse zugreifen.
- Schutz vor Webshells, ungewolltem Zugriff auf /etc/, /root/, etc.
Voraussetzungen
- Debian 12 oder aktuelles Ubuntu-System mit Apache2
- root-Zugriff
Installation der AppArmor-Werkzeuge
- apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
AppArmor-Status prüfen
- systemctl status apparmor
- aa-status | grep apache2
Funktionsfähiges Apache2-Profil erstellen
- nano /etc/apparmor.d/usr.sbin.apache2
#include <tunables/global>
profile /usr/sbin/apache2 flags=(complain) {
/usr/sbin/apache2 mr,
/etc/apache2/** r,
/var/www/ r,
/var/www/** r,
/run/apache2/** rw,
/var/log/apache2/** rw,
/tmp/** rw,
/dev/null rw,
/dev/log w,
/usr/share/zoneinfo/** r,
/etc/passwd r,
/etc/group r,
/etc/host.conf r,
/etc/nsswitch.conf r,
/etc/resolv.conf r,
/lib/** mr,
/usr/lib/** mr,
/lib64/** mr,
/usr/lib64/** mr,
/lib/x86_64-linux-gnu/ld-*.so mr,
network inet stream,
network inet6 stream,
network inet dgram,
network inet6 dgram,
network netlink raw,
capability net_bind_service,
capability setuid,
capability setgid,
capability sys_chroot,
}
Profil aktivieren (zunächst im Lernmodus)
- apparmor_parser -r /etc/apparmor.d/usr.sbin.apache2
- aa-complain /etc/apparmor.d/usr.sbin.apache2
- systemctl restart apache2
Traffic erzeugen und Log beobachten
- Im Browser verschiedene Seiten und Funktionen der Website aufrufen
- journalctl -xe | grep DENIED
Profil anpassen und verfeinern
- aa-logprof
- Empfohlene Regeln prüfen und anwenden
Profil in Durchsetzungsmodus setzen
- aa-enforce /etc/apparmor.d/usr.sbin.apache2
- systemctl restart apache2
Beispiel: Zugriff auf benutzerdefiniertes Webroot erlauben
Füge im Profil hinzu, wenn z. B. /srv/www genutzt wird:
/srv/www/ r, /srv/www/** r,
Beispiel: Schreibzugriffe auf Upload-Verzeichnis erlauben
/var/www/html/uploads/ rw, /var/www/html/uploads/** rw,
Fehlersuche
- journalctl -xe | grep DENIED
- aa-logprof
- aa-status
Hinweis
- Das Paket libapache2-mod-apparmor ist veraltet und nicht notwendig.
- AppArmor-Module im Apache selbst müssen nicht aktiviert werden.
Abschluss
- aa-enforce /etc/apparmor.d/usr.sbin.apache2
- systemctl restart apache2
- Funktion der Website vollständig prüfen