rsyslog 액세스가 거부되었습니다.

rsyslog 액세스가 거부되었습니다.

좋은 아침이에요,

rsyslog를 사용하여 Zeek 로그를 로컬 네트워크의 다른 호스트로 보내려고 합니다.

지금까지 /etc/rsyslog.d에 다음과 같은 구성 파일이 있습니다.

module(load="imfile")

#### Templates ####
template (name="zeek_Logs" type="string"
          string="<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %$!msg%\n"
         )

#### RULES for where to send Log Files ####
# Send messages over TCP using the ZEEK_Logs template
ruleset(name="send_zeek_logs") {
    if $msg startswith not "#" then {
        set $!msg = replace($msg, "|", "%7C"); # Handle existing pipe char
        set $!msg = replace($!msg, "\t", "|");

        action (
            type="omfwd"
            protocol="tcp"
            target="192.168.1.140"
            port="7000"
            template="zeek_Logs"
        )
    }
}

#### Inputs ####

input (
    type="imfile"
    File="/opt/zeek/logs/current/weird.log"
    Tag="zeek_weird"
    Facility="local7"
    Severity="info"
    RuleSet="send_zeek_logs"
)

input (
    type="imfile"
    File="/opt/zeek/logs/current/modbus_detailed.log"
    Tag="zeek_detailed"
    Facility="local7"
    Severity="info"
    RuleSet="send_zeek_logs"
)

그러나 rsyslog를 시작할 때 다음 오류가 발생합니다.

nov. 22 13:00:53 zeek rsyslogd[1442]: imfile: on startup file '/opt/zeek/logs/current/weird.log' does not exist but is configured in static file monitor - this may indicate a misconfiguration. If the file appears at a later time, it will automatically be processed. Reason: Permission denied [v8.2001.0]>
nov. 22 13:00:53 zeek rsyslogd[1442]: imfile: on startup file '/opt/zeek/logs/current/modbus_detailed.log' does not exist but is configured in static file monitor - this may indicate a misconfiguration. If the file appears at a later time, it will automatically be processed. Reason: Permission denied [v8.2001.0]>
nov. 22 13:00:53 zeek rsyslogd[1442]: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="1442" x-info="https://www.rsyslog.com"] start

/opt/zeek/logs 디렉토리에 읽기 권한을 부여하려고 시도했으며 의류도 일시적으로 비활성화했지만 아무 효과가 없었습니다.

내가 무엇을 놓치고 있나요?

당신의 도움을 주셔서 감사합니다.

답변1

사용자 syslog에 디렉터리에 대한 읽기 권한이 없을 수 있습니다. 다음 명령을 사용하여 테스트할 수 있습니다.

sudo -u syslog ls /opt/zeek/logs/current

물론 권한 실패는 트리의 상위 디렉터리로 인해 발생할 수 있습니다. 위치를 찾는 방법에 대한 대략적인 bash 예:

TESTDIR=/opt/zeek/logs/current
while [[ ${#TESTDIR} -gt 1 ]]; do
    sudo -u syslog ls "$TESTDIR" >/dev/null 2>&1 && \
    echo "syslog can read contents of $TESTDIR" || \
    echo "syslog cannot read contents of $TESTDIR"
    TESTDIR=$(dirname "$TESTDIR")
done

관련 정보