我需要一些帮助来处理 DDoS。我的服务器正在遭受 1GB DDoS 攻击,我不知道如何阻止它。(1GB 是服务器的最大速度。)
我有以下 iptables 规则:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
但是使用 tcpdump 我可以看到来自端口 53 的数据包
12:14:40.341410 IP 195.137.162.149 > x.x.x.x: ip-proto-17
12:14:40.341411 IP 193.169.188.52.53 > x.x.x.x.23495: 23454- 0/4/6 (234)
12:14:40.341414 IP 195.248.88.120 > x.x.x.x: ip-proto-17
12:14:40.341416 IP 193.19.184.42.53 > x.x.x.x.50529: 26701| 6/0/1 TXT[|domain]
12:14:40.341418 IP 192.41.13.71.53 > x.x.x.x.10634: 23454| 6/0/1 TXT[|domain]
12:14:40.341418 IP 50.97.53.214.53 > x.x.x.x.65437: 23454| 6/0/1 TXT[|domain]
12:14:40.341419 IP 192.3.130.149.53 > x.x.x.x.57519: 24820| 6/0/1 TXT[|domain]
12:14:40.341438 IP 195.182.58.136 > x.x.x.x: ip-proto-17
12:14:40.341441 IP 193.234.216.12 > x.x.x.x: ip-proto-17
12:14:40.341442 IP 195.228.85.145.53 > x.x.x.x.7903: 37969| 6/0/1 TXT[|domain]
12:14:40.341512 IP 192.195.177.60.53 > x.x.x.x.42871: 57501- 0/13/23 (718)
12:14:40.341552 IP 192.210.150.10.53 > x.x.x.x.41447: 25994| 6/0/1 TXT[|domain]
12:14:40.341556 IP 193.28.177.41 > x.x.x.x: ip-proto-17
iptables -xnvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
415575 293176304 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
24101 1323153 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
19725 1182436 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
2 104 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
13101233 35329988490 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 488686 packets, 518540789 bytes)
pkts bytes target prot opt in out source destination
在 nginx 中
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
在此屏幕截图中您可以看到实际数字。我的正常使用量不超过 5mb/秒。
netstat -ntu | awk'{print $5}'| cut -d:-f1 | sort | uniq -c | sort -n | tail | grep -v“ 127.0.0”
13 87.149.x.x
14 95.68.x.x
15 109.186.x.x
15 84.108.x.x
15 91.231.x.x
17 162.17.x.x
18 82.212.x.x
82 151.248.x.x
94 79.180.x.x
答案1
据我所知,这个iptables
问题是一个转移注意力的话题:您的规则可以很好地丢弃这些数据包,因此非常大的数据包取决于您的第五条也是最后一条规则(规则DROP
)。
我从你的问题中推测你不仅想删除它们,还想在你的端口上完全看不到它们,而这只能通过与你的提供商交谈来实现。简单地让他们阻止所有源端口为 53 的入站 UDP 流量可能会使服务器停止工作,因为它会破坏 DNS,但如果你可以将服务器重新配置为仅使用两个或三个特定的上游 DNS 服务器,则有可能让你的提供商阻止所有其他入站端口 53 流量。
编辑:我对您的可怜提供商深表同情。我认为硬件防火墙的问题无关紧要:其中一个不会阻止传输到您的端口的流量,它只会位于您的端口和服务器之间,并阻止流量消耗您服务器上的资源。由于我没有看到任何证据表明它导致服务器上的任何资源问题,所以我看不出这对您有什么帮助。
对于一个负责任的提供商来说,同意暂时阻止某些类型的流量到端口确实是很正常的,但如果您的提供商不这样做,那么我认为您也无能为力,只能耸耸肩,度过难关,然后在您的合同续签时寻找其他提供商。
答案2
假设您的端口大小小于 1Gbps:
答案很简单。安装硬件防火墙。对抗 dDoS,尤其是 Gbps 范围内的 dDoS,在实际服务器上是不可能发生的。
如果所有流量都来自端口 53,请让您的提供商阻止端口 53 上游。
答案3
安装 NGINIX 并解决问题,这是一款非常好的软件,可以完成这项工作,有很多文献可供阅读,了解如何在其后添加额外的工具,或者使设置的配置适合您的问题。