shiji
2016-09-18 01:56:58 +08:00
-A INPUT -m recent --update --seconds 28800 --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan BAN: "
-A INPUT -m recent --update --seconds 28800 --name portscan --mask 255.255.255.255 --rsource -j DROP
-A INPUT -i eth0 -p tcp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan INIT: "
-A INPUT -i eth0 -p udp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan INIT: "
-A INPUT -i eth0 -p tcp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j DROP
-A INPUT -i eth0 -p udp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j DROP
-A INPUT -m recent --remove --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan RMV: "
我的 iptables 里面有差不多像这样的一段,而且至少有超过一年的数据。 来自中国南方地区机房的 IP 至少过半。
这段规则大概就是,一旦谁不小心访问到了没开放的端口,那来自这个 IP 的所有数据就会被扔掉,知道你停止扫描一段时间后才会开放。
但是这样有个 bug , 如果你有个类似论坛的东西,一个贱人插入了一张图片或者 XSS 我的 IP:9988/1.jpg 那么好了,所有看见这个页面的用户 IP 都直接被封了。
为了防止 DoS ,可以把允许 80 443 的规则放在这些前面。