Zum Inhalt springen

Linux/SELinux/01 Grundlagen/Quickstart: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''SELinux/Debian''' - [[SELinux]] unter [[Debian]]
'''Linux/SELinux/01 Grundlagen/Quickstart''' - [[SELinux]] unter [[Debian]]


== Beschreibung ==
== Beschreibung ==
== SELinux einrichten ==
Die Unterstützung von SELinux ist in den von Debian bereitgestellten Standard-Kerneln enthalten
Die Unterstützung von SELinux ist in den von Debian bereitgestellten Standard-Kerneln enthalten
* Die Kernprogramme von Unix unterstützen SELinux ohne Änderungen
* Die Kernprogramme von Unix unterstützen SELinux ohne Änderungen
Zeile 52: Zeile 50:


=== Module verwalten ===
=== Module verwalten ===
* [[Linux/SELinux/01 Grundlagen/Debian/Module]]
Verfügbare SELinux-Module sind im Verzeichnis '''/usr/share/selinux/default/''' gespeichert
* Um eines dieser Module in der aktuellen Konfiguration zu aktivieren, sollten Sie den Befehl semodule -i ''Modul.pp.bz2'' benutzen
* Die Erweiterung ''pp.bz2'' steht für ''policy package'' (komprimiert mit bzip2)
 
Das Entfernen eines Moduls aus der aktuellen Konfiguration erfolgt mit semodule -r ''module''
* Letztlich listet der Befehl semodule -l die aktuell installierten Module auf
* Es gibt auch deren Versionsnummern aus
 
Module können selektiv mit semodul -e aktiviert und mit semodul -d deaktiviert werden
sudo semodule -i /usr/share/selinux/default/abrt.pp.bz2
libsemanage.semanage_direct_install_info: abrt module will be disabled after install as there is a disabled instance of this module present in the system
sudo semodule -l
accountsd
acct
[]
 
sudo semodule -e abrt
sudo semodule -d accountsd
sudo semodule -l
abrt
acct
[]
 
sudo semodule -r abrt
libsemanage.semanage_direct_remove_key: abrt module at priority 100 is now active
 
semodule lädt die neue Konfiguration unmittelbar, es sei denn, Sie verwenden seine Option -n
 
; Hinweise
<blockquote>
Das Programm wirkt standardmäßig auf die aktuelle Konfiguration
* die unter der Variablen SELINUXTYPE in der Datei /etc/selinux/config angegeben ist
* die Option -s ändert dieses Verhalten
</blockquote>
 
; Siehe auch
* [[Linux/SELinux/05_SEPolicy]]


=== Identitäten verwalten ===
=== Identitäten verwalten ===
Jedes Mal, wenn sich ein Benutzer anmeldet, wird ihm eine SELinux-Identität zugewiesen
Jedes Mal, wenn sich ein Benutzer anmeldet, wird ihm eine SELinux-Identität zugewiesen
* Diese bestimmt die Rollen, die er bestätigen kann
* 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
* Zuordnungen können mit dem Befehl semanage konfiguriert werden
** des Benutzers zur Identität und der Identität zu den Rollen


Sie sollten die Handbuchseite zu semanage(8) lesen
Sie sollten die Handbuchseite zu semanage(8) lesen
Zeile 64: Zeile 99:
* Auch wenn die Syntax des Befehls für alle verwalteten Konzepte in der Regel ähnlich ist, wird empfohlen, die jeweilige Handbuchseite zu lesen
* 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
; Optionen
* -a to add
die für die meisten Unterbefehle gelten
* -d to delete
{| class="wikitable options big col1center"
* -m to modify
|-
* -l to list
! Option !!  Beschreibung
* -t to indicate a type (or domain)
|-
| -a || add
|-
| -d || delete
|-
| -m || modify
|-
| -l || list
|-
| -t || indicate a type (or domain)
|}


; semanage login -l
; semanage login -l
Zeile 144: Zeile 189:
   httpd_enable_homedirs --> on
   httpd_enable_homedirs --> on


== Regeln anpassen ==
=== Regeln anpassen ===
[[Linux/SELinux/Regeln anpassen]]
[[Linux/SELinux/Regeln anpassen]]


{{Navigation|Linux/SELinux/01_Grundlagen|Linux/SELinux/01_Grundlagen/Debian/Module}}
{{Navigation|Linux/SELinux/01 Grundlagen/Installation|Linux/SELinux/02 Kontext}}


<noinclude>
<noinclude>

Aktuelle Version vom 29. März 2026, 17:37 Uhr

Linux/SELinux/01 Grundlagen/Quickstart - SELinux unter Debian

Beschreibung

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 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

Verfügbare SELinux-Module sind im Verzeichnis /usr/share/selinux/default/ gespeichert

  • Um eines dieser Module in der aktuellen Konfiguration zu aktivieren, sollten Sie den Befehl semodule -i Modul.pp.bz2 benutzen
  • Die Erweiterung pp.bz2 steht für policy package (komprimiert mit bzip2)

Das Entfernen eines Moduls aus der aktuellen Konfiguration erfolgt mit semodule -r module

  • Letztlich listet der Befehl semodule -l die aktuell installierten Module auf
  • Es gibt auch deren Versionsnummern aus

Module können selektiv mit semodul -e aktiviert und mit semodul -d deaktiviert werden

sudo semodule -i /usr/share/selinux/default/abrt.pp.bz2
libsemanage.semanage_direct_install_info: abrt module will be disabled after install as there is a disabled instance of this module present in the system
sudo semodule -l
accountsd
acct
[]
sudo semodule -e abrt
sudo semodule -d accountsd
sudo semodule -l
abrt
acct
[]
sudo semodule -r abrt
libsemanage.semanage_direct_remove_key: abrt module at priority 100 is now active

semodule lädt die neue Konfiguration unmittelbar, es sei denn, Sie verwenden seine Option -n

Hinweise

Das Programm wirkt standardmäßig auf die aktuelle Konfiguration

  • die unter der Variablen SELINUXTYPE in der Datei /etc/selinux/config angegeben ist
  • die Option -s ändert dieses Verhalten
Siehe auch

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
  • Zuordnungen können mit dem Befehl semanage konfiguriert werden
    • des Benutzers zur Identität und der Identität zu den Rollen

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

Option Beschreibung
-a add
-d delete
-m modify
-l list
-t 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

Linux/SELinux/Regeln anpassen


Anhang

Siehe auch



Dokumentation

Projekt