Linux/SELinux/01 Grundlagen/Quickstart
SELinux/Debian - SELinux unter Debian
Beschreibung
SELinux einrichten
Die Unterstützung von SELinux ist in den von Debian bereitgestellten Standard-Kerneln enthalten
- Die Kernprogramme von Unix unterstützen SELinux ohne Änderungen
- Es ist daher recht einfach, SELinux zu aktivieren
Der Befehl
apt install selinux-basics selinux-policy-default auditd
installiert automatisch die Pakete, die zur Konfiguration eines SELinux-Systems erforderlich sind
- Paket selinux-policy-default
Enthält einen Satz von Standardregeln
- Standardmäßig beschränkt dieses Regelwerk nur den Zugang für einige besonders gefährdete Dienste
- Die Nutzersitzungen sind nicht eingeschränkt und es ist daher unwahrscheinlich, dass SELinux legitime Nutzeraktionen blockieren würde
- Dieses erhöht jedoch die Sicherheit von Systemdiensten, die auf dem Rechner laufen
- Um ein Regelwerk einzurichten, das den alten „strengen“ Regeln entspricht, müssen Sie nur das Modul unconfined deaktivieren (Linux/SELinux/01 Grundlagen/Debian/Module)
Sobald das Regelwerk installiert ist, sollten Sie alle verfügbaren Dateien kennzeichnen (das heißt, sie einem Typ zuzuordnen)
- Dieser Vorgang muss mit dem Befehl fixfiles relabel von Hand gestartet werden
- Das SELinux-System ist nun einsatzbereit
- Um es zu aktivieren, sollten Sie den Parameter selinux=1 security=selinux zum Linux-Kernel hinzufügen
- Der Parameter audit=1 aktiviert bei SELinux das Protokollieren, durch das alle unterbundenen Vorgänge aufgezeichnet werden
- Schließlich bringt der Parameter enforcing=1 das Regelwerk zur Anwendung
- ohne ihn läuft SELinux in seinem standardmäßigen permissive-Modus
- bei dem unterbundene Vorgänge zwar protokolliert, aber dennoch ausgeführt werden
Sie sollten daher die Konfigurationsdatei des GRUB-Bootloaders anpassen, indem Sie die gewünschten Parameter anhängen
- Ein einfacher Weg, dies zu tun, besteht darin, die Variable GRUB_CMDLINE_LINUX in der Datei /etc/default/grub zu ändern und dann den Befehl update-grub auszuführen
- SELinux ist dann nach einem Neustart aktiv
- Hinweis
Das Skript selinux-activate automatisiert diese Vorgänge und erzwingt das Kennzeichnen der Dateien beim nächsten Rechnerstart
- wodurch vermieden wird, dass neue, nicht gekennzeichnete Dateien erstellt werden, während SELinux noch nicht aktiv ist und das Kennzeichnen noch andauert
SELinux-System verwalten
Das SELinux-Regelwerk ist ein modularer Satz von Regeln, und mit seiner Installation werden automatisch alle relevanten Module entsprechend den bereits installierten Diensten erkannt und aktiviert
- Das System ist hierdurch sofort funktionsfähig
- Wenn jedoch ein Dienst später als das SELinux-Regelwerk installiert wird, müssen Sie in der Lage sein, das entsprechende Modul manuell zu aktivieren
- Hierzu dient der Befehl semodule
- Darüber hinaus müssen Sie in der Lage sein, die Rollen festzulegen, die jeder Nutzer bestätigen kann
- Dies geschieht mit dem Befehl semanage
Diese beiden Befehle können somit dazu benutzt werden, die aktuelle SELinux-Konfiguration, die in /etc/selinux/default/ gespeichert ist, zu ändern
- Im Gegensatz zu anderen Konfigurationsdateien, die Sie in /etc/ finden, dürfen diese Dateien nicht manuell verändert werden
- Sie sollten hierzu die für diesen Zweck vorgesehenen Programme verwenden
Module verwalten
Identitäten verwalten
Jedes Mal, wenn sich ein Benutzer anmeldet, wird ihm eine SELinux-Identität zugewiesen
- Diese bestimmt die Rollen, die er bestätigen kann
- Diese beiden Zuordnungen (des Benutzers zur Identität und der Identität zu den Rollen) können mit dem Befehl semanage konfiguriert werden
Sie sollten die Handbuchseite zu semanage(8) lesen
- Alle verwalteten Konzepte verfügen über eine eigene Handbuchseite
- Beispiel: semanage-login(8)
- Auch wenn die Syntax des Befehls für alle verwalteten Konzepte in der Regel ähnlich ist, wird empfohlen, die jeweilige Handbuchseite zu lesen
- Optionen, die für die meisten Unterbefehle gelten
- -a to add
- -d to delete
- -m to modify
- -l to list
- -t to indicate a type (or domain)
- semanage login -l
Führt die aktuellen Zuordnungen zwischen Benutzerkennungen und SELinux-Identitäten auf
- Benutzer, die keinen ausdrücklichen Eintrag haben, erhalten die Identität, die im Eintrag __default__ angegeben ist
- semanage login -a -s user_u benutzer
Ordnet die Identität user_u dem angegebenen Benutzer zu
- semanage login -d benutzer
Entfernt den Zuordnungseintrag, der an diesen Benutzer vergeben war
sudo semanage login -a -s user_u rhertzog sudo semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * rhertzog user_u s0 * root unconfined_u s0-s0:c0.c1023 *
sudo semanage login -d rhertzog
- semanage user -l
Listet die Zuordnungen zwischen den SELinux-Benutzeridentitäten und den erlaubten Rollen auf
- Um eine neue Identität hinzuzufügen, ist es erforderlich, sowohl die entsprechenden Rollen als auch ein kennzeichnendes Präfix festzulegen, das dazu benutzt wird, einem Typ persönliche Dateien (/home/benutzer/*) zuzuordnen
- Als Präfix muss user, staff oder sysadm gewählt werden
- Das Präfix „staff“ ergibt Dateien des Typs „staff_home_dir_t“
- Das Erstellen einer neuen SELinux-Benutzeridentität geschieht mit dem Befehl semanage user -a -R rollen -P präfix identität
Schließlich kann eine SELinux-Benutzeridentität mit dem Befehl semanage user -d identität entfernt werden
sudo semanage user -a -R 'staff_r user_r' -P staff test_u sudo semanage user -l Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux Roles root sysadm s0 s0-s0:c0.c1023 staff_r sysadm_r system_r staff_u staff s0 s0-s0:c0.c1023 staff_r sysadm_r sysadm_u sysadm s0 s0-s0:c0.c1023 sysadm_r system_u user s0 s0-s0:c0.c1023 system_r test_u staff s0 s0 staff_r user_r unconfined_u unconfined s0 s0-s0:c0.c1023 system_r unconfined_r user_u user s0 s0 user_r
sudo semanage user -d test_u
Dateikontexte, Ports und Boolesche Optionen verwalten
Jedes SELinux-Modul stellt einen Satz von Dateibezeichnungsregeln zur Verfügung, aber es ist auch möglich, eigene Bezeichnungsregeln hinzuzufügen, um einen speziellen Fall abzudecken
Wenn Sie zum Beispiel möchten, dass der Webserver in der Lage ist, Dateien innerhalb der /srv/www/-Dateihierarchie zu lesen, könnten Sie
semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?" restorecon -R /srv/www/ ausführen
Der erste Befehl registriert die neue Bezeichnungsregel und der zweite gleicht die Dateitypen gemäß den derzeitigen Bezeichnungsregeln an
Ebenso sind die TCP/UDP-Ports in einer Weise gekennzeichnet, die sicherstellt, dass nur die entsprechenden Daemons an ihnen Verbindungen annehmen können
- Wenn Sie zum Beispiel möchten, dass der Web-Server am Port 8080 Verbindungen annehmen kann, sollten Sie den Befehl
semanage port -m -t http_port_t -p tcp 8080 ausführen
Einige SELinux-Module exportieren boolesche Optionen, die Sie anpassen können, um das Verhalten der Standardregeln zu ändern
- Mit dem Dienstprogramm getsebool können Sie diese Optionen einsehen (getsebool „boolean“ zeigt eine Option an, getsebool -a alle)
- Der Befehl setsebool „boolean“ „value“ ändert den aktuellen Wert einer booleschen Option
- Die Option -P macht die Änderung dauerhaft, d. h., der neue Wert wird zum Standardwert und bleibt auch nach einem Neustart erhalten
Das folgende Beispiel gewährt Webservern Zugriff auf Home-Verzeichnisse (dies ist nützlich, wenn Benutzer persönliche Websites in ~/public_html/ haben)
sudo getsebool httpd_enable_homedirs httpd_enable_homedirs --> off
sudo setsebool -P httpd_enable_homedirs on
sudo getsebool httpd_enable_homedirs httpd_enable_homedirs --> on
Regeln anpassen
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks