Selinux는 clamd가 각 스레드에 대해 새 포트를 열지 못하도록 방지합니다.

Selinux는 clamd가 각 스레드에 대해 새 포트를 열지 못하도록 방지합니다.

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

마찬가지로 다음 오류는 내 문제와 관련된 것 같습니다.

하지만 읽어본 후에는 문제를 해결하는 방법을 정말로 이해할 수 없습니다.

공식 CentOS 저장소에서 제공하는 패키지 업데이트를 계속 사용하고 싶으므로 방금 적용한 업데이트(위에 붙여넣음)를 롤백하지 않겠습니다. 또한 SElinux를 강제 모드로 유지하고 싶습니다.

어느안과학디버깅을 계속하고 문제를 해결하려면 어떻게 해야 합니까?

관련 정보