我有一台配备 32GB RAM 的专用服务器。它运行良好,直到一些用户来对我的服务器进行 DDoS 攻击。我的上行带宽使用率非常高(超过 150Mbps)。我使用以下命令查看了 netstat:
netstat -an | grep tcp | awk '{print $5}' | cut -f 1 -d : | sort | uniq -c | sort -n
它显示了多个 IP 的数千个连接:我使用以下 iptable 规则来限制每个 IP 的连接:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 150/second --limit-burst 160 -j ACCEPT
我保存了这些规则,这些规则在 iptables 列表中位于顶部。我重新启动系统以关闭所有连接并恢复 iptable 规则。将服务器上线。服务器几乎死机,再次出现数千个连接。我安装了 UFW,只有几个端口处于打开状态。
我该怎么做才能阻止它?如何终止每个 IP 建立的连接?顺便说一句。所有 IP 都是屏蔽的和假的。
编辑:
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
1 CLOSING
1 established)
1 Foreign
2 SYN_SENT
7 FIN_WAIT2
16 LISTEN
21 CLOSE_WAIT
48 LAST_ACK
209 SYN_RECV
284 FIN_WAIT1
772 ESTABLISHED
35426 TIME_WAIT
iptraf -d eth0 的输出
IPTraf
l Statistics for eth0 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x x
x Total Total Incoming Incoming Outgoing Outgoing x
x Packets Bytes Packets Bytes Packets Bytes x
x Total: 332826 128344K 192313 14538688 140513 113805K x
x IP: 332826 123518K 192313 11679988 140513 111838K x
x TCP: 332692 123507K 192311 11679924 140381 111827K x
x UDP: 0 0 0 0 0 0 x
x ICMP: 134 11448 2 64 132 11384 x
x Other IP: 0 0 0 0 0 0 x
x Non-IP: 0 0 0 0 0 0 x
x x
x x
x Total rates: 31150.2 kbits/sec Broadcast packets: 0 x
x 25144.8 packets/sec Broadcast bytes: 0 x
x x
x Incoming rates: 8907.0 kbits/sec x
x 14266.2 packets/sec x
x IP checksum errors: 0 x
x Outgoing rates: 22243.2 kbits/sec x
x 10878.6 packets/sec
答案1
实际上,您问的是怎样防范 DDOS 攻击。这实际上取决于系统的流量/数据包数量。我相信您遇到的是 TCP syn 洪水攻击。
您需要使用 iptraf(例如 iptraf -d eth0)检查 pps 和流量的数量。
您还应该查看 sysctl:
net.ipv4.tcp_syncookies
net.ipv4.tcp_synack_retries
并在 iptables 中启用 SYNPROXY 以延长攻击时间:http://rhelblog.redhat.com/tag/synproxy/
然而积极的结果取决于 DDOS 攻击的强度。
您可以尝试使用一些防 DDoS 攻击服务,但是我没有使用它们的经验。