linux-suse-opensuse security apparmor selinux mac hardening sles

AppArmor vs. SELinux on SUSE (Artikel 145)

Analyse der Security-Module unter SUSE. Erfahren Sie, warum AppArmor der SUSE-Standard ist, wie es sich von SELinux unterscheidet und wie Sie Profile professionell verwalten.

# Security Modules on SUSE: AppArmor im Fokus

TL;DR / Management Summary Jede moderne Linux-Distribution braucht ein Mandatory Access Control (MAC) System. Während Red Hat auf das komplexe SELinux setzt, ist SUSE die Heimat von AppArmor. AppArmor ist pfadbasiert, deutlich einfacher zu administrieren und für 99% aller Enterprise-Szenarien absolut ausreichend. In diesem Modul lernen wir, wie wir AppArmor-Profile via YaST verwalten und was zu beachten ist, falls ein Kunde explizit SELinux auf einem SLES-Server fordert.


# 1. Einführung & Architektur

Warum SUSE AppArmor liebt.

AppArmor schützt das System, indem es Programmen nur den Zugriff auf Dateien erlaubt, die explizit in ihrem Profil (/etc/apparmor.d/) stehen.

# Der Vergleich (Mermaid)

graph TD
    A[Process Execution] --> B{Kernel MAC Check}
    B -->|SUSE Default| C[AppArmor: Path-based]
    B -->|RHEL Default / Option| D[SELinux: Label-based]
    C --> E[Easy to Read: /var/log/nginx/ r]
    D --> F[Complex: system_u:object_r:httpd_log_t:s0]
    E --> G[Allow or Complain]
    F --> H[Allow or Enforce]

# 2. AppArmor Management mit YaST

Die visuelle Profil-Verwaltung.

Starten Sie das Modul: sudo yast2 apparmor.

# Kern-Funktionen

  1. AppArmor Control Panel: Aktivieren/Deaktivieren des gesamten Systems.
  2. Add Profile Wizard: Erstellt ein Profil für eine neue Applikation, indem es deren Verhalten beobachtet (Learning Mode).
  3. Edit Profile: Erlaubt das manuelle Hinzufügen von Berechtigungen (z.B. Lesezugriff auf einen neuen Datenpfad).

# 3. Profile-Modi verstehen

Testen ohne zu blockieren.

Ein Profil kann in zwei Modi laufen:

  • Enforce: Blockiert jeden unerlaubten Zugriff (Standard für Systemdienste).
  • Complain: Erlaubt den Zugriff, schreibt aber eine Warnung ins Log (Ideal für die Entwicklung).
# In den Test-Modus schalten
sudo aa-complain /usr/sbin/nginx

# In den Schutz-Modus schalten
sudo aa-enforce /usr/sbin/nginx

# 4. Day-2 Operations: SELinux auf SUSE?

Der Weg für Exoten.

SLES unterstützt SELinux technisch, aber es ist nicht der “Happy Path”. Viele Standard-YaST Module sind nicht für SELinux optimiert.

# Wenn Sie wechseln müssen:

  1. AppArmor deaktivieren: systemctl disable --now apparmor.
  2. SELinux Pakete installieren: zypper install selinux-policy-targeted.
  3. Boot-Parameter anpassen: security=selinux selinux=1.
  4. Achtung: Ein Full-Relabeling des Dateisystems ist nötig!

# 5. Troubleshooting & “War Stories”

Wenn die Sicherheit im Weg steht.

# Story 1: “Das leere Logfile”

Symptom: Eine Applikation kann nicht in ihr Log schreiben, obwohl die Unix-Rechte (chmod) stimmen. AppArmor ist aktiv, aber im Audit-Log steht nichts. Ursache: AppArmor-Profile können deny Regeln enthalten, die das Logging unterdrücken (quiet deny). Lösung: Nutzen Sie aa-notify -s 1 -v, um versteckte Blockaden in Echtzeit zu sehen.

# Story 2: “Learning Mode Fail”

Symptom: Ein Admin nutzt den “Add Profile Wizard”, um ein Profil für ein Backup-Skript zu bauen. Das Skript greift aber je nach Wochentag auf unterschiedliche Pfade zu. Ursache: Der Learning-Mode erfasst nur das, was während der Aufzeichnung passiert. Lösung: Nutzen Sie Wildcards im Profil (/var/backup/* r), anstatt jede Datei einzeln aufzunehmen.


# 6. Fazit & Empfehlung

  • Standard: Bleiben Sie bei AppArmor. Es ist tief in SLES integriert und deutlich wartungsfreundlicher als SELinux.
  • Sicherheit: Ein Dienst ohne AppArmor-Profil ist ein Sicherheitsrisiko. Nutzen Sie den YaST-Wizard, um für Ihre eigenen Skripte Profile zu erstellen.
  • Monitoring: Überwachen Sie /var/log/audit/audit.log auf AppArmor-Events.

# Anhang: Cheatsheet

Aufgabe SUSE / CLI Befehl
Status-Übersicht aa-status
Profil-Modus Complain aa-complain <pfad>
Profil-Modus Enforce aa-enforce <pfad>
Profile neu laden systemctl reload apparmor
Event-Analyse aa-logprof
Neues Profil starten aa-genprof <pfad>
AppArmor GUI yast2 apparmor
Kernel Check cat /sys/kernel/security/apparmor/profiles