当我仅允许数据包以及RELATED
其他所有内容时,我的防火墙规则运行良好,没有任何问题:ESTABLISHED
DROP
### VARIANT A
-A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i wlan0 -j DROP
然而,我想更进一步,将所有IP
向我发送“未经请求”的数据包列入黑名单。我修改了我的规则:
### VARIANT B
-A INPUT -i wlan0 -m recent --name PORTSCAN --update --seconds 3600 -j DROP
-A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i wlan0 -m recent --name PORTSCAN --set -j DROP
规则的运作方式如下:
Rule 1: checks whether IP address is already blacklisted and drops it if yes
Rule 2: allows RELATED,ESTABLISHED packets
Rule 3: all other packets which fail RELATED,ESTABLISHED test are blacklisted
这些规则在 99.9% 的情况下都能按预期工作,但只有少数网站出现问题。 Stack Exchange 网站就是这样的例子之一。看起来 stackexchange.com 正在向我发送数据包,但conntrack
模块未将其识别为相关或已建立。因此,这些数据包不会通过rule 2
,并被列入黑名单rule 3
。
这种情况通常发生在我处于编辑模式时(即提出问题或编辑现有问题)。
在这种情况下,我必须刷新黑名单:
echo / >/proc/net/xt_recent/PORTSCAN
然后一切又恢复正常了。
这个问题可能有两种解释:
a) the conntrack module is deficient, in that it does not recognize
legitimate packets as being RELATED/ESTABLISHED
b) SE websites are indeed sending unsolicited packets
我相信这b
更有可能是正确的,因为以下推理:
我的 iptables 规则的变体 A 会丢弃所有它无法识别的数据包RELATED/ESTABLISHED
。由于一切都运行良好,因此我的会话不需要这些数据包。这些确实是不请自来的数据包,一开始就不应该发送给我。
我的 iptables 规则的变体 B 更进了一步,它“惩罚”违规行为IP
并将其添加到黑名单中。
问:如何修改我的 iptables 规则,使其也适用于 SE 站点?
我也很感谢有关我对问题的分析的评论
这是我在 meta.unix.stackexchange.com 上的相关帖子: stackexchange.com 向我发送未经请求的数据包(因此被防火墙阻止)