SELinux-Richtlinien konfigurieren

Wenn das Schutzsystem SELinux (Security-Enhanced UNIX) in Ihrer UNIX-Distribution integriert ist, können einige Änderungen der SELinux-Sicherheitslinien eventuell erforderlich sein, damit die Dienstkomponenten von Dr.Web für Linux (z. B. die Scan-Engine) nach der Installation ordnungsgemäß ausgeführt werden.

1. Probleme bei der Installation des generischen Pakets

Wenn SELinux aktiviert ist, kann die Installation von Dr.Web für Linux mithilfe des universellen Pakets der Installationsdatei (.run) fehlschlagen, da der Account drweb, unter dem die Komponenten von Dr.Web für Linux ausgeführt werden, nicht erstellt werden kann.

Wenn die Installation von Dr.Web für Linux mithilfe der Installationsdatei (.run) fehlgeschlagen ist, da der Account drweb nicht erstellt werden konnte, überprüfen Sie die Konfiguration von SELinux, indem Sie den Befehl getenforce ausführen. Mit diesem Befehl ermitteln Sie, in welchem Modus SELinux läuft:

Permissive – der Schutz ist zwar aktiviert, doch befindet sich im Warnmodus: Vorgänge, die Regelverstöße verursachen, werden protokolliert und weiterhin ausgeführt.

Enforced – der Schutz ist aktiviert und setzt die Richtlinie um: Vorgänge, die Regelverstöße verursachen, werden protokolliert und gesperrt.

Disabled – SELinux ist installiert, aber nicht aktiv.

Wenn SELinux im Modus Enforced läuft, versetzen Sie SELinux vorübergehend in den Modus Permissive, bis die Installation abgeschlossen ist. Führen Sie dazu den folgenden Befehl aus:

# setenforce 0

Der Befehl versetzt SELinux vorübergehend (bis zum nächsten Neustart) in den Modus Permissive.

Beachten Sie: Unabhängig davon, in welchen Modus Sie SELinux mit dem Befehl setenforce versetzt haben, wird SELinux nach einem Neustart wieder in den Standardmodus versetzt. Die Konfigurationsdatei mit den Standardeinstellungen von SELinux befindet sich standardmäßig im Verzeichnis /etc/selinux.

Nachdem Sie Dr.Web für Linux mittels der Installationsdatei erfolgreich installiert haben (aber vor dem Start und vor der Aktivierung des Programms), müssen Sie <%P_SELINUX%> wieder in den Modus Enforced versetzten. Führen Sie hierzu den folgenden Befehl aus:

# setenforce 1

2. Fehlerhafte Funktion von Dr.Web für Linux

Wenn SELinux aktiviert ist, kann es eventuell dazu kommen, dass einzelne zusätzliche Komponenten von Dr.Web für Linux (wie drweb-se und drweb-filecheck, die vom Scanner und von SpIDer Guard verwendet werden) nicht gestartet werden, wodurch der Scan und die Überwachung des Dateisystems nicht möglich sind. In diesem Fall erscheinen die Fehlermeldungen 119 und 120 im Hauptdialogfenster von Dr.Web für Linux und im syslog-Protokoll (liegt standardmäßig im Verzeichnis /var/log/).

Meldungen von SELinux werden auch im Systemprotokoll aufgezeichnet. Bei der Verwendung des audit-Dämons befindet sich die Protokolldatei üblicherweise unter /var/log/audit/audit.log. Anderenfalls werden Informationen über gesperrte Vorgänge in der Datei /var/log/messages oder /var/log/syslog protokolliert.

Wenn festgestellt wurde, dass SELinux zusätzliche Module sperrt, kompilieren Sie spezielle Sicherheitsrichtlinien für diese Module.

In einigen UNIX-Distributionen können die nachfolgend aufgeführten Tools fehlen, sodass Sie die entsprechenden Pakete manuell nachinstallieren müssen.

So erstellen Sie SELinux-Richtlinien:

1.Erstellen Sie eine .te-Datei mit dem Quellcode der SELinux-Richtlinie. Diese Datei bestimmt die Regeln für das beschriebene Modul. Die Datei kann über folgende Wege erstellt werden:

