将日志从 /var/log/kern.log 重定向到单独的 iptables 日志日志文件

将日志从 /var/log/kern.log 重定向到单独的 iptables 日志日志文件

我正在尝试将 iptables 日志重定向到另一个文件。根据我在网上的阅读,我做了以下事情:

在我的 iptables 规则中,我有如下规则:

iptables -A INPUT -s ... -j LOG --log-prefix "iptables@@" 然后在文件夹 /etc/rsyslog.d 中,我创建了一个包含以下条目的文件:

:msg,contains,"iptables@@" /var/log/iptables.log & ~ 我也尝试过在上面两行之间留一个空行。我现在确实将 iptables 日志条目发送到 iptables.log 文件。但它们也会发送到 /var/log/kern.log 文件。我想抑制后者。我该怎么做。我正在运行 Ubuntu 14.04 LTS。

答案1

当你的/etc/rsyslog.conf加载你的 *.conf/etc/rsyslog.d,它会按字母顺序读取您的文件。因此,您需要确保您的规则位于 50-default.conf 之前的文件中,例如:

01-myiptablesrules.conf

这样,你的规则将被首先读取,然后丢弃它。你还应该使用以下语法:

:msg, contains, "iptables@@" {
  *.* /var/log/iptables.log
  stop
}

*您应该使用 stop 而不是 ~

或者如果你没有其他的 kern.* 而不是你的 iptables 消息,你应该修改50-默认.conf和:

kern.*            /var/log/iptables.log

答案2

您的 rsyslog 配置文件中是否有一行将消息打印到/var/log/kern.log?如果有,请发布该代码。同时发布您的 rsyslog 版本号。与此同时,这可能会起作用:

:msg,contains,"iptables@@"             /var/log/iptables.log
:msg,contains,"iptables@@"             ~

不过我相信一旦你完成了第二行,rsyslog 将忽略所有包含的消息,iptables@@因此它无法在其他地方记录(该行之后)。

相关内容