SELinux vs AppArmor: Was sind die Unterschiede und welche sollten Sie verwenden?

SELinux (kurz für Security Enhanced Linux) ist ein Sicherheitsmodul des Linux-Kernels, das verwendet wird, um die Sicherheit in Linux-Distributionen zu erhöhen, indem der Zugriff auf Dateien und Prozesse gehärtet wird. Ein weiteres ähnliches Sicherheitsmodul des Linux-Kernels ist AppArmor. Das Interesse an diesen beiden Modulen ist groß, da sie sich in ihren Funktionen zur Zugriffskontrolle für Linux-Betriebssysteme überschneiden. Dieser Artikel behandelt die Unterschiede zwischen SELinux und AppArmor und ermöglicht es den Benutzern, zu bestimmen, welches dieser Module am besten zu ihren Bedürfnissen passt, indem Funktionen und Benutzerfreundlichkeit verglichen werden.
Inhaltsverzeichnis
- Was ist SELinux?
- SELinux-Betrieb und -Befehle
- Was ist AppArmor?
- Benutzerfreundlichkeit zwischen SELinux und AppArmor
- Häufig gestellte Fragen
Ebenfalls lesen: 5 beste Linux-Libre-Distributionen für bessere Sicherheit
Was ist SELinux?
Die Sicherung von Servern mit SELinux beseitigt die Abhängigkeit von DAC-Stil-Zugriff, der auf tatsächlichen Systembenutzern und -rollen basiert. Stattdessen wird ein System mit drei Zeichenfolgen für jeden Prozess oder Systembenutzer eingeführt. Die drei Zeichenfolgen, nämlich Benutzername, Rolle und Domäne, ermöglichen mehr Flexibilität und Kontrolle über den Systemzugriff.
Ein Prozess kann nur in einer bestimmten Domäne durch die Richtlinienkonfiguration in SELinux erlaubt werden. Die einzige Ausnahme besteht darin, wenn ein Prozess in einen ausdrücklich definierten Kontext über den Befehl runcon gestartet wird. Wenn jedoch widersprüchliche Richtlinien für einen solchen Prozess bereits in der Konfiguration vorhanden sind, kann SELinux einen solchen Übergang in einen anderen Kontext ablehnen. Das stellt sicher, dass SELinux nach dem Prinzip der standardmäßigen Ablehnung funktioniert. Jeder Prozess oder Benutzer muss eine ausdrückliche Zugriffs-Konfiguration für eine Datei oder Systemressource haben, bevor er darauf zugreifen kann.
SELinux-Betrieb und -Befehle
Als Erweiterung der üblichen Dienstprogramme im Terminal bietet SELinux den Schalter -Z, der die Anzeige des Sicherheitskontexts der Dateien und Prozesse ermöglicht. Befehle wie ps und ls profitieren von diesem Schalter zur schnellen Fehlersuche oder Identifizierung von Konfigurationsfehlern. Unten ist ein Screenshot des ls-Befehls zu sehen.
ls-Z
Der erste Teil jeder Ausgabzeile ist die Domäne, der zweite ist der Typ des Objekts und der dritte ist der Benutzername in der SELinux-Konfiguration. Auf diese Weise kann SELinux die vollständige Kontrolle über den Zugriff auf jede Datei und jeden Prozess bieten. Die folgenden Befehle werden verwendet, um den Kontext von Dateien und Verzeichnissen zu manipulieren.
| Befehl | Verwendung |
|---|---|
| chcon -t | Ändern Sie den Kontext einer Ziel-Datei |
| chcon -R | Ändern Sie den Kontext eines Zielverzeichnisses (diese Änderung ist rekursiv) |
| restorecon -v | Stellen Sie den Kontext einer Datei auf den Standard zurück |
| restorecon -v -R | Stellen Sie den Kontext eines Verzeichnisses auf den Standard zurück (diese Änderung ist rekursiv) |
| semanage fcontext -a -t | Setzen Sie den Standardkontext eines Verzeichnisses auf das, was die REGEX auswertet |
Zum Beispiel, wenn der Kontext aller Dateien im Verzeichnis “/srv/web” auf “httpd_sys_content_t” geändert werden soll, kann der folgende Befehl verwendet werden:
sudo semanage fcontext -a -t httpd_sys_content_t “/srv/web(/.*)”
Da dieser Kontext, der im Screenshot zu sehen ist, bereits rekursiv für das Verzeichnis “/srv/web” definiert ist, zeigt SELinux eine Nachricht an, um den Benutzer zu informieren. Wenn es nicht definiert ist, zeigt eine erfolgreiche semanage-Operation keine Ausgabe.
Systemadministratoren und Benutzer können SELinux aktivieren, deaktivieren oder zulassen, indem sie den Befehl setenforce verwenden. Ebenso können Benutzer mit dem Befehl getenforce, wie im Screenshot unten gezeigt, überprüfen, was der Durchsetzungsstatus im Moment ist.

