이것은 내 이전 질문과 다소 관련이 있습니다.여기.
/etc/rsyslog.d
다음을 포함하는 세 개의 파일이 있습니다 /etc/rsyslog.conf
.
00-iptables.conf
50-default.conf
postfix.conf
첫 번째는 제가 만든 것입니다. 내 가정은 이름 지정으로 인해 이전에 포함될 것이라고 가정했지만 50-default.conf
필터 줄을 50-default.conf
내 사용자 정의 파일에 직접 넣고 제거해 보았습니다( 00-iptables.conf
).
:msg, startswith, "ipt:" /var/log/iptables.log
& stop
매뉴얼 페이지에 명시된 대로 running with ~
로 대체되고 문제 해결 단계에서 경고를 제공합니다. 즉 , 사용 가능한(공식!) 문서가 오래되었거나 뒤쳐진 것으로 나타납니다 .stop
rsyslogd
-N1
~
stop
이제 여기에서 아이디어는 접두사가 붙은 모든 메시지는 ipt:
지정된 로그 파일로 이동하고 다른 로그 파일은 이 줄을 수신하지 않는다는 것입니다(저도 를 contains
사용하지 않고 시도했습니다 startswith
). syslog
더 이상 이 메시지를 받지 말아야 하는지에 구체적으로 언급되어 있습니다 kern.log
.50-default.conf
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
kern.* -/var/log/kern.log
rsyslog 문서를 읽었지만 문서는속성 기반 필터(반품여기) 가장 계몽적이지 않습니다. 문서에 제공된 예(다른 곳에서도 찾을 수 있음) 및그들의 위키는 비슷한 예를 제공합니다:
# From documentation
*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational" ~
*.* /var/log/allmsgs-but-informational.log
# From Wiki
:syslogtag, startswith, "MSWinEventLog#011" /var/log/messages;fixsnareFormat
& @192.168.1.8;fixsnareForwardFormat
& ~
문서의 예는 제가 작성한 두 줄의 코드와 아주 가깝지는 않지만 여전히 ~
의미를 더 잘 설명합니다.
내가 뭘 잘못했나요?
선택기와 속성을 결합하는 방법이 있다면 누구나 답변할 수 있다면 보너스 포인트가 됩니다. 예를 들어:
:msg, startswith, "ipt:" kern.* /var/log/iptables.log
참고: 저는 버전 7.4.4를 사용하고 있습니다 rsyslog
. 네, service rsyslog restart
변경한 후 실행하고 적용되기를 기다렸습니다.
편집하다
추가 정보. 디버그 모드( )에서 데몬을 실행할 때 RSYSLOG_DEBUG=LogFuncFlow RSYSLOG_DEBUGLOG=~/rsl.log $(which rsyslogd) -f /etc/rsyslog.conf -d
최적화된 규칙 세트가 다음과 같은 모습을 볼 수 있습니다. 이는 정확히 내가 원하는 방식임을 나타내는 것 같습니다(간결함을 위해 선행 접두사가 제거됨).
ruleset 'RSYSLOG_DefaultRuleset' after optimization:
ruleset 0x214a640: rsyslog ruleset RSYSLOG_DefaultRuleset:
PROPFILT
Property.: 'rawmsg'
Operation: 'contains'
Value....: 'ipt:'
THEN
ACTION 0x215c070 [builtin:omfile:/var/log/iptables.log]
STOP
END PROPFILT
PRIFILT 'auth,authpriv.*'
pmask: X X X X FF X X X X X FF X X X X X X X X X X X X X X
ACTION 0x215e840 [builtin:omfile:/var/log/auth.log]
END PRIFILT
PRIFILT '*.*;auth,authpriv.none'
pmask: FF FF FF FF X FF FF FF FF FF X FF FF FF FF FF FF FF FF FF FF FF FF FF FF
ACTION 0x215f030 [builtin:omfile:-/var/log/syslog]
END PRIFILT
/var/log/iptables.log
또한 내가 본 동작을 통해 필터가 예상대로 파일에 명확하게 쓰기 때문에 효과가 있다고 추론할 수 있다는 점을 추가해야 합니다. 그러나 메시지가 해당 특정 파일에 기록된 후에는 메시지가 예상대로 삭제되지 않습니다.
kern.log
다음 은 후자뿐만 syslog
아니라 모두로 끝나는 예제 줄입니다 . iptables.log
개인정보 보호를 위해 세부정보는 수정되었습니다.
Jun 1 02:23:01 hostname kernel: [70025.211497] ipt:drop IN=eth0 OUT=virbr0 MAC=dd:cc:bb:aa:99:88:77:66:55:44:33:22:11:00 SRC=9.8.7.6 DST=1.2.3.4 LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=59201 DF PROTO=TCP SPT=47626 DPT=23 WINDOW=4380 RES=0x00 SYN URGP=0
답변1
RainerScript를 사용하지 않는 이유는 무엇입니까? 시설 선택기 대신 $syslogfacility-text
. 효과적으로 이는 선택기와 속성을 결합합니다.
if ($msg startswith 'ipt:' and $syslogfacility-text == 'kern') then {
action(type="omfile" file="/var/log/iptables.log")
stop
}
또한 Rsyslog 문서에는 버전 7 트리가 더 이상 사용되지 않으며아니요사용(http://www.rsyslog.com/doc/v7-stable/).
답변2
문제가 해결되었는지 확실하지 않습니다. 모든 세부 사항을 다루지는 않았지만 rsyslog는 특정 구성에 따라 다양한 방식으로 메시지를 보낼 수 있습니다. 예를 들어 동시에 모든 조건에 보낼 수도 있고 첫 번째 조건에 보낸 다음 두 번째 조건에 보내는 식으로 보낼 수도 있습니다. 모든 사람에게 동시에 전송하도록 설정했다면 중지해도 문제가 되지 않습니다. rsyslog 비동기/동기/병렬, 특히 직접/연결 목록 유형 대기열을 찾으면 rsyslog 흐름 방식이 변경됩니다.