我在 Redhat Enterprise Linux 8 上有一个以 unconfined_service_t SELinux 类型运行的守护进程:
# ps -eZ | grep savd
system_u:system_r:unconfined_service_t:s0 693 ? 00:00:00 savd
它正在尝试使用 insmod 加载 Linux 内核模块。
SELinux(处于强制模式)正在阻止它:
type=AVC msg=audit(1566572669.301:24): avc: denied { module_load } for pid=815 comm="insmod" path="/opt/sophos-av/talpa/current/talpa_syscallhook.ko" dev="xvda2" ino=48087622 scontext=system_u:system_r:unconfined_service_t:s0 tcontext=system_u:object_r:usr_t:s0 tclass=system permissive=0
我尝试设置 domain_kernel_load_modules 以允许所有域加载内核模块:
setsebool -P domain_kernel_load_modules 1
以防万一我误解了,我也尝试0
过,然后重新启动,但是加载内核模块被阻止了。
audit2allow 建议为它创建一个规则,但我认为 domain_kernel_load_modules 将允许所有进程加载内核模块,所以我不明白为什么它不起作用?
我可以在不创建额外策略的情况下获得不受限制的服务来加载内核模块吗?
如果重要的话,它是一个 AWS 实例虚拟机。
包含内核模块的文件具有安全上下文
system_u:object_r:usr_t:s0
。这不是内核模块的预期类型。这让我觉得您的安装出了点问题,因为 Sophos 应该在安装时设置了正确的安全上下文。这可能是一个错误。无论如何,正确的类型是
modules_object_t
. 您可以尝试更改文件类型作为解决方法,直到 Sophos 解决问题。(你也应该向他们报告。)