8

我需要在我的 Linux 服务器上停用 RepeatedMsgReduction 以允许 fail2ban 评估每次失败的登录尝试。(请参阅此错误报告:http ://bugs.debian.org/cgi-bin/bugreport.cgi?bug=440037 )

由于我不想淹没我的日志文件,我希望仅在那些失败 2ban 扫描的日志文件上拥有该功能,尤其是 mail.warn。

有没有办法在 rsyslog.conf 中设置条件规则/过滤器

$RepeatedMsgReduction = off

如果消息绑定到 mail.warn?

4

2 回答 2

12

好的,一次又一次地阅读手册和文档现在让我找到了解决方案:

阅读http://www.rsyslog.com/doc/rsconf1_repeatedmsgreduction.html告诉你,该指令

$RepeatedMsgReduction off

在指定下一个指令之前保持有效。

这意味着,如果您想要 mail.warn 的所有消息,但想要减少所有其他消息(mail.info 和 mail.err)中的消息,请将配置更改为如下所示(假设消息减少是全局打开的):

mail.info                       -/var/log/mail.info
$RepeatedMsgReduction off
mail.warn                       -/var/log/mail.warn
$RepeatedMsgReduction on
mail.err                        /var/log/mail.err

这样,mail.warn 将包含所有记录的消息,而其他日志级别(和文件)将包含著名的“最后一条消息重复 n 次”行。这允许例如fail2ban 检查mail.warn 是否有恶意活动,而其他日志文件保持“干净”。

于 2013-12-12T22:20:08.223 回答
2

我很欣赏这里提供的研究,展示了如何选择性地禁用 rsyslog 消息减少。但是,我认为重要的是要认识到有支持完全禁用归约的论点。

背景:

Syslog 的MARK工具旨在通过定期将条目记录为以下内容来提供 syslog(并通过推断服务器本身)正在运行的证据:

Sep 5 11:41:28 servername rsyslogd: -- MARK --

我来到这个 SO 问题是因为消息减少通过聚合我的标记消息来破坏 MARK的目的:

Sep 5 12:33:46 servername rsyslogd: message repeated 48 times: [-- MARK --]

即,上述消息被记录以代替48 条定期消息,从而使它们作为跟踪信息的效用无效。

分析:

因此,最初我计划仅对MARK消息禁用缩减。然而,在阅读了这篇文章后,我倾向于完全关闭RepeatedMsgReduction

  • 虽然开启此功能可以节省一些日志空间,但大多数日志分析工具需要查看重复消息,它们无法处理“最后一条消息重复”格式。

  • 几十年前,当日志很小并由人工审查时,这是一个有效的功能,它在工具处理的大量日志上严重失败。

结论:

我建议简单地禁用减少。为什么?现在磁盘空间很便宜,而且我们越来越依赖像fail2ban这样的自动化工具,减少的好处被配置复杂性和信息丢失的成本所抵消。

于 2019-09-05T18:28:27.413 回答