CentOS7 上强制执行的 SElinux 再次阻止 clamAV 扫描文件操作。
几个月前,我遇到了同样的问题发布在这里,最后我通过以下配置解决了这个问题:
# grep 'StreamMin\|StreamMax' /etc/clamd.d/scan.conf
StreamMaxLength 2000M
StreamMinPort 30000
StreamMaxPort 32000
# getsebool -a | grep antivirus
antivirus_can_scan_system --> on
antivirus_use_jit --> on
# semanage port -l | grep clamd
clamd_port_t tcp 30000-32000, 3310
昨天系统得到了 yum 更新,在它们之间,我看到selinux-policy*
软件包也更新了:
Updated selinux-policy-3.13.1-102.el7_3.16.noarch @updates
Update 3.13.1-166.el7_4.4.noarch @updates
Updated selinux-policy-targeted-3.13.1-102.el7_3.16.noarch @updates
Update 3.13.1-166.el7_4.4.noarch @updates
更新后,同样的问题又回来了,如下所示/var/log/messages
:
Sep 15 10:55:45 production clamd: LibClamAV Warning: RWX mapping denied: Can't allocate RWX Memory: Permission denied
Sep 15 10:55:45 production clamd: LibClamAV Warning: Bytecode: disabling JIT because SELinux is preventing 'execmem' access.
Sep 15 10:55:45 production clamd: Run 'setsebool -P clamd_use_jit on'.
日志看起来很清楚,也提供了解决方案,但无论如何,这个布尔值之前已经设置为 true,所以它看起来没有那么有用。
以下是相关audit.log
条目:
type=AVC msg=audit(1505723879.248:302432): avc: denied { name_connect } for pid=21691 comm="java" dest=3310 scontext=system_u:system_r:tomcat_t:s0 tcontext=system_u:object_r:clamd_port_t:s0 tclass=tcp_socket
同样,以下错误似乎与我的问题有关:
- https://bugzilla.redhat.com/show_bug.cgi?id=1248785
- https://bugzilla.redhat.com/show_bug.cgi?id=573191
但阅读它们后我真的不明白如何解决它。
我想坚持使用官方 CentOS 存储库提供的软件包更新,因此我会避免回滚刚刚应用的更新(上面粘贴)。另外,我想将 SElinux 保持在强制模式下。
任何眼科如何继续调试并解决问题?