Steve Young - Fotolia

SELinux vs. AppArmor: Vergleich der Linux-Sicherheitssysteme

Mit SELinux oder AppArmor schützen Sie Linux-Server. Prüfen Sie aber die Unterschiede: AppArmor ist benutzerfreundlicher, bietet Administratoren aber nicht so viel Kontrolle.

Linux ist ein sicheres Betriebssystem. Der Linux-Kernel selbst hat mehrere Sicherheitssysteme integriert, um Desktops und Server zu schützen.

Es gibt zwei Subsysteme, die speziell entwickelt wurden, um für die Sicherheit solcher Systeme zu sorgen. Security-Enhanced Linux (SELinux) und AppArmor sorgen beide für eine Isolation zwischen Anwendungen. Das schränkt den Angriffsvektor ein, mit dem sich ein Hacker Zugang zu einem System verschaffen könnte. Obwohl beide Systeme das gleiche Ziel verfolgen, funktionieren sie auf unterschiedliche Weise.

Unterschiede zwischen AppArmor und SELinux

Bestimmte Linux-Distributionen verwenden per Standard entweder AppArmor oder SELinux. RHEL, Rocky Linux, AlmaLinux, CentOS Stream und Fedora nutzen alle SELinux. Auf der anderen Seite setzen Ubuntu, Debian, SUSE Linux Enterprise Server, openSUSE und die meisten der Ubuntu/Debian-Derivate auf AppArmor.

Administratoren können SELinux auf Ubuntu/Debian-basierte Distributionen installieren. Es wird aber davon abgeraten, AppArmor auf RHEL-basierte Distributionen zu installieren. SELinux ist nicht nur auf RHEL-basierte Distributionen beschränkt.

Die Nutzung von SELinux ist schwieriger als die von AppArmor. Allerdings bedeutet mehr Komplexität auch wesentlich mehr Kontrolle, wie Prozesse (also Anwendungen) isoliert werden. Weil SELinux so komplex ist, deaktivieren es einige Administratoren, wenn sie sich damit nicht auskennen. Dann ist ein System verwundbar.

AppArmor lässt sich viel einfacher erlernen und nutzen. Deswegen wird es selten, wenn überhaupt deaktiviert. Aus diesem Grund wird AppArmor oftmals als sicherer angesehen. Benötigen Administratoren allerdings mehr Kontrolle, sollten sie SELinux nutzen.

SELinux definiert Zugriffskontrollen für Anwendungen, Prozesse und Dateien auf einem System mit Sicherheitsrichtlinien. Diese Richtlinien bestimmen, worauf Benutzer zugreifen dürfen und worauf nicht. Ist für einen Prozess, eine Anwendung oder ein Verzeichnis keine Richtlinie definiert, verbietet SELinux den Zugriff darauf. Das System ist im Kernel des Systems integriert.

AppArmor nutzt Profile, um festzustellen, welche Dateien und Rechte eine Anwendung benötigt. Jedes System nutzt gewisse Funktionen unterschiedlich.

Zugriffskontrolle

SELinux verwendet Sicherheitsrichtlinien anhand von Dateibezeichnungen. AppArmor nutzt hingegen Richtlinien, die auf Pfaden basieren.

AppArmor bietet Mandatory Access Control, die die herkömmliche Zugangskontrolle ergänzt.

MLS/MCS

Multilevel Security (MLS) ist ein Sicherheitsschema, das das obligatorische Bell-LaPadula-Zugriffsmodell durchsetzt. Bell-LaPadula definiert Benutzer und Prozesse als Subjekte. Dateien, Geräte und andere Komponenten werden als Objekte bezeichnet. Sowohl Subjekten als auch Objekten wird eine Sicherheitsstufe zugewiesen. Sie bestimmt die Freigabe eines Subjekts oder die Klassifizierung eines Objekts.

Multicategory Security (MCS) verwendet hingegen Kategorien, die Objekten zugeordnet und Subjekten zugewiesen werden. Mit MCS sollte SELinux benutzerfreundlicher werden. Anwender sollten damit die Möglichkeit bekommen, zu kategorisieren, ohne den Schwierigkeitsgrad für Systemadministratoren zu erhöhen.

SELinux verwendet sowohl MLS als auch MCS. AppArmor nutzt hingegen weder noch.

Komponenten

SELinux besteht aus einigen Schlüsselkomponenten, inklusive:

  • Subjekt, etwa einen Prozess.
  • Access Vector Cache, ein Cache mit Berechtigungen.
  • Security Server als das Herzstück von SELinux.
  • SELinux Policy Database, enthält Sicherheitsrichtlinien.
  • Objekte, etwa Dateien, Sockets, Pipes oder Netzwerkschnittstellen.
  • Kernel-Modul, das Modul, das SELinux ermöglicht.

