linux命令通过使用netstat和iptables来防止dos攻击


11

我想为每个ip丢弃200多个请求,以防止ddos攻击。这是我用来检测每个IP请求计数的命令:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

现在我想将发出200多个请求的所有IP地址添加到IPtables中,以输入DROP并输出。


正如@dawud提到的,请确保您知道只能“缓解”,而不能完全阻止DDOS攻击服务器。
kaptan 2014年

Answers:


12

您还可以使用iptables限制传入连接的速率。例如,如果您不想每分钟从源头获得超过200个连接:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP


1
对此也有一个很好的解释。
2014年

18

您可以创建一个ipset。这样,您可以在不修改iptables规则集的情况下向集合中添加任意数量的IP 。

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

或者,根据您的情况,使用脚本的输出,并使用类似以下内容的内容进行读取:

while read a; do ipset -A myset "$a"; done < <(your script here)

并在您的iptables规则中引用它:

iptables -A INPUT -m set --set myset src -j DROP

阅读手册以了解更多详细信息和选项。

还有其他直接缓解 DDOS攻击的方法iptables。阅读iptables有关connlimitrecent模块的手册页。


之所以如此出色是因为ipset比诸如哈希表之类的替代方案要快得多。
isuldor 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.