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.