0xC*_*22L 6 configuration rsyslog syslog
这与我在此之前的问题有些相关。
我有三个文件,/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
Run Code Online (Sandbox Code Playgroud)
替换~
为stop
as running rsyslogd
with-N1
如手册页中所述,并在故障排除步骤中给出警告,说~
is deprecated inavor or 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
Run Code Online (Sandbox Code Playgroud)
我阅读了 rsyslog 文档,但是基于属性的过滤器的文档(也在这里)并不是最有启发性的。文档中给出的示例(也可以在其他地方找到)及其 Wiki 给出了一个类似的示例:
# 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
& ~
Run Code Online (Sandbox Code Playgroud)
虽然文档中的示例与我的两行代码不太接近,但它仍然解释了~
更好的含义。
我究竟做错了什么?
如果有人可以回答是否有组合选择器和属性的方法,则加分。例如:
:msg, startswith, "ipt:" kern.* /var/log/iptables.log
Run Code Online (Sandbox Code Playgroud)
注意:我使用 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
Run Code Online (Sandbox Code Playgroud)
我还应该补充一点,从我看到的行为中,我可以推断出过滤器有效果,因为它清楚地/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
Run Code Online (Sandbox Code Playgroud)
小智 0
不确定你是否解决了它。我没有详细介绍所有细节,但 rsyslog 可以根据某些配置以不同的方式发送消息。例如,它可以同时发送到所有条件,或者可以发送到第一个条件,然后发送到第二个条件,依此类推。如果您的设置是同时发送给所有人,则停止将没有实际意义。尝试寻找 rsyslog 异步/同步/并行,特别是直接/链表类型的队列,它们会改变 rsyslog 流的方式。