Container Security Hardening: Capabilities, seccomp, AppArmor/SELinux

Die Sicherheit von Containern ist ein zentrales Thema, wenn Anwendungen produktiv betrieben werden. Container laufen standardmäßig mit vielen Linux-Funktionen, die in unkontrollierten Szenarien ein Sicherheitsrisiko darstellen können. Ein strukturiertes Hardening umfasst das gezielte Einschränken von Capabilities, die Nutzung von seccomp-Profilen und Mandatory Access Control Mechanismen wie AppArmor oder SELinux. Dieser Leitfaden zeigt praxisnah, wie Sie Container sicher konfigurieren und potenzielle Angriffsflächen minimieren.

1. Linux Capabilities verstehen

Linux teilt traditionelle Root-Rechte in feingranulare Capabilities auf. Container laufen oft mit vielen unnötigen Capabilities, die das System gefährden können.

Wichtige Capabilities

  • CAP_NET_ADMIN: Verwaltung von Netzwerkinterfaces und Routing.
  • CAP_SYS_ADMIN: Zugriff auf Kernel-Subsysteme, Mounts und Namespace-Verwaltung.
  • CAP_SYS_PTRACE: Debugging und Prozess-Inspektion.
  • CAP_MKNOD: Erstellen spezieller Geräte-Dateien.

Capabilities einschränken in Docker Compose

version: "3.8"
services:
  web:
    image: myapp:latest
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE

Hier werden alle Capabilities entfernt und nur NET_BIND_SERVICE wieder erlaubt, um auf Port 80/443 zu binden.

2. Seccomp Profile

Seccomp (Secure Computing Mode) erlaubt es, Systemaufrufe von Containern einzuschränken. Dadurch kann selbst ein kompromittierter Prozess keine kritischen Kernel-Aufrufe ausführen.

Default vs. Custom Profiles

  • default.json: Enthält die Standard-Seccomp-Regeln von Docker.
  • Custom-Profiles: Anpassung je nach Anwendung, z.B. Blocken von clone, ptrace, mount.

Beispiel für Compose

services:
  api:
    image: myapi:latest
    security_opt:
      - seccomp:./seccomp-profile.json

Das Profil definiert, welche Systemaufrufe erlaubt oder blockiert sind.

3. AppArmor

AppArmor nutzt Profile, um Prozesse in Containern auf bestimmte Pfade und Aktionen zu beschränken. Viele Distributionen liefern bereits Docker-spezifische Default-Profile.

Profile aktivieren in Compose

services:
  db:
    image: postgres:latest
    security_opt:
      - apparmor:docker-db-profile
  • Beschränkt den Container auf definierte Dateisystempfade.
  • Verhindert unautorisierte Kernel-Aufrufe.
  • Ideal für produktive Datenbank-Container.

4. SELinux

SELinux bietet Mandatory Access Control auf Kernel-Ebene. Container können eigene SELinux-Tags erhalten, die den Zugriff auf Host-Ressourcen strikt kontrollieren.

Compose Integration

services:
  web:
    image: myapp:latest
    security_opt:
      - label:type:container_t
  • Container erhält ein eigenes SELinux-Label.
  • Beschränkt Zugriff auf Host-Dateisysteme.
  • Kombinierbar mit Capabilities und seccomp für maximale Sicherheit.

5. Best Practices

  • Minimal notwendige Capabilities vergeben, z.B. NET_BIND_SERVICE für Webserver.
  • Seccomp Profile konsequent einsetzen, nicht auf Defaults verlassen.
  • AppArmor oder SELinux aktivieren und spezifische Profile nutzen.
  • Container Images prüfen, nur signierte und auditable Images verwenden.
  • Regelmäßig Sicherheits-Updates auf Host und Container durchführen.
  • Verwendung von Read-Only Filesystemen, wo möglich, kombiniert mit tmpfs für temporäre Daten.
  • Secrets und Configs nur über Docker Mechanismen bereitstellen, niemals im Image hardcoden.

6. Monitoring und Audit

Hardening ist nur wirksam, wenn Änderungen und Verstöße überwacht werden:

  • Audit Logs für AppArmor/SELinux auswerten.
  • Docker Events überwachen:
    docker events --filter event=die
  • Intrusion Detection auf Host-Level einsetzen, z.B. Falco.
  • System Calls mit eBPF oder seccomp-Profilen analysieren.

Fazit

Ein strukturierter Ansatz zum Container Security Hardening kombiniert die Einschränkung von Capabilities, seccomp-Profile sowie AppArmor oder SELinux. Durch diese Maßnahmen werden Containerprozesse stark isoliert, Host-Ressourcen geschützt und Sicherheitsrisiken wie Privilege Escalation oder Container Escape deutlich reduziert. In Kombination mit Monitoring, Audit und minimalen Images entsteht eine robuste und produktionsfähige Container-Infrastruktur.

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