SELinux Basics

Die folgende Anleitung beschreibt, wie Sie eine eigene SELinux Policy erstellen können, und diese auf Ihrem System aktivieren.

Für einige der folgenden Befehle benötigen Sie zusätzlich das Paket policycoreutils-python (RHEL7) resp. policycoreutils-python-utils (RHEL8).

Erstellung einer Policy

Um z.B. für Apache eine SELinux Policy zu erstellen, können Sie sich zunächst mit audit2allow den Inhalt des .te file ausgeben lassen

grep httpd /var/log/audit/audit.log | audit2allow -m local

Mit Hilfe von:

grep httpd /var/log/audit/audit.log | audit2allow -m local > local.te

erzeugen Sie eine Datei namens local.te mit selbigen Inhalt. Der Befehl:

checkmodule -M -m -o local.mod local.te

erstellt daraufhin aus dem .te file ein Modul mit dem Namen local.mod. Da ein Modul jedoch noch nicht installierbar ist, erstellen Sie bitte noch das installierbare Modulpaket daraus:

semodule_package -o local.pp -m local.mod

Schlussendlich lädt:

semodule -i local.pp

das Modul persistent in den Kernel.

Falls Sie das Modul später wieder entfernen möchten, können Sie dies mit:

semodule -r local

tun. Das ganze geht auch in einem einzigen Schritt:

setenforce 1; service httpd restart; grep httpd /var/log/audit/audit.log | audit2allow -M local; semodule -i local

Ändern von Filekontexten

Es kann auch sinnvoll sein den Kontext einer Datei zu ändern:

chcon -v --type=samba_share_t /srv/samba/myfile; semanage fcontext -a -t samba_share_t /srv/samba/myfile

oder rekursiv von Verzeichnissen:

chcon -Rv --type=samba_share_t /srv/samba; semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"

Zugriff auf NFS Homes

Achten Sie bei der Nutzung von NFS-Shares als Benutzerverzeichnisse darauf, dass die Option für NFS Homes gesetzt ist:

getsebool use_nfs_home_dirs use_nfs_home_dirs --> on

Setzen Sie die Einstellung bei Bedarf mit

setsebool -P use_nfs_home_dirs on

Sollten Sie als Home-Basisverzeichnis etwas anderes als /home verwenden (z.B. /nas), gehen Sie bitte wie folgt vor:

mkdir /nas semanage fcontext -a -e /home /nas restorecon -R -v /nas

Andernfalls können sehr schwer zu erklärende Phänomene auftreten, wie SSH-Keys, die nicht für schlüsselbasierte Authentifizierung verwendet werden. Ganz allgemein kann SELinux temporär ausgeschaltet werden, um einzugrenzen, ob SELinux an einem Problem beteiligt ist:

setenforce 0

Eingeschaltet wird SELinux wieder mit

setenforce 1

oder mit einem Reboot.