IPtables 日志记录不起作用

IPtables 日志记录不起作用

我已经设置了一个简单的 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

相关内容