在我的 iptables 中,我有一个记录丢弃数据包的规则:
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
Run Code Online (Sandbox Code Playgroud)
在/etc/rsyslog.conf,我有另一个规则将这些日志发送到一个专用文件/var/log/firewall.log。
:msg, contains, "FW: " -/var/log/firewall.log
& ~
Run Code Online (Sandbox Code Playgroud)
将& ~立即删除日志,因此它们不会淹没syslog或其他日志文件。
这很有效,除了它充斥dmesg着那些防火墙日志(不是/var/log/dmesgcommand 的输出dmesg)。
有没有办法防止这些日志显示在dmesg?
我正在尝试将丢弃的包记录到自定义文件而不是/var/log/messages.
为了实现这一点,我在配置文件的末尾添加了这两行:
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
-A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我默认将 INPUT 和 OUTPUT 链配置为 DROP,因此如果包不符合任何先前的规则,它将被记录并删除。
但是,我无法将它们记录到自定义文件中。他们登录成功/var/log/messages,但我希望他们登录/var/log/iptables.log。我创建了/etc/rsyslog.d/iptables.conf包含以下内容的文件:
:msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
& ~
Run Code Online (Sandbox Code Playgroud)
然后我重新启动了 rsyslog,/etc/init.d/rsyslog restart并发送了一些我知道会被丢弃的包。然而,它们没有登录到 iptables.log,它们仍然被登录/var/log/messages。
缺少哪个配置?
已解决 的问题是-和/之间不应该有空格