有没有办法让UFW的日志不显示在dmesg中?

/etc/rsyslog.d/20-ufw.conf文件中有一些注释,可以选择不将UFW事件记录到内核和消息日志中,我已经这样做了。
我真的很想把UFW事件从中移除,但是如何实现呢?

4目前的解决办法是我将dmesg与dmesg | grep -v UFW建立了别名。 - 3dinfluence
1在Launchpad上的相关错误:12646211475676 - Pablo Bianchi
6个回答

您可以使用以下命令在Shell中禁用UFW日志记录:
sudo ufw logging off

默认日志级别为。来自UFW man page

  • off 禁用ufw管理的日志记录
  • low 记录所有未匹配默认策略的被阻止数据包(带有速率限制),以及匹配已记录规则的数据包
  • medium 日志级别低,加上所有未匹配默认策略的允许数据包,所有无效数据包和所有新连接。所有日志记录都带有速率限制。
  • high 日志级别中等(不带速率限制),加上所有带有速率限制的数据包
  • full 日志级别高(不带速率限制)

您可以使用sudo ufw status verbose命令获取当前日志级别。


每次开机都需要这样做吗? - Matthieu
2@Matthieu 不,这个命令会改变 /etc/ufw/ufw.conf 的配置,并在重新启动后保留。 - Sentry
哈利路亚!非常感谢。我已经被dmesg上的所有不必要的条目弄得发疯了。如果UFW只记录到/var/log/ufw.log,我会很满意的。但据我所知,你不能有一个而没有另一个?(参见上面的评论)。 - Gwyneth Llewelyn

我已经对这个问题进行了一些调查。
我不认为有什么办法可以解决这个问题。 dmesg 命令直接打印内核环形缓冲区的内容。这包含了您所看到的所有 ufw 日志条目。 /etc/rsyslog.d/20-ufw.conf 文件告诉 rsyslog 应该将内核环形缓冲区中的哪些 ufw 条目记录到 /var/log/ufw.log/var/log/kern.log 中。
您可以通过取消注释 /etc/rsyslog.d/20-ufw.conf 中包含 & ~ 的行,防止 ufw 条目被记录到 /var/log/kern.log 中(以消除重复)。
不幸的是,没有办法阻止 dmesg 命令显示这些消息。您的解决方法是我能想到的最好的方法。

1Chris,谢谢你关注这个问题。对你的努力给予一个赞。不过我暂时打算不回答这个问题,看看是否还有其他人有什么想法。也许这个问题没有解决办法,我会在Launchpad上提交一个错误报告,因为我相信还有其他人喜欢监视dmesg以确保服务器没有硬件问题,并且不希望看到UFW的条目。 - 3dinfluence
只是想回应你提到的错误报告:(已存档)Debian bug #664748Launchpad bug #555852 现在似乎正在跟踪这个问题。 - Jani Uusitalo
1只是提醒一下,我的/etc/rsyslog.d/20-ufw.conf文件中的& stop应该改为& ~ - alchemy

对于希望进一步微调日志级别的人,我建议使用“log”或拒绝/拒绝规则(请参阅 ufw man page了解详情)。例如,您可以使用“logging off”,然后插入明确的日志规则以记录所需内容。或者,您可以使用“logging low”,然后插入明确的拒绝/拒绝规则,以静默拒绝原本将被记录的匹配项。


你也可以使用grep来过滤掉UFW的消息。例如,
dmesg | grep -v UFW

这样你也可以保留日志以供审查。

4这几乎没有什么用,因为在任何面向互联网的实际服务器上,除了UFW消息之外,日志中没有其他内容。 - Antti Haapala

上述答案是唯一的方法:
    dmesg | grep -v UFW

但是你可以更容易地使用它,通过设置一个类似这样的别名:
    alias dmesg='dmesg | grep -v UFW'

如果您输入 dmesg,将执行 dmesg | grep -v UFW
如果您想保留 dmesg 的彩色版本,可以使用以下命令:
    alias dmesg='dmesg --color=always | grep -v UFW --color=always'

这样 dmesg 也可以在管道上使用颜色。 警告! 只在查看日志和搜索内容时使用此方法,因为这可能会破坏该会话中的某些第三方脚本。

dmesg -H 过滤后的等效命令是 dmesg --color=always | grep -ve '\[UFW' --color | less -R - undefined

为了摆脱这些警告,如果你确定它们是恶意的,你也可以明确地阻止这些IP地址,参见日志中的UFW BLOCK条目
它使用命令sudo ufw deny from XXX to YYY,以便这些IP地址无法ping或ssh到你的服务器。上面链接中的脚本从syslog中解析出所有这些恶意IP地址。

1你应该提供一些链接中的细节,以完整回答。 - Artur Meinild
你还可以通过将你想要允许连接的IP地址加入白名单,并将其他所有IP地址拒绝作为最后一条规则来停止记录日志。请参考https://askubuntu.com/a/1383632/1179344。 - ferdymercury