linux-system-roles.selinux
SELinux
Oczekiwana funkcjonalność
Podstawowa funkcjonalność polega na zapewnieniu mechanizmów do zarządzania lokalnymi dostosowaniami:
- Ustawianie trybu egzekwowania/zezwolenia
- Przywracanie kontekstu na częściach systemu plików
- Ustawianie/uzyskiwanie zmiennych boolean
- Ustawianie/uzyskiwanie kontekstów plików
- Zarządzanie logowaniami
- Zarządzanie portami
Uwaga: Jeśli chcesz zarządzać dostosowaniami SELinux w trybie disabled
, musisz mieć zainstalowaną politykę SELinux targeted
.
Wymagania
Patrz poniżej.
Wymagania dotyczące zbiorów
Rola wymaga zewnętrznych zbiorów. Użyj następującego polecenia, aby je zainstalować:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Moduły dostarczane przez to repozytorium
selinux_modules_facts
Zbiera stan modułów SELinux.
Zmienne roli
usunięcie lokalnych modyfikacji
Domyślnie modyfikacje określone w selinux_booleans
, selinux_fcontexts
, selinux_ports
i selinux_logins
są stosowane na już istniejących modyfikacjach. Aby usunąć lokalne modyfikacje przed ustawieniem nowych, ustaw następujące zmienne na true
:
selinux_booleans_purge
- zmienne boolean SELinuxselinux_fcontexts_purge
- konteksty plików SELinuxselinux_ports_purge
- porty SELinuxselinux_logins_purge
- mapowanie użytkowników SELinux
Możesz usunąć wszystkie modyfikacje, stosując selinux_all_purge: true
:
selinux_all_purge: true
selinux_policy, selinux_state
Zarządzanie typem polityki SELinux oraz trybem.
selinux_policy: targeted
selinux_state: enforcing
Dopuszczalne wartości dla selinux_state
to disabled
, enforcing
i permissive
.
Jeśli selinux_state
nie jest ustawione, stan SELinux nie zmienia się. Jeśli selinux_policy
nie jest ustawione, a SELinux ma być włączony, domyślnie przyjmuje wartość targeted
. Jeśli SELinux jest już włączony, polityka nie jest zmieniana.
Używa to modułu selinux do zarządzania trybem i polityką SELinux.
selinux_booleans
Zarządzanie stanem zmiennych boolean SELinux. To jest lista
dict
, gdzie każdy dict
jest w tym samym formacie, co używany przez moduł seboolean.
selinux_booleans:
- name: samba_enable_home_dirs
state: true
- name: ssh_sysadm_login
state: true
persistent: true
selinux_fcontexts
Zarządzanie stanem definicji mapowania kontekstów plików SELinux. To jest lista
dict
, gdzie każdy dict
jest w tym samym formacie, co używany przez moduł sefcontext.
selinux_fcontexts:
- target: '/tmp/test_dir(/.*)?'
setype: 'user_home_dir_t'
ftype: d
state: present
Użytkownicy mogą również przekazać następujące opcjonalne parametry:
seuser
: aby ustawić użytkownika SELinuxselevel
: aby ustawić zakres bezpieczeństwa MLS/MCS (tylko systemy MLS/MCS). Zakres SELinux dla mapowania logowania SELinux domyślnie odpowiada zakresowi rekordu użytkownika SELinux.
Indywidualne modyfikacje mogą być usunięte poprzez ustawienie state
na absent
.
selinux_ports
Zarządzanie stanem polityki portów SELinux. To jest lista
dict
, gdzie każdy dict
jest w tym samym formacie, co używany przez moduł seport.
selinux_ports:
- ports: 22100
proto: tcp
setype: ssh_port_t
state: present
local: true
selinux_restore_dirs
To jest lista
ciągów, gdzie każdy ciąg to drzewo systemu plików, w którym chcesz uruchomić restorecon
:
selinux_restore_dirs:
- /tmp/test_dir
selinux_logins
Zarządzanie mapowaniem użytkownika linux na użytkownika SELinux. To jest lista
dict
, gdzie każdy dict
jest w tym samym formacie, co używany przez moduł selogin.
selinux_logins:
- login: plautrba
seuser: staff_u
state: absent
- login: default
seuser: staff_u
serange: s0-s0:c0.c1023
state: present
selinux_modules
Możliwe jest zarządzanie modułami SELinux za pomocą zmiennej selinux_modules
, która będzie zawierać list
dict
, np.:
selinux_modules:
- path: localmodule.pp
state: enabled
- path: localmodule.cil
priority: 350
state: enabled
- name: unconfineduser
state: disabled
- name: localmodule
priority: 350
state: absent
path
: plik lokalnego modułu (plik .cil lub .pp) do zainstalowania na węźle, używany do instalacji nowych modułówname
: nazwa modułu, używana do włączania wyłączonych modułów, wyłączania włączonych modułów, usuwania modułówpriority
: priorytet modułu SELinux, domyślnie wynosi "400". "100" jest używane dla modułów instalowanych z pakietów selinux-policy, "200" dla innych modułów instalowanych z rpmów ze strony trzeciej, "300" jest używane przez SETroubleshootstate
: jedna z następujących wartościenabled
: zainstalować lub włączyć modułdisabled
: wyłączyć modułabsent
: usunąć moduł
Uwaga: Budowanie modułów z źródła na węzłach nie jest wspierane. W wielu przypadkach binarny moduł pp lub cil może być używany na różnych systemach, pod warunkiem, że wszystkie systemy wspierają typy, klasy i uprawnienia używane w module. W przypadku modułu pp musi być on także zbudowany z najniższą wersją obsługiwanego module policydb na docelowych systemach, tzn. na najstarszym systemie.
Uwaga: Priorytety modułów są ignorowane w Red Hat Enterprise Linux 6.
Uwaga: Zarządzanie modułami jest idempotentne tylko na Fedory i EL 8.6 oraz nowszych. Możesz zarządzać modułami na starszych wersjach, ale nie będzie to idempotentne.
selinux_transactional_update_reboot_ok
Ta zmienna jest używana do obsługi restartów wymaganych przez aktualizacje transakcyjne. Jeśli aktualizacja transakcyjna wymaga restartu, rola wykona restart, jeśli selinux_transactional_update_reboot_ok
jest ustawione na true
. Jeśli ustawione na false
, rola powiadomi użytkownika, że wymagany jest restart, pozwalając na dostosowane zarządzanie wymaganiem restartu. Jeśli ta zmienna nie jest ustawiona, rola zakończy działanie, aby upewnić się, że wymaganie restartu nie zostało pominięte.
selinux_transactional_update_reboot_ok: true
Fakty Ansible
selinux_reboot_required
Ten fakt customowy jest ustawiany na true
, jeśli konieczny jest restart systemu, gdy SELinux jest ustawiony z disabled
na enabled
lub odwrotnie. W przeciwnym razie fakt jest ustawiony na false
. W przypadku, gdy potrzebny jest restart systemu, zostanie to wskazane przez zwrócenie błędu z roli, co należy obsłużyć za pomocą konstrukcji block:
...rescue:
. Restart musi być wykonany w playbooku, sama rola nigdy nie restartuje zarządzanego hosta. Po restarcie rolę należy ponownie zastosować, aby zakończyć zmiany.
selinux_installed_modules
Ten fakt customowy reprezentuje strukturę magazynu modułów SELinux.
"selinux_installed_modules": {
<nazwa modułu>: {
<priorytet modułu>: ("enabled"|"disabled"),
...
},
...
}
np.
"ansible_facts": {
"selinux_installed_modules": {
"abrt": {
"100": "enabled",
"400": "disabled"
},
"accountsd": {
"100": "enabled"
},
"acct": {
"100": "enabled"
}
}
}
UWAGA: Priorytet modułu jest ustawiany na "0", gdy priorytety nie są obsługiwane, np. w Red Hat Enterprise Linux 6.
Przykłady
Ogólne zastosowanie jest demonstrowane w pliku playbook selinux-playbook.yml.
rpm-ostree
Patrz README-ostree.md.