我已经设置了一个简单的 iptable,它会将所有丢弃的包记录到一个文件中。当我检查日志文件时,它是空的。
我的 iptables:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere #Allow loopback
LOGGING all -- anywhere anywhere
DROP all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain LOGGING (1 references)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix "IPTables-Dropped: "
DROP all -- anywhere anywhere
然后/etc/rsyslog.d/90-iptables.conf
我将消息重定向到另一个文件:
:msg,contains,"IPTables-Dropped: " /var/log/iptables.log"
现在变成了
kern.warning /var/log/iptables.log
产出sudo iptables -v -x -n -L
量:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
58254 11751250 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
3937 232480 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
52 2824 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
68 3696 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
114 9187 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
1636 154417 LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
16 668 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 70233 packets, 16508738 bytes)
pkts bytes target prot opt in out source destination
Chain LOGGING (1 references)
pkts bytes target prot opt in out source destination
1641 154653 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "IPTables-Dropped: "
1640 154613 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
答案1
.conf
按照惯例,只有以in结尾的文件才会/etc/rsyslog.d
被查看rsyslogd
。默认/etc/rsyslogd.conf
文件包含以下内容:
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
建议将文件名从 更改为/etc/rsyslog.d/iptables.log
。/etc/rsyslog.d/iptables.conf
但是,请考虑进一步遵循惯例并包含与该目录中其他文件类似的加载顺序前缀。即/etc/rsyslog.d/90-iptables.conf
注意:我测试过/etc/rsyslog.d/iptables.conf
,并且它运行良好。
答案2
这是一个老问题,但据我所知,它没有可接受的答案或正确答案。它与目录中日志配置文件的加载顺序有关/etc/rsyslog.d/
。
我通过在iptables.conf
文件前面添加以下内容来修复此问题,10-
因此文件名为:
10-iptables.conf
这样会将其作为比50-defaults.conf
同一目录中的文件更高的优先级进行加载,我认为这会覆盖 iptables 日志配置中的行为,并将日志记录定向到 的默认文件位置/var/logs/syslog
。
它按字母顺序加载这些配置,因此通过对它们进行编号,您可以配置加载优先级。.conf
但是所有文件都需要有前缀,因为这是rsyslog
加载日志配置时要查找的内容。
答案3
这是因为它们是从内核记录的。
您需要将其更改为/etc/rsyslog.conf
kern.warning /var/log/iptables.log