是否可以将 iptables 日志链的日志输出重定向到单独的日志文件中?

是否可以将 iptables 日志链的日志输出重定向到单独的日志文件中?

我不想将iptables的日志输出与其他系统日志混合。如何为iptablesLOG 链输出指定专用日志文件?

答案1

如何执行此操作取决于您使用的日志守护程序,syslog或者syslog-ng.

系统日志,您可以通过调整特定日志级别以仅包含iptables消息来做到这一点。

/etc/syslog.conf

kern.warning     /var/log/iptables

iptables使用该日志级别的设置:

iptables -A INPUT -j LOG --log-level 4

有了syslog-ng你,你应该能够变得更花哨一点。您可以过滤内容并将该内容发送到特定的日志文件,而不是破坏日志级别。

/etc/syslog-ng/syslog-ng.conf

destination d_iptables { file("/var/log/iptables"); };
filter f_iptables { match("IN=[A-Za-z0-9\.]* OUT=[A-Za-z0-9\.]*" value("MESSAGE")); };
log { source(s_sys); filter(f_iptables); destination(d_iptables); }

答案2

你可以使用这样的东西:

:msg,contains,"IPTABLES:" /var/log/iptables
& stop

它应该添加在任何其他规则之前,例如:

:msg,contains,"IPTABLES:" /var/log/iptables
& stop

auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
cron.*              /var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
...

您只需将 更改IPTABLES:为您在 LOG 目标中设置的内容即可。如果您不使用& stop,该消息将记录在两个文件中:标准/var/log/syslog文件和/var/log/iptables.

这是比重定向所有 kern.warning 消息更好的解决方案,因为在这种情况下,您可以重定向一些其他信息,而不仅仅是您想要的信息。

相关内容