Security Enhanced Linux (SELinux) mit SLES zur Stärkung der Sicherheit nutzen

Security Enhanced Linux lässt sich mit SUSE Linux Enterprise Server (SLES) nutzen. Bei der Umsetzung müssen Sie aber wichtige Policies beachten.

Viele Linux-Anwender benötigen aktiviertes SELinux auf den eingesetzten Plattformen. Das Feature ist Teil des Linux-Kernels....

Dennoch sind  einige Schritte notwendig, damit Sie SELinux unter SUSE Linux Enterprise erfolgreich einsetzen.

Security Enhanced Linux (SELinux) ist ein Framework, das über die reinen Linux-Berechtigungen hinaus geht. Es wurde von der National Security Agency Ende 1990 ins Leben gerufen und ist seit Linux-Kernel 2.6 ein fester Bestandteil des so genannten Vanilla-Kernels. In diesem Artikel zeigen wir Ihnen, wie Sie SELinux unter SUSE Linux Enterprise Server (SLES) aktivieren, um Ihr System sicherer zu machen.

Bevor wir uns mit SELinux unter SUSE beschäftigen, erläutere ich einiges darüber. SELinux ist ein Framework, das aus Services und Utilities besteht. Diese kommunizieren mit dem Linux-Kernel-Security-Interface. SUSE Linux Enterprise Server unterstützt den kompletten SELinux-Stack. Allerdings ist ein wichtiger Teil von SELinux,  die sogenannte Policy, nicht Teil des Standard-Stacks. Die Policy beinhaltet alle Regeln und Einschränkungen. Diese müssen Administratoren konfigurieren, um Ihre SELinux-Installation abzusichern. Für SUSE Linux Enterprise Server gibt es keine Standard-Policy.

Es macht Sinn, dass es keine SELinux-Policy für SUSE Linux Enterprise Server gibt. Eine Policy besteht aus tausenden Regeln, die tief in das Betriebssystem integriert werden. Allerdings ist das Erstellen einer maßgeschneiderten Policy viel Arbeit. Es gibt einige Standard-Policies, die Sie alternativ einsetzen können.

Die Policy besteht aus vielen Regeln. Diese basieren wiederum auf Context-Labels. Darin ist definiert, welcher Service oder Anwender auf welche Ressourcen des Servers zugreifen dürfen. Um dies zu definieren, muss jedes Element auf einem mit SELinux abgesicherten System gekennzeichnet sein. Ein Beispiel für eine Regel in der Policy ist:

allow user_t bin_t:file {read execute getattr}

In diesem Beispiel kann jeder Anwender, dem der Context user_t zugewiesen ist, auf die mit bin_t gekennzeichnete Datei zugreifen. Er hat Leserechte, Rechte zum Ausführen und getattr-Berechtigung. Das ist ein spezifischer Satz an Rechten, die innerhalb von SELinux definiert sind. Als ein Administrator können Sie die derzeitigen Label-Einstellungen mithilfe des Befehls ps -Z (für Prozesse), netstat -Z (für Ports), id (für Anwender) oder ls -Z (für Dateien und Verzeichnisse) überprüfen.

Um SELinux auf SUSE Linux Enterprise Server benutzen zu können, müssen Sie zunächst alle SELinux-Pakete installieren. Am Einfachsten ist es in allen Paketen (Namen und Beschreibungen) nach selinux zu suchen und diese zu installieren. Danach brauchen Sie eine Policy. Wie ich bereits erwähnte, gibt es für SLES keine. Aber Sie können die refpolicy-Quell-Datei bei openSUSE.org herunterladen und diese verwenden. Danach müssen Sie Ihren Server noch für selinux präparieren. Dazu fügen Sie einige GRUB-Boot-Optionen an:

securtiy=selinux selinux=1 enforcing=0

