datocp
2016-04-13 19:16:10 +08:00
去研究一下 iptables recent 模块吧。
iptables 防 syn_flood 之类的
-A INPUT -i venet+ -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood
iptables -S syn_flood
-N syn_flood
-A syn_flood -i venet0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m hashlimit --hashlimit-upto 80/sec --hashlimit-burst 450 --hashlimit-mode srcip --hashlimit-name synlimit --hashlimit-htable-expire 300000 -j RETURN
-A syn_flood -m recent --set --name blacklist --rsource -j DROP
终极方法就是用 shell 对来源 ip 进行处理,然后 iptables quota 流量,每 IP 每天限制访问流量,甚至可以用 tc 进行每 ip 流量限制
-A OUTPUT -d 101.65.158.109/32 -o venet0 -m quota --quota 2076996775 -j ACCEPT
-A OUTPUT -d 101.65.158.109/32 -o venet0 -m recent --set --name bquota --rdest -j REJECT --reject-with icmp-port-unreachable