使用 netstat 和 iptables 防止 dos 攻击的 linux 命令

使用 netstat 和 iptables 防止 dos 攻击的 linux 命令

我想删除每个 IP 上超过 200 个请求以防止 DDoS 攻击。这是我用来检测每个 IP 的请求数的命令:

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

现在我想将所有发出超过 200 个请求的 IP 地址添加到 IPtables 中以删除输入和输出。

答案1

您还可以使用 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

答案2

您可以创建一个ipset。这样,您就可以根据需要向集合中添加任意数量的 IP,而无需修改iptables规则集。

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模块的手册页部分。

相关内容