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

我在使用Iptables日志时遇到了麻烦,我无法从kern.log,syslog和消息文件中取出它们。

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

这是我的rsyslog.conf:

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

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


 #
 #首先是一些标准的日志文件。 按设施logging。
 #
 auth,authpriv。* /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
 mail。*  -  / var / log / mail.log
 user。*  -  / var / log / user.log

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

我怎样才能logging只iptables.log iptable丢弃的数据包,而不是在kern.log文件?

我不确定& ~从哪里来,但至less下面应该执行你想要的:

 # 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: " ~ 

也许不是最优雅的,但类似的configuration似乎为我工作。

你有一个可以发布的iptables规则的例子吗? 你知道iptables可以设置--log-level或者--log-prefix ,你可以使用它们来过滤消息到特定的日志文件。

默认情况下,iptables的东西将被定向到kern.info 。 如果您没有使用任何选项来设置备用级别,您可以将您的configuration更新到syslog。

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

您可以为kern.log做类似的事情,但请记住,这也会redirect其他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 ,并用它来做一些高级过滤,而不是仅仅使用service / severity进行过滤。