Created: 2023-02-09 Thu 14:42
full
- alle Ressourcen und Anwendungen im Linux-System sind von
der SELinux Policy abgedeckt. Dies ist sehr aufwändig und wird
von den Linux-Distributionen nicht angebotentargeted
- SELinux Policies existieren für kritische
Komponenten im Linux-System (z.B. Systemd, Webserver, Mailserver
etc). Nur diese Komponenten sind von SELinux abgesichert, alle
anderen Komponenten befinden sich im unconfined
Modus und
werden von SELinux nicht beschränkt. Die Linux-Distributionen
bieten Policies für den targeted
Modus an.minimum
- Minimale SELinux Richtlinie
Die SELinux Enforcement-Modi und Richtlinien-Modi werden in der
Datei /etc/selinux/config
konfiguriert
SELINUX=enforcing SELINUXTYPE=targeted
sestatus
abgefragt werden# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33
ls -lZ /etc
chcon
(Change
Context) gesetzt werden:
# chcon --type httpd_sys_content_t /var/www/html/index.html
Alternativ kann das passende Label aus der SELinux Richtlinie gelesen und angepasst werden
# restorecon -v /var/www/html/index.html
Existiert beim Systemstart die Datei .autorelabel
im
Root-Verzeichnis /
so werden alle Dateien mit neuen
SELinux-Label versehen und danach das System neu gestartet
# touch /.autorelabel && reboot
/usr/sbin/fixfiles
# fixfiles -v check /etc Would relabel /etc/ssh/keys/ssh_host_ecdsa_key from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/ssh/keys/ssh_host_ecdsa_key.pub from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/ssh/keys/ssh_host_ed25519_key from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/ssh/keys/ssh_host_ed25519_key.pub from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/ssh/keys/ssh_host_rsa_key from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/ssh/keys/ssh_host_rsa_key.pub from system_u:object_r:sshd_key_t:s0 to system_u:object_r:etc_t:s0 Would relabel /etc/hosts~ from unconfined_u:object_r:etc_t:s0 to unconfined_u:object_r:net_conf_t:s0
Das Script fixfiles
kann die Datei-Pfade aus den
RPM-Paketbeschreibungen lesen und die Dateien von RPM-Paketen
prüfen und berichtigen
fixfiles -v -R nginx,httpd restore
ps -efZ
id -Z
Der Befehl seinfo
liefert Informationen über die verfügbaren
Label
seinfo -u # Übersicht der SELinux Benutzer seinfo -r # Übersicht der SELinux Rollen seinfo -t # Übersicht der SELinux (Datei-) Typen
sestatus -v
liefert Informationen über den SELinux
Status der aktuellen (Login) Sitzung
[..] Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /sbin/agetty system_u:system_r:getty_t:s0-s0:c0.c1023 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling terminal: unconfined_u:object_r:user_devpts_t:s0 /etc/passwd system_u:object_r:passwd_file_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0
Der Befehl semodule -l
listet alle SELinux Module dieses Systems
# semodule -l | head abrt accountsd acct afs aiccu aide ajaxterm alsa amanda amtu
m4
Makro-Sprache
geschriebenBeispiel aus der BIND 9 SELinux Policy
######################################## ## <summary> ## Create, read, write, and delete ## BIND configuration files. ## </summary> ## <param name="domain"> ## <summary> ## Domain allowed access. ## </summary> ## </param> # interface(`bind_manage_config',` gen_require(` type named_conf_t; ') manage_files_pattern($1, named_conf_t, named_conf_t) ')