AppArmor Profile für Web Stack: Zusätzliche Sicherheit ohne Chaos

AppArmor ist ein Mandatory Access Control (MAC)-System für Linux, das es ermöglicht, Prozesse gezielt in ihren Berechtigungen zu beschränken. Anders als klassische Unix-Dateirechte definiert AppArmor, welche Dateien, Verzeichnisse, Netzwerkports oder IPC-Objekte ein Prozess nutzen darf. Für Webserver wie Nginx, Apache oder PHP-FPM bietet AppArmor eine zusätzliche Sicherheitsebene, ohne dass die Komplexität unüberschaubar wird. In diesem Tutorial lernen Einsteiger, IT-Studierende und Junior Network Engineers praxisnah, wie AppArmor-Profile für den Web Stack erstellt, getestet und gepflegt werden.

Grundlagen von AppArmor

AppArmor arbeitet mit sogenannten Profilen, die bestimmte Prozesse isolieren. Jedes Profil legt fest, auf welche Ressourcen ein Prozess zugreifen darf. Standardmäßig liefert AppArmor bereits vordefinierte Profile für viele gängige Dienste.

Modi von AppArmor

  • Enforce: Das Profil wird strikt angewendet und blockiert unzulässige Zugriffe.
  • Complain: Verstöße werden protokolliert, aber nicht blockiert. Ideal für Tests.
  • Disabled: Das Profil wird nicht geladen.
sudo aa-status
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

AppArmor-Profile für Webserver verstehen

Profile bestehen aus Pfad- und Rechteangaben. Typische Syntax:

/pfad/zu/datei r,
 /pfad/zu/verzeichnis/** rwk,
 network inet stream,
  • r: lesen
  • w: schreiben
  • x: ausführen
  • k: mmap mit ausführbarem Code
  • network: Zugriff auf Netzwerkprotokolle

Beispiel: Nginx-Standardprofil

/usr/sbin/nginx {
  # Leserechte auf Webinhalte
  /var/www/html/** r,
  # Schreibrechte für Logs
  /var/log/nginx/** rw,
  # Netzwerkzugriff
  network inet stream,
}

Profile aktivieren und testen

Neue oder angepasste Profile müssen in AppArmor geladen werden. Standardmäßig liegen die Profile in /etc/apparmor.d/.

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
sudo systemctl restart apparmor
sudo aa-status

Für Testzwecke kann ein Profil in den Complain-Modus versetzt werden, um zu prüfen, welche Aktionen blockiert würden:

sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

Fehleranalyse mit AppArmor

Wenn ein Webserver durch AppArmor blockiert wird, erscheinen Einträge in /var/log/syslog oder /var/log/kern.log:

tail -f /var/log/syslog | grep DENIED

Ein typisches Problem ist, dass Nginx oder PHP-FPM nicht auf Upload-Verzeichnisse oder temporäre Verzeichnisse zugreifen kann:

Mar  7 12:34:56 server kernel: [12345.678901] audit: type=1400 audit(1678181696.123:456): apparmor="DENIED" operation="open" profile="/usr/sbin/nginx" name="/var/www/html/uploads/file.tmp" pid=1234 comm="nginx" requested_mask="w" denied_mask="w" fsuid=33 ouid=33

Profile anpassen

Um Webserver korrekt zu isolieren, muss das Profil erweitert werden:

# Schreibrechte für Upload-Verzeichnis hinzufügen
/var/www/html/uploads/** rw,
# PHP-Temp-Verzeichnis
/var/lib/php/sessions/** rw,

Nach Änderungen das Profil erneut laden:

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
sudo systemctl reload nginx

Best Practices für Web Stack Profile

  • Profile im Complain-Modus testen, bevor sie enforced werden.
  • Nur notwendige Verzeichnisse für Schreibzugriff freigeben.
  • Logs regelmäßig prüfen, um neue DENIED-Meldungen zu erkennen.
  • Für Multi-Tenant-Umgebungen separate Profile pro Website/Projekt verwenden.
  • Temporäre Änderungen mit aa-complain oder chroot testen, dauerhafte Änderungen in Profilen dokumentieren.

Integration mit Docker

Für containerisierte Webanwendungen können AppArmor-Profile direkt beim Start des Containers gesetzt werden:

docker run --security-opt apparmor=nginx-profile -v /var/www/html:/usr/share/nginx/html:Z nginx

Das :Z sorgt dafür, dass die Volume-Labels korrekt gesetzt werden, sodass der Container nur die erlaubten Pfade nutzen kann.

Audit und Maintenance

Regelmäßige Überprüfung der Logs hilft, neue Anforderungen zu erkennen. Bei wiederkehrenden Problemen können Profile modular angepasst werden:

sudo aa-logprof
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

Audit-Tools wie aa-logprof werten die Logs aus und schlagen Anpassungen der Profile vor.

Zusammenfassung

AppArmor bietet eine zusätzliche Sicherheitsebene für den Web Stack, ohne die Komplexität von SELinux. Durch gezieltes Setzen von Profilen für Nginx, Apache und PHP-FPM lassen sich Webanwendungen sicher betreiben. Die wichtigsten Schritte sind:

  • Profile im Complain-Modus testen
  • Nur notwendige Schreib- und Ausführungsrechte vergeben
  • Netzwerkzugriffe auf erforderliche Ports beschränken
  • Logs regelmäßig prüfen und Profile anpassen
  • Integration mit Containern berücksichtigen

Mit diesem Ansatz bleibt der Web Stack flexibel, performant und sicher – ideal für Einsteiger, IT-Studierende und Junior Network Engineers, die in produktiven Umgebungen arbeiten.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles