[3] SELinux – Context
14 marca 2022Kontrola dostępu do plików lub katalogów jest kontrolowana przez dodatkowe informacje zwane Kontekstem SELinux.
Kontekst SELinux ma następującą składnię.
[Użytkownik SELinux]:[Rola]:[Typ]:[Poziom]
- Użytkownik SELinux:
- Atrybut użytkownika SELinux
- Każdy użytkownik systemu Linux jest mapowany na użytkownika SELinux przez zasady SELinux.
- Rola:
- Atrybut RBAC (kontrola dostępu oparta na rolach)/(Role Based Access Control)
- Definiuje role użytkownika SELinux.
- Kontroluje dostępy, których zdefiniowana rola może uzyskać dostęp do domen przez politykę SELinux.
- Typ :
- Atrybut TE (Egzekwowanie typu)/ (Type Enforcement)
- Definiuje domeny dla procesów, a także definiuje typy dla plików.
- Poziom :
- Atrybut MLS (Multi Level Security) i MCS (Multi Category Security)
- Poziom ma składnię [czułość]:[kategoria]/[sensitivity]:[category]
Polityka [targeted], która jest domyślną polityką w RHEL/CentOS wymusza MCS i jest używana tylko z czułością [s0] w polityce. Ale dla kategorii jest obsługiwany c0-c1023.
MLS wymusza obowiązkowy model dostępu Bell-La Padula (Bell-La Padula Mandatory Access Model).
Jeśli chcesz z niego korzystać, musisz zainstalować pakiet zasad MLS na RHEL/CentOS. Ale nie obsługuje on X Window System, więc nie można go używać w środowisku pulpitu.
[1] Aby wyświetlić konteksty SELinux dla plików lub procesów, dodaj opcję [Z] do poleceń.
# pliki/katalogi [root@vlsr01 ~]# ls -lZ /root razem 56 -rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 219 03-13 19:39 acl.txt -rw-r-----. 1 root root system_u:object_r:admin_home_t:s0 1326 03-06 09:48 anaconda-ks.cfg -rw-------. 1 root root system_u:object_r:mail_home_t:s0 45224 03-14 03:45 dead.letter # procesy [root@vlsr01 ~]# ps axZ LABEL PID TTY STAT TIME COMMAND system_u:system_r:init_t:s0 1 ? Ss 0:02 /usr/lib/systemd/systemd -- system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd] system_u:system_r:kernel_t:s0 3 ? I< 0:00 [rcu_gp] system_u:system_r:kernel_t:s0 4 ? I< 0:00 [rcu_par_gp] system_u:system_r:kernel_t:s0 6 ? I< 0:00 [kworker/0:0H-events_highpr . . . . . # własny ID [root@vlsr01 ~]# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[2] Każdy użytkownik systemu Linux jest mapowany na użytkownika SELinux przez zasady SELinux. Możliwe jest wyświetlenie listy mapowania w następujący sposób.
# jeżeli polecenie [semanage] nie jest dostępne, zainstaluj go [root@vlsr01 ~]# dnf install policycoreutils-python-utils [root@vlsr01 ~]# semanage login -l Login Użytkownik SELinuksa Zakres MLS/MCS Usługa __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 *
W powyższym przykładzie (RHEL/CentOS Default), [root] jest mapowany na [unconfined_u]. Inni zwykli użytkownicy są mapowani do [__default__] raz, a ostatecznie do [unconfined_u].
Użytkownicy [unconfined_u] mają przypisaną rolę [unconfined_t], a procesy uruchamiane przez użytkowników [unconfined_u], są uruchamiane jako domena [unconfined_t].
Procesy, którym przypisana jest domena [unconfined_t], nie są kontrolowane przez SELinux.
[root@vlsr01 ~]# ps axZ | grep unconfined_t unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 240706 ? Ss 0:00 /usr/lib/systemd/systemd --user unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 240717 ? S 0:00 sshd: root@pts/0 unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 240718 pts/0 Ss 0:00 -bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 241358 pts/0 R+ 0:00 ps axZ unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 241359 pts/0 R+ 0:00 grep --color=auto unconfined_t