我的 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); };