Ebenfalls lesen: So übertragen Sie Dateien sicher in Linux mit SCP
Was ist AppArmor?
AppArmor wird in der Entwicklung von Canonical, dem Mutterunternehmen, das die Ubuntu-Distribution von Linux entwickelt, unterstützt. AppArmor zielt darauf ab, einfacher und benutzerfreundlicher als SELinux zu sein, und seine Profile werden im Verzeichnis “/etc/apparmor.d/” erstellt. Ein AppArmor-Profil für den Prozess “/usr/bin/man” ist im Screenshot unten zu sehen.

AppArmor-Betrieb und -Befehle
Um den Status von AppArmor zu sehen, wird der Befehl aa-status verwendet. Eine Beispielausgabe des Befehls ist unten gezeigt.

AppArmor-Profile können durch die Verzeichnisinhalte von “/etc/apparmor.d/” aufgelistet werden, wie unten gezeigt.

Aus der obigen Liste der Profile, wenn ein Benutzer das Profil usr.bin.man deaktivieren möchte, kann er den folgenden Befehl verwenden:
sudo aa-complain /usr/bin/manBeachten Sie, dass sich ein deaktiviertes Profil im deaktivierten Unterverzeichnis des Hauptverzeichnisses der AppArmor-Profile befindet. Um ein deaktiviertes Profil wieder zu aktivieren, wird der folgende Befehl verwendet:
sudo aa-enforce /usr/bin/manBenutzerfreundlichkeit zwischen SELinux und AppArmor
AppArmor funktioniert mit Dateipfaden im Dateisystem, anstatt wie SELinux mit Zeichenfolgen für jede Datei zu arbeiten. Ein Vorteil von AppArmor ist, dass das Einrichten von Lese-, Schreib-, Sperr- und anderen Dateioperationen einfacher ist als in SELinux. Auf der anderen Seite bietet SELinux zwar mehr Funktionen zur Zugriffskontrolle für Dateien, diese Funktionen werden jedoch auf einer viel niedrigeren Ebene im System implementiert.
Daher müssen Benutzer lernen, wie man mknod, Netzwerksockets und andere Systemoperationen verwendet, um mit SELinux zu arbeiten. Für jeden, der kein Systemadministrator ist, ist es viel einfacher zu lernen, wie man AppArmor verwendet.
AppArmor bietet auch einen Lernmodus, der zur Protokollierung von Verstößen gegen die Zugriffskontrolle verwendet wird. Dieser Modus schränkt den Zugriff im Falle eines Verstoßes nicht ein oder verhindert ihn, sondern sammelt über einen bestimmten Zeitraum Daten, um die Erstellung eines separaten AppArmor-Profils basierend auf dem Verhalten von Programmen für jeden aufgezeichneten Zugriffsverstoß zu ermöglichen. Ein ähnlicher Modus ist in SELinux nicht verfügbar.
Ebenfalls lesen: So sichern Sie einen Linux-Home-Server
Häufig gestellte Fragen
Welche Linux-Distributionen sind vorinstalliert mit SELinux und AppArmor?
Alle Linux-Distributionen unter dem Dach von RedHat sind standardmäßig mit SELinux vorinstalliert oder bieten eine Einrichtung davon, einschließlich RHEL, CentOS und Fedora. AppArmor ist vorinstalliert auf Debian, Ubuntu, ihren abgeleiteten Distributionen, SUSE Enterprise Server und OpenSUSE-Distributionen.
Welches Sicherheitsmodul ist das beste für einen neuen Linux-Benutzer?
Die meisten großen Linux-Distributionen haben eines der Sicherheitsmodule standardmäßig installiert. Daher ist es unwahrscheinlich, dass ein neuer Linux-Benutzer kein Sicherheitsmodul “out of the box” hat. Der Vergleich von Funktionen und Benutzerfreundlichkeit zwischen SELinux und AppArmor zeigt, dass SELinux für Power-User oder Systemadministratoren, die eine feinere Kontrolle über ihr Betriebssystem wünschen, am besten ist, aber für alle anderen ist AppArmor die bessere Wahl.
Sind SELinux und AppArmor Alternativen zu Firewalls, Antivirenprogrammen und anderer Software für Benutzersicherheit oder Datensicherheit?
SELinux und AppArmor sind keine Alternativen zu Antivirenprogrammen oder gut konfigurierten Firewalls für die Systemsicherheit und Datenintegrität. Daher wird empfohlen, Ihr System mit einem Antivirenprogramm zu ergänzen, um einen besseren Schutz der Daten zu gewährleisten.
Bildnachweise: AppArmor-Wiki-Seite und SELinux-Wiki-Seite. Alle Screenshots von Zeeman Memon.