AppArmor nutzt einige Schlüsselkomponenten, wie die nachfolgenden:

  • Server Analyzer scannt Ports und achtet darauf, welche Anwendungen horchen. Die Komponente erkennt auch, wenn eine Anwendung kein Profil hat und ob der Server sie einschränken muss.
  • Profile Generator analysiert eine Anwendung, um eine Vorlage für ein Profil zu erzeugen.
  • Optimizer protokolliert und sammelt Ereignisse.

Regeln für Richtlinien und Kontrollstufen

Es gibt zwei SELinux-Richtlinien, die für ein System verfügbar sind:

  1. Targeted ist die Standardrichtlinie, die die Zugriffskontrolle für einen bestimmten Prozess festlegt. Jeder Prozess wird in einer limitierten Domain ausgeführt, um den Zugriff des Prozesses auf Dateien drastisch einzuschränken.
  2. MLS.

SELinux enthält auch drei Modi:

  1. Enforcing ist der Standard-Modus und setzt die geladene Sicherheitsrichtlinie im gesamten System durch.
  2. Permissive protokolliert sämtliche Aktivitäten, verbietet allerdings keine Aktivität.
  3. Disabled bezeichnet, wenn SELinux auf einem System deaktiviert ist.

AppArmor arbeitet mit zwei Richtlinienarten in einem Profil:

  1. Paths bestimmen, auf welche Dateien eine App oder ein Prozess zugreifen kann.
  2. Capabilities legen die Rechte fest, die ein eingeschränkter Prozess nutzen kann.

Es gibt zwei Modi für AppArmor:

  1. Enforce bedeutet, dass die Richtlinie durchgesetzt wird.
  2. Complain besagt, dass Verletzungen der Richtlinie nur protokolliert werden.

Vorteile und Nachteile von AppArmor

Der größte Vorteil von AppArmor ist die einfache Nutzung. Das ist häufig ein Grund, warum Administratoren zu Ubuntu-basierten Distributionen greifen und nicht zu einer RHEL-basierten Distribution. AppArmor bietet vielleicht nicht die Kontrolle wie SELinux, aber es ist benutzerfreundlicher.

Wegen dieser Einfachheit ist AppArmor nicht annähernd so flexibel wie SELinux. Hinzu kommt, dass SELinux mehr Kontrollebenen als AppArmor bietet.

Ein weiterer Nachteil von AppArmor ist, dass es die Startzeit eines Betriebssystems erhöht. SELinux tut das nicht.

Feature SELinux AppArmor
Zugriffskontrolle Nutzt Sicherheitsrichtlinien, die auf Dateibezeichnungen basieren. Nutzt Sicherheitsrichtlinien, die auf Pfaden basieren.
MLS/MCS Nutzt sowohl MLS als auch MCS. Nutzt weder MLS noch MCS.
Richtlinien und Kontrollebenen Bietet mehr Flexibilität bei den Richtlinien. Bietet weniger Flexibilität bei den Richtlinien.
Benutzerfreundlichkeit SELinux hat eine anspruchsvollere Lernphase als AppArmor. Die Lernphase ist einfacher und kürzer als bei SELinux.
Distributionen Für die meisten Distributionen verfügbar. Hauptsächlich bei den Distributionen SUSE und Ubuntu/Debian zu finden.

Vorteile und Nachteile von SELinux

Der größte Vorteil von SELinux ist seine Flexibilität. SELinux gilt allgemein auch als sicherer, weil es mit MLS kompatibel ist.

Allerdings ist die Einarbeitung in SELinux auch aufwendiger. Es sind nicht nur die Kommandozeilen-Tools herausfordernd, sondern auch das Debugging der Fehlermeldungen ist häufig schwierig. Auf einem SELinux-Rechner können selbst einfache Aufgaben wie das Aufrufen von Websites aus Nicht-Standard-Verzeichnissen eine Herausforderung sein. Daher ist SELinux für neue Administratoren möglicherweise frustrierend.

SELinux vs. AppArmor: Realitätscheck

AppArmor eignet sich am besten für Administratoren, die ständig Probleme binnen Minuten lösen müssen. Andererseits kann die Behebung von Problemen bei SELinux Stunden und manchmal Tage dauern.

Allerdings lassen sich Maschinen mit SELinux schwieriger hacken. Der Autor dieses Artikels hat hingegen selbst schon eine Ubuntu-Server-Distribution mit AppArmor gesehen, auf der sich ein rootkit befand.

Für ein Höchstmaß an Sicherheit nehmen Sie eine SELinux-basierte Distribution. Möchten Sie eine Distribution, deren Sicherheitssystem Angreifer und nicht Administratoren ausbremst, wählen Sie eine Distribution mit AppArmor.

Erfahren Sie mehr über Serverbetriebssysteme