AppArmor Profile für Compose: Service-spezifische Policies

AppArmor ist ein Mandatory Access Control (MAC) System unter Linux, das Prozesse restriktiv auf Dateisystem-, Netzwerk- und IPC-Zugriffe beschränkt. Für Container ermöglicht AppArmor die Definition von Service-spezifischen Policies, um die Angriffsfläche zu minimieren und potenziell gefährliche Aktionen zu verhindern. In Kombination mit Docker Compose können so differenzierte Sicherheitsprofile pro Service eingesetzt werden, ohne den gesamten Host global zu beeinflussen.

1. Grundlagen von AppArmor

AppArmor arbeitet auf Profilbasis und erlaubt das Setzen von Zugriffsrechten für ausführbare Dateien. Jeder Prozess wird einem Profil zugewiesen, das die erlaubten Operationen definiert. Standardmäßig kann Docker das „docker-default“-Profil verwenden, eigene Profile ermöglichen jedoch eine granularere Kontrolle.

Funktionsweise

  • AppArmor überwacht Systemaufrufe und Dateizugriffe von Prozessen.
  • Profile können Aktionen wie Lesen, Schreiben, Ausführen oder Netzwerkkonnektivität einschränken.
  • Verletzungen der Profile werden geloggt und können als Warnung oder Kill-Regel konfiguriert werden.

2. Ein eigenes AppArmor-Profil erstellen

AppArmor-Profile werden in Textdateien definiert. Ein Basisprofil besteht aus:

  • Profile-Name
  • Pfadangaben der auszuführenden Binaries
  • Regeln für Dateien, Verzeichnisse, Sockets und Netzwerkzugriffe

Beispielprofil für einen Webservice

profile my-webapp flags=(attach_disconnected) {
  # Allow read-only access to /app
  /app/** r,

Allow writing to /app/data

/app/data/** rw,

Allow networking

network inet stream,

Deny everything else

deny /** w,
}

Dieses Profil erlaubt dem Service nur den Zugriff auf die App-Daten und Netzwerkzugriffe, alles andere wird blockiert.

3. Nutzung von AppArmor-Profilen in Docker Compose

In Docker Compose kann ein AppArmor-Profil einem Service über die `security_opt`-Option zugewiesen werden:

version: "3.8"
services:
  web:
    image: my-webapp:latest
    security_opt:
      - apparmor:my-webapp

Damit verwendet der Container ausschließlich die im Profil definierten Berechtigungen, unabhängig von anderen Containern oder Host-Standards.

Praktische Hinweise

  • Das Profil muss auf dem Host geladen sein (`sudo apparmor_parser -r my-webapp`).
  • Fehler in Regeln führen dazu, dass Container nicht starten oder unerwartet blockiert werden.
  • Testen Sie das Profil zuerst in einer isolierten Umgebung.

4. Logging und Troubleshooting

AppArmor protokolliert Verstöße gegen das Profil über `dmesg` oder Syslog (`/var/log/kern.log`).

Beispiele für Log-Analyse

sudo dmesg | grep DENIED
sudo journalctl -k | grep apparmor

Analysieren Sie die Logs, um zu erkennen, welche Aktionen vom Profil blockiert werden, und passen Sie die Regeln entsprechend an.

5. Best Practices für Compose-Stacks

  • Erstellen Sie für jeden Service ein separates Profil, um Least-Privilege zu gewährleisten.
  • Vermeiden Sie generische Profile, die zu viele Rechte gewähren.
  • Nutzen Sie read-only Root-Filesysteme zusätzlich, um unerwünschte Modifikationen zu verhindern.
  • Testen Sie Profile mit allen Service-Operationen, inkl. Start, Update und Backup.
  • Dokumentieren Sie die Regeln pro Service, um Änderungen im Team nachzuvollziehen.

6. Kombination mit weiteren Security-Maßnahmen

AppArmor kann effektiv mit Seccomp und Capability-Drop kombiniert werden:

  • security_opt: für Seccomp-Profile
  • cap_drop: für nicht benötigte Linux-Capabilities
  • Readonly Root-Filesystem für zusätzliche Härtung

Durch diese Kombination entsteht eine mehrschichtige Sicherheitsarchitektur, die Container umfassend schützt.

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