Vorige: , Nach oben: Den Daemon einrichten   [Inhalt][Index]


2.4.3 SELinux-Unterstützung

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.

2.4.3.1 Installieren der SELinux-Policy

Anmerkung: Wenn Sie mit dem Skript guix-install.sh die Installation aus einer Binärdatei durchführen, wird Ihnen angeboten, die folgenden Schritte automatisch durchzuführen (siehe Aus Binärdatei installieren).

Um die Richtlinie (Policy) zu installieren, führen Sie folgenden Befehl mit Administratorrechten aus:

semodule -i /var/guix/profiles/per-user/root/current-guix/share/selinux/guix-daemon.cil

Dann kennzeichnen Sie als Administratornutzer das Dateisystem neu. Womöglich müssen Sie sich zuerst Schreibrechte darauf verschaffen:

mount -o remount,rw /gnu/store
restorecon -R /gnu /var/guix

Nun ist die Zeit gekommen, guix-daemon zu starten oder neu zu starten. Wenn Ihre Distribution systemd zur Diensteverwaltung benutzt, dann geht das so:

systemctl restart guix-daemon

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.

2.4.3.2 Einschränkungen

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.

  1. 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.
  2. 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.
  3. Die vom Daemon gebotene Funktionalität, auf TCP-Verbindungen zu lauschen, könnte nicht mehr funktionieren. Dies könnte zusätzliche Regeln brauchen, weil SELinux Netzwerk-Sockets anders behandelt als Dateien.
  4. Derzeit wird allen Dateien mit einem Namen, der zum regulären Ausdruck /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]