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
- AppArmor Control Panel: Aktivieren/Deaktivieren des gesamten Systems.
- Add Profile Wizard: Erstellt ein Profil für eine neue Applikation, indem es deren Verhalten beobachtet (Learning Mode).
- 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:
- AppArmor deaktivieren:
systemctl disable --now apparmor. - SELinux Pakete installieren:
zypper install selinux-policy-targeted. - Boot-Parameter anpassen:
security=selinux selinux=1. - 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.logauf 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 |