[9] SELinux –  audit2allow

16 marca 2022 Wyłączono przez Adam [zicherka] Nogły

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