Selinux로 인해 Rsyslog가 로깅되지 않습니다. 해결 방법이 괜찮습니까?

Selinux로 인해 Rsyslog가 로깅되지 않습니다. 해결 방법이 괜찮습니까?

/etc/rsyslog.conf에 이 두 매개변수가 있습니다.

$ModLoad imjournal # provides access to the systemd journal
...
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

SELinux에 문제가 있습니다. Rsyslog는 다음을 기록했습니다.

Jun  6 10:53:14 vpod1-logm-front-3 rsyslogd: fopen() failed: 'Permission denied', path: '/var/spool/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]

새로운 정책을 추가해야 했습니다(audit2alow에 의해 생성됨).

cat  >syslog-imjournal.te << EOF
module syslog-imjournal 1.0;

require {
        type syslogd_t;
        type var_spool_t;
        class dir { add_name remove_name write };
        class file { create rename unlink write };
}

#============= syslogd_t ==============

allow syslogd_t var_spool_t:dir write;
allow syslogd_t var_spool_t:dir { add_name remove_name };
allow syslogd_t var_spool_t:file { create rename unlink write };
EOF

checkmodule  -m -o syslog-imjournal.m syslog-imjournal.te
semodule_package --module syslog-imjournal.m --outfile syslog-imjournal.pp
semodule --install=syslog-imjournal.pp --priority=400 

이렇게 하는 것이 안전한지 모르겠습니다. 더 좋은 방법이 있습니까?

답변1

문제는 "imjournal.state" 파일을 잘못된 위치에 저장했기 때문에 SELinux가 쓰기를 차단하고 있다는 것입니다. 너무 많은 권한을 부여하는 사용자 정의 정책 모듈을 생성하는 대신 /var/lib/rsyslog인 기본 위치를 사용해야 합니다. 기본 구성은 다음과 같습니다.

$WorkDirectory /var/lib/rsyslog
$IMJournalStateFile imjournal.state

관련 정보