iptables 通过 syslog-ng 将日志记录到不同的文件

iptables 通过 syslog-ng 将日志记录到不同的文件

我的 iptables 和 syslog 文件中有以下配置:

IP表

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 222 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

-A INPUT -j DROP

-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

系统日志异常

destination d_iptables { file("/var/log/iptables/iptables.log"); };

filter f_iptables { facility(kern) and match("IN=" value("MESSAGE")) and match("OUT=" value("MESSAGE")); };

filter f_messages { level(info,notice,warn) and
                    not facility(auth,authpriv,cron,daemon,mail,news) and not 
filter(f_iptables); };

log { source(s_src); filter(f_iptables); destination(d_iptables); };`

我重新启动了 syslog-ng,但日志没有写入。

答案1

您的 syslog-ng 配置对我来说似乎没问题,但您的 iptables 配置却有问题。该-j LOG行出现在删除所有内容的行之后,因此永远不会到达。

您应该将 LOG 行直接移到要记录的任何事件之前。如果您想记录所有内容,请将其放在最前面。如果您想记录所有未接受的内容,请将其放在所有接受之后。

答案2

好的,经过很多痛苦之后我终于让它工作了,这是最终的配置,我希望它能对某人有所帮助。

iptables

    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :LOGNDROP - [0:0]
    :OUTPUT ACCEPT [63:18352]
    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 222 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 
    -A INPUT -s 85.25.146.0/24 -j DROP 
    -A INPUT -j DROP

系统日志配置文件

destination d_iptables { file("/var/log/iptables.log"); };
filter f_iptables { match("iptables denied" value("MESSAGE")); };
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail) and not filter(f_iptables); };
#       not facility(auth,authpriv,cron,daemon,mail,news) and not filter(f_iptables); };
filter f_kern { facility(kern) and not filter(f_iptables); };
log { source(s_src); filter(f_iptables); destination(d_iptables); };

相关内容