Vorige: Nutzung der Auslagerungsfunktionalität, Nach oben: Den Daemon einrichten [Inhalt][Index]
Guix enthält eine SELinux-Richtliniendatei („Policy“) unter etc/guix-daemon.cil, die auf einem System installiert werden kann, auf dem SELinux aktiviert ist, damit Guix-Dateien gekennzeichnet sind und um das erwartete Verhalten des Daemons anzugeben. Da Guix System keine Grundrichtlinie („Base Policy“) für SELinux bietet, kann diese Richtlinie für den Daemon auf Guix System nicht benutzt werden.
Um die Richtlinie (Policy) zu installieren, führen Sie folgenden Befehl mit Administratorrechten aus:
semodule -i etc/guix-daemon.cil
Kennzeichnen Sie dann das Dateisystem neu mit restorecon
oder einem
anderen, von Ihrem System angebotenen Mechanismus.
Sobald die Richtlinie installiert ist, das Dateisystem neu gekennzeichnet
wurde und der Daemon neugestartet wurde, sollte er im Kontext
guix_daemon_t
laufen. Sie können dies mit dem folgenden Befehl
nachprüfen:
ps -Zax | grep guix-daemon
Beobachten Sie die Protokolldateien von SELinux, wenn Sie einen Befehl wie
guix build hello
ausführen, um sich zu überzeugen, dass SELinux alle
notwendigen Operationen gestattet.
Diese Richtlinie ist nicht perfekt. Im Folgenden finden Sie eine Liste von Einschränkungen oder merkwürdigen Verhaltensweisen, die bedacht werden sollten, wenn man die mitgelieferte SELinux-Richtlinie für den Guix-Daemon einspielt.
guix_daemon_socket_t
wird nicht wirklich benutzt. Keine der
Socket-Operationen benutzt Kontexte, die irgendetwas mit
guix_daemon_socket_t
zu tun haben. Es schadet nicht, diese ungenutzte
Kennzeichnung zu haben, aber es wäre besser, für die Kennzeichnung auch
Socket-Regeln festzulegen.
guix gc
kann nicht auf beliebige Verknüpfungen zu Profilen
zugreifen. Die Kennzeichnung des Ziels einer symbolischen Verknüpfung ist
notwendigerweise unabhängig von der Dateikennzeichnung der
Verknüpfung. Obwohl alle Profile unter $localstatedir gekennzeichnet sind,
erben die Verknüpfungen auf diese Profile die Kennzeichnung desjenigen
Verzeichnisses, in dem sie sich befinden. Für Verknüpfungen im Persönlichen
Verzeichnis des Benutzers ist das user_home_t
, aber Verknüpfungen aus
dem Persönlichen Verzeichnis des Administratornutzers, oder /tmp,
oder das Arbeitsverzeichnis des HTTP-Servers, etc., funktioniert das
nicht. guix gc
würde es nicht gestattet, diese Verknüpfungen
auszulesen oder zu verfolgen.
/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon
passt, die
Kennzeichnung guix_daemon_exec_t
zugewiesen, wodurch jeder
beliebigen Datei mit diesem Namen in irgendeinem Profil gestattet wäre, in
der Domäne guix_daemon_t
ausgeführt zu werden. Das ist nicht
ideal. Ein Angreifer könnte ein Paket erstellen, dass solch eine ausführbare
Datei enthält, und den Nutzer überzeugen, es zu installieren und
auszuführen. Dadurch käme es in die Domäne guix_daemon_t
. Ab diesem
Punkt könnte SELinux nicht mehr verhindern, dass es auf Dateien zugreift,
auf die Prozesse in dieser Domäne zugreifen dürfen.
Nach jeder Aktualisierung des guix-daemon, z.B. nachdem Sie
guix pull
ausgeführt haben, müssen Sie das Store-Verzeichnis neu
kennzeichnen. Angenommen, der Store befindet sich unter /gnu, dann
können Sie das mit restorecon -vR /gnu
bewerkstelligen oder durch
andere Mittel, die Ihr Betriebssystem Ihnen zur Verfügung stellt.
Wir könnten zum Zeitpunkt der Installation eine wesentlich restriktivere
Richtlinie generieren, für die nur genau derselbe Dateiname des
gerade installierten guix-daemon
-Programms als
guix_daemon_exec_t
gekennzeichnet würde, statt einen vieles
umfassenden regulären Ausdruck zu benutzen. Aber dann müsste der
Administratornutzer zum Zeitpunkt der Installation jedes Mal die Richtlinie
installieren oder aktualisieren müssen, sobald das Guix-Paket aktualisiert
wird, dass das tatsächlich in Benutzung befindliche
guix-daemon
-Programm enthält.
Vorige: Nutzung der Auslagerungsfunktionalität, Nach oben: Den Daemon einrichten [Inhalt][Index]