SELinux Policies

  Lioh Möller   Lesezeit: 3 Minuten

Mithilfe von Booleans oder eigenen Policies kann SELinux an die eigenen Bedürfnisse angepasst werden.

selinux policies

Bei SELinux handelt es sich um ein Sicherheitsframework zum erweiterten Schutz von Linux-Systemen. In einigen Fällen kann es notwendig sein, eine eigene Policy zu erstellen.



Dazu wird unter einem Enterprise Linux System das Paket policycoreutils-python-utils benötigt, welches standardmässig bereits installiert sein sollte.

SELinux protokolliert Regelverstösse mit dem Vermerk denied in der Datei /var/log/audit/audit.log.

Ausgeben lassen kann man sich diese mithilfe des folgenden Befehls:

grep "denied"/var/log/audit/audit.log

Eigene Policies lassen sich sinnvollerweise nach Anwendungen gruppiert erstellen. Im folgenden Beispiel gehen wir von einer Erstellung einer Policy für den Webserver Apache aus, welcher unter dem Prozess http läuft.

Dazu kann die Anwendung audit2allow genutzt werden. Mit audit2allow werden die zu erwartenden Änderungen ausgegeben, jedoch noch nicht angewendet:

grep "httpd" /var/log/audit/audit.log| audit2allow

audit2allow gibt in Kommentarzeilen Hinweise, auf eine mögliche Lösung. In einigen Fällen können Werte über sogenannte SELinux Booleans gesteuert werden.

Eine Ausgabe kann dabei wie folgt aussehen:

#!!!! This avc can be allowed using one of the these booleans:
#     httpd_can_network_connect, httpd_can_network_connect_db
allow httpd_t mysqld_port_t:tcp_socket name_connect;

Alle Booleans können mit dem Befehl getsebool -a oder semanage boolean -l ausgegeben werden.

Aktiviert werden kann diese permanent, über Reboots hinweg mit folgendem Befehl:

setsebool -P httpd_can_network_connect on

oder je nach Bedarf mithilfe von:

setsebool -P httpd_can_network_connect_db on

Nach den Anpassungen eines Booleans sollte erneut geprüft werden, ob die Erstellung einer eigenen Policy noch notwendig ist:

grep "denied"/var/log/audit/audit.log| audit2allow 

Sollte dies der Fall sein, kann mit folgendem Befehl ein Modulpaket erstellt werden. In diesem Beispiel wird ein Modul für den Apache Webserver:

grep "httpd" /var/log/audit/audit.log| audit2allow -M my-httpd

Abschliessend wird dies dem System hinzugefügt:

semodule -i my-httpd.pp

Falls Sie das Modul zu einem späteren Zeitpunkt wieder entfernt werden soll, kann dazu der folgende Befehl genutzt werden:

semodule -r my-httpd

Tags

SELinux, Policies, Booleans

Es wurden noch keine Kommentare verfasst, sei der erste!