Im Anschluss starten Sie den Server neu, um SELinux zu konfigurieren. Die Option enforcing=0 bedeutet, dass sich SELinux im sogenannten Permissive-Modus (tolerant) befindet. Das ist wichtig, da Sie im Moment keine funktionierende Policy haben. Eine kurze Erklärung für das Verständnis, was SELinux im Permissive-Modus bedeutet. SELinux macht alle Regeln und Logging-Nachrichten geltend, blockt aber nicht wirklich irgendetwas. Dies ist eine Methode, um Ihrer SELinux-Konfiguration einen Feinschliff zu verpassen.

Um die Policy zu installieren, laden Sie diese erst von software.opensuse.org herunter. Suchen Sie dort nach der Quell-Datei für refpolicy. Danach extrahieren Sie den Tarball in das Verzeichnis /etc/selinux/refpolicy. In der Datei /etc/selinux/refpolicy/build.conf müssen Sie nachfolgende Optionen setzen, bevor Sie mit kompilieren beginnen:

DISTRO = suse
UNK_PERMS = allow
DIRECT_INITRC = y
MONOLITHIC = n

Nachdem Sie die Parameter entsprechend angepasst haben, rufen Sie den Befehl make load aus dem Verzeichnis /etc/selinux/refpolicy auf und starten danach den Server neu.

Liste 1: Zeigt den derzeitigen Status von SELinux mithilfe von sestatus.

mmi:~ # sestatus
SELinux status:              enabled
SELinuxfs mount:             /selinux
Current mode:                permissive
Mode from config file:       permissive
Policy version:              26
Policy from config file:     refpolicy

Sieht der Status okay aus, können Sie alle Context-Labels auf das Dateisystem übertragen. Dazu rufen Sie aus dem Verzeichnis /etc/selinux/refpolicy den Befehl relabel auf.

Sobald das Dateisystem gekennzeichnet ist, starten Sie den Server neu. Danach sollten Sie einige Überprüfungen vornehmen, um das korrekte Funktionieren zu verifizieren. Benutzen Sie zunächst den Befehl sestatus -v. Damit finden Sie nicht nur heraus, dass SELinux läuft, sondern Sie bekommen auch eine Übersicht der Prozesse und Datei-Contexte. Legen Sie ein besonderes Augenmerk auf den Init-Context. Dieser sollte auf init_t gesetzt sein. Weiterhin können Sie den Befehl semanage fcontext -l verwenden, um eine Liste mit den derzeit gesetzten Dateisystem-Labels zu bekommen. Der Befehl semanage boolean -l liefert eine Liste mit allen verfügbaren Booleans. Ist alles in Ordnung, können Sie fortfahren und die für den Server gewünschten Datei-Contexte und Booleans setzen. Im Anschluss haben Sie die Möglichkeit, den Standard-Modus für SELinux zu aktivieren. Dafür ändern Sie die Start-Option enforcing=0 auf enforcing=1 in GRUB.

Gelegentlich werden Sie feststellen, dass gewisse Services unter SUSE nicht mit SELinux funktionieren. Das kann daran liegen, dass SUSE Linux Enterprise Server keine dedizierte Policy mit sich bringt. In diesem Fall sollten Sie versuchen, gewisse SELinux-Module zu deaktivieren. Benutzen Sie den Befehl semodule -l, um eine Liste mit allen derzeit geladenen SELinux-Modulen zu erhalten. Ist ein Modul für einen speziellen Service geladen und verhindert das Funktionieren, können Sie es mit dem Befehl semodule -d modulname deaktivieren. Dieser Service läuft nun ohne SELinux-Schutz. Sie können die SELinux-Policy auch so abändern, dass der Service mithilfe von SELinux geschützt wird.

Über den Autor: Sander van Vugt ist ein freiberuflicher Trainer und Consultant, der in den Niederlanden ansässig ist. Er ist Experte in den Bereichen Linux High Availability, Virtualisierung und Performance. Sander van Vugt war in mehreren Projekten involviert, die alle drei Bereiche vereinten. Weiterhin ist er der Autor einiger Bücher über Linux. Dazu gehören Beginning the Linux Command Line, Beginning Ubuntu Server Administration und Pro Ubuntu Server Administration.

Artikel wurde zuletzt im Februar 2014 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Linux-Server

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close