[9] SELinux – audit2allow
16 marca 2022Używając polecenia [audit2allow], można łatwo wygenerować zasady SELinux zezwalające na reguły z logów zabronionych operacji.
Jednak [audit2allow] może zezwalać na większy dostęp niż jest to wymagane, więc w niektórych przypadkach lepiej jest skonfigurować za pomocą polecenia [restorecon] lub [chcon].
Przy okazji, jeśli w systemie nie ma [audit2allow], zainstaluj go za pomocą [dnf install policycoreutils-python-utils].
[1] Wyświetla powody odmowy odczytu plików dziennika.
Jeśli nie określono żadnego pliku dziennika, audit2allow odczytuje [/var/log/audit/audit.log].
Jeśli określisz pliki dziennika, ustaw opcję [-i logfile] zamiast opcji [-a].
# wyświetl powód odmowy AVC odczytu audit.log [root@vlsr01 ~]# audit2allow -w -a libsepol.context_from_record: type NetworkManager_dispatcher_t is not defined libsepol.context_from_record: could not create context structure libsepol.context_from_string: could not create context structure libsepol.sepol_context_to_sid: could not convert system_u:system_r:NetworkManager_dispatcher_t:s0 to sid libsepol.context_from_record: type NetworkManager_dispatcher_t is not defined libsepol.context_from_record: could not create context structure libsepol.context_from_string: could not create context structure libsepol.sepol_context_to_sid: could not convert system_u:system_r:NetworkManager_dispatcher_t:s0 to sid libsepol.context_from_record: type NetworkManager_dispatcher_t is not defined libsepol.context_from_record: could not create context structure libsepol.context_from_string: could not create context structure libsepol.sepol_context_to_sid: could not convert system_u:system_r:NetworkManager_dispatcher_t:s0 to sid libsepol.context_from_record: type NetworkManager_dispatcher_t is not defined libsepol.context_from_record: could not create context structure libsepol.context_from_string: could not create context structure libsepol.sepol_context_to_sid: could not convert system_u:system_r:NetworkManager_dispatcher_t:s0 to sid type=AVC msg=audit(1646556540.448:42): avc: denied { execute } for pid=1074 comm="(spatcher)" name="nm-dispatcher" dev="dm-0" ino=17408982 scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=file permissive=0 trawcon="system_u:object_r:NetworkManager_dispatcher_exec_t:s0" Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access. type=AVC msg=audit(1646556565.448:74): avc: denied { execute } for pid=1278 comm="(spatcher)" name="nm-dispatcher" dev="dm-0" ino=17408982 scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=file permissive=0 trawcon="system_u:object_r:NetworkManager_dispatcher_exec_t:s0" Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access. # na przykład użyj ausearch, aby wyświetlić określone logi [root@vlsr01 ~]# ausearch -m AVC --start 15.03.2022 12:00:00 --end 15.03.2022 19:50:00 | audit2allow -w type=AVC msg=audit(1647352968.495:364): avc: denied { open } for pid=111937 comm="sshd" path="/var/lib/sss/mc/passwd" dev="dm-0" ino=17597510 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:var_lib_t:s0 tclass=file permissive=1 Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access. type=AVC msg=audit(1647352968.495:364): avc: denied { read } for pid=111937 comm="sshd" name="passwd" dev="dm-0" ino=17597510 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:var_lib_t:s0 tclass=file permissive=1 Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access. # wyświetl wymagany typ z opcją –a [root@vlsr01 ~]# ausearch -m AVC --start 15.03.2022 15:00:00 --end 15.03.2022 19:00:00 | audit2allow -a #============= auditd_t ============== #!!!! This avc can be allowed using the boolean 'domain_can_mmap_files' allow auditd_t var_lib_t:file map; allow auditd_t var_lib_t:file { getattr open read }; allow auditd_t var_lib_t:sock_file write; #============= chkpwd_t ============== #!!!! This avc can be allowed using the boolean 'domain_can_mmap_files' allow chkpwd_t var_lib_t:file map; allow chkpwd_t var_lib_t:file { getattr open read }; allow chkpwd_t var_lib_t:sock_file write;
[2] Generuj regułę zezwalającą jak poniżej.
# na przykład wygeneruj moduł [test_rule] [root@vlsr01 ~]# ausearch -m AVC --start 15.03.2022 15:00:00 --end 15.03.2022 15:30:00 | audit2allow -a -M test_rule ******************** WAŻNE *********************** Aby aktywować ten pakiet polityki, należy wykonać: semodule -i test_rule.pp # zainstaluj moduł za pomocą poniższej komendy [root@vlsr01 ~]# semodule -i test_rule.pp # upewnij się, że moduł został załadowany [root@vlsr01 ~]# semodule -l | grep test_rule test_rule