我对 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
并使用它进行一些高级过滤,而不仅仅是使用服务/严重性进行过滤。