우선, 시간을 내어 이 문제를 살펴봐주셔서 감사합니다. 정말 감사드립니다.
디스크가 가득 차서 rsyslog를 다시 시작해야 했던 오늘까지 첨부된 rsyslog.conf 구성을 실행 중이었습니다. 결과적으로 rsyslog는 이제 모든 이전 권한(현재 안전한 테스트를 위해 root|root rw)을 사용하여 새 위치(.conf 파일에서 업데이트됨)에 로깅됩니다.
내가 직면한 문제는 내가 무엇을 시도하더라도 rsyslog가 파일을 출력하지 않는다는 것입니다. tcpdump를 실행했지만 여전히 데이터를 수신하고 있습니다. 일치 기준(호스트 IP 주소)이 변경되어서는 안 되며 구성도 변경되어서는 안 됩니다.
어떤 도움이라도, 특히 실행할 수 있는 디버그 명령을 주시면 매우 감사하겠습니다. 제거하고 대신 syslog-ng를 사용하는 것보다 rsyslog와 같은 새로운 것을 배우고 싶습니다. 구성은 다음과 같습니다.
### Modules
$ModLoad imtcp
$ModLoad imudp
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
### Set log file permissions
$FileOwner root
$FileGroup root
$FileCreateMode 0777
$DirCreateMode 0777
$Umask 0022
$PrivDropToUser root
$PrivDropToGroup root
### Listeners
# bind ruleset to tcp listener
$InputTCPServerBindRuleset remote
# and activate it:
$InputTCPServerRun 514
$InputUDPServerBindRuleset remote
$UDPServerRun 514
### Templates
#Format the message correctly
$template MsgFormat,"%msg%\n"
# log every host in its own directory
##$template TESTLOG,"/opt/rsyslog/var/log/test.log"
### Rulesets
# Local Logging
# N/A None required at this point in time
#
# Remote Logging
$RuleSet remote
#---MY MATCHING RULE---#
if ($fromhost-ip == "192.168.1.1") then ?TESTLOG
미리 감사드립니다 :)
답변1
로그 파일에 대해 사용자 정의된 경로를 사용하고 있으므로 selinux가 사용자를 차단하고 있습니다. rsyslog를 발행 setenforce 0
하고 다시 시작해 보십시오. 이제 작동하면 문제가 selinux인 것으로 확인됩니다.
selinux를 계속 사용하는 동안 이를 영구적으로 수정하려면 다음을 발행해야 합니다.
semanage fcontext -a -t var_log_t '/opt/rsyslog(/.*)?'; restorecon -RF /opt/rsyslog
그런 다음 rsyslog를 다시 시작하십시오.