1)Über das Tool audit2allow. Dieses Werkzeug bietet den einfachsten Weg, da damit benutzerdefinierte „allow“-Regeln anhand der Protokollinformationen zu verweigerten Zugriffen generiert werden. Sie haben dabei die Möglichkeit, die Protokolldateien nach Meldungen automatisch durchsuchen zu lassen oder den Pfad zur gewünschten Protokolldatei manuell anzugeben.

Beachten Sie: Diese Methode kann nur dann verwendet werden, wenn Verletzungen der SELinux-Richtlinie durch die Komponenten von Dr.Web für Linux bereits im Systemprotokoll registriert wurden. Alternativ können Sie die Erstellung von zulassenden Richtlinien mithilfe des Tools policygentool erzwingen (siehe nachfolgend).

Das Tool audit2allow ist im Paket policycoreutils-python oder policycoreutils-devel (RedHat Enterprise Linux, CentOS, Fedora – je nach Version) oder im Paket python-sepolgen (Debian, Ubuntu) enthalten.

Beispiel für die Verwendung von audit2allow:

# grep drweb-se.real /var/log/audit/audit.log | audit2allow -M drweb-se

In diesem Beispiel sucht das Tool audit2allow nach Meldungen über den dem Modul drweb-se verweigerten Zugriff in der Datei audit.log.

Das Tool erstellt zwei Dateien: die Quelldatei der Richtlinie drweb-se.te und das Richtlinienmodul drweb-se.pp.

Wenn im Systemprotokoll keine passenden Regelverstöße gefunden wurden, gibt das Tool einen entsprechenden Fehler zurück.

In den meisten Fällen sind keine Änderungen an der mithilfe von audit2allow erstellen Datei erforderlich. Gehen Sie daher direkt zu Punkt 4, um das erstellte Richtlinienmodul drweb-se.pp zu installieren. Beachten Sie: audit2allow zeigt standardmäßig den Aufruf des Befehls semodule an. Kopieren Sie diesen Befehl in die Befehlszeile und führen Sie ihn aus. Damit erledigen Sie Punkt 4. Gehen Sie zu Punkt 2 nur dann, wenn Sie die für Dr.Web für Linux automatisch erzeugten Richtlinien ändern möchten.

2)Über das Tool policygentool. Geben Sie hierzu als Parameter den Namen des Moduls, für das Sie die Richtlinie erstellen wollen, und den vollständigen Pfad zur ausführbaren Datei des Moduls an.

Beachten Sie: In der Funktion von policygentool als Teil des Pakets selinux-policy für RedHat Enterprise Linux und CentOS Linux können eventuell Fehler auftreten. Verwenden Sie das alternative Tool audit2allow in diesem Fall.

Beispiel für die Erstellung einer Richtlinie mithilfe von policygentool:

Für drweb-se:

# policygentool drweb-se /opt/drweb.com/bin/drweb-se.real

Für drweb-filecheck:

# policygentool drweb-filecheck /opt/drweb.com/bin/drweb-filecheck.real

Sie werden aufgefordert, einige allgemeine Eigenschaften der Domäne anzugeben. Anschließend werden für jedes Modul drei Dateien erstellt, aus denen die Richtlinie besteht:

<module_name>.te, <module_name>.fc und <module_name>.if.

2.Ändern Sie bei Bedarf die generierte Quelldatei der Richtlinie <module_name>.te und kompilieren Sie diese mit checkmodule in eine Binärdatei (mit der Dateiendung .mod).

Bitte beachten Sie, dass dieser Befehl den Compiler checkpolicy voraussetzt.

Verwendungsbeispiel:

# checkmodule -M -m -o drweb-se.mod drweb-se.te

3.Erstellen Sie mit semodule_package das Richtlinien-Modul (mit der Dateiendung .pp).

Beispiel:

# semodule_package -o drweb-se.pp -m drweb-se.mod

4.Laden Sie das erzeugte Modul mit dem Tool semodule.

Beispiel:

# semodule -i drweb-se.pp

Weitere Informationen über die Funktion und die Konfiguration von SELinux finden Sie in der Dokumentation für Ihre UNIX-Distribution.