我正在尝试在 CentOS 7 上设置 IP 表,这是我过去做过的,但由于某种原因,我无法像我期望的那样记录丢弃的数据包。在 ip 表配置中我有以下内容
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# Log and drop packets that don't match the above rules
-N LOGGING
-A INPUT -j LOGGING
-A OUTPUT -j LOGGING
-A LOGGING -j LOG --log-prefix "IPTables-Dropped: " --log-level 6
-A LOGGING -j REJECT
-A INPUT -j REJECT
-A OUTPUT -j REJECT
COMMIT
正如你所看到的,我只打开了端口 22 (SSH),所以我希望如果我尝试执行 HTTP 请求,因为防火墙不允许这样做,它会阻止该请求(确实如此),但我也应该在 /var/log/messages 中看到IPTables-Dropped
我没有看到的日志行。
我也尝试过更新 /etc/rsyslog.conf 并添加,kern.warn /var/log/messages
但没有任何区别(我确实重新启动了 rsyslog 服务)。
答案1
规则的顺序确实很重要。
这条规则:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
在此规则之前:
-A INPUT -j LOGGING
阻止它被执行:不记录日志。
其他连锁店也一样。
只需用于iptables-save
输出规则的“刷新”版本,并相应地编辑它们的顺序。
另请阅读这个链接REJECT
关于不首先使用DROP
INVALID 状态的(很少发生)问题。