Apparmor Apache2: Unterschied zwischen den Versionen
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