从 kern.log 系统日志消息中删除 Iptables 日志

从 kern.log 系统日志消息中删除 Iptables 日志

我对 Iptables 日志有问题,我无法从 kern.log、syslog 和消息文件中提取它们。

我在 rsyslog.conf 中添加了两条规则,将我的消息重定向到“iptables.log”文件,但日志也存在于 kern 日志中。

这是我的 rsyslog.conf:

###############
#### 规则 ####
###############

# Iptables
:msg,包含,“IPT IN/DP:”-/var/log/iptables.log
:msg,包含,“IPT6 IN/DP:”-/var/log/iptables.log
& ~


#
# 首先是一些标准日志文件。按设施记录。
#
身份验证,身份验证权限。* /var/log/auth.log
*.*;auth,authpriv.none,cron.none-/var/log/syslog
cron.* /var/log/cron.log
守护进程。*-/var/log/daemon.log
kern.*-/var/log/kern.log
lpr.*-/var/log/lpr.log
邮件。*-/var/log/mail.log
用户。*-/var/log/user.log

#(其他一些规则....)
邮件,news.none-/var/log/messages

我怎样才能将 iptables 丢弃的数据包仅记录在 iptables.log 中而不记录在 kern.log 文件中?

答案1

我不确定从何而来& ~,但至少以下内容应该可以执行您想要的操作:

# Iptables
:msg,contains,"IPT IN/DP: " -/var/log/iptables.log
:msg,contains,"IPT6 IN/DP: " -/var/log/iptables.log
:msg,contains,"IPT IN/DP: " ~
:msg,contains,"IPT6 IN/DP: " ~

也许不是最优雅的,但类似的配置对我来说似乎有效。

答案2

您有可以发布的 iptables 规则示例吗?您知道 iptables 可以设置--log-level或同时设置--log-prefix两者,您可以使用它们将消息过滤到特定的日志文件。

默认情况下,iptables 内容将被定向到kern.info。如果您不使用任何选项来设置备用级别,您可以将 syslog 的配置更新为此。

*.*;auth,authpriv.none;\
        kern.!info              -/var/log/syslog

您可以对 kern.log 执行类似操作,但请记住,这还会重定向其他 kern.info 消息,而不仅仅是 iptables。所以也许这样的事情可以满足您的需求?kern_info.log 可能是 99.9% 的 iptables 日志。

 kern.*;kern.!info              -/var/log/kern.log
 kern.info                      -/var/log/kern_info.log

不过,我读到过 rsyslog 有一些非常高级的过滤功能。因此,您可以设置--log-prefix并使用它进行一些高级过滤,而不仅仅是使用服务/严重性进行过滤。

相关内容