香港服务器DDoS防护完整方案:流量清洗、IP封禁与高防服务选型实战
香港服务器因网络质量好、地理位置优越,同样也是DDoS攻击的高发目标,尤其是游戏服务器和电商平台。本文从免费防护方案到商业高防服务,给出层次化的DDoS防护体系。
一、DDoS攻击类型与识别
| 攻击类型 | 特征 | 防御难度 | 常见目标 |
|---|---|---|---|
| UDP Flood | 海量UDP包占满带宽 | 中等 | 游戏服务器 |
| SYN Flood | 大量半开连接耗尽连接表 | 较低(内核可防) | Web服务器 |
| HTTP Flood(CC) | 模拟正常HTTP请求,语义层攻击 | 高 | 所有Web应用 |
| ICMP Flood | 大量ping包耗尽带宽 | 低(可直接屏蔽ICMP) | 任意服务器 |
| DNS放大攻击 | 伪造源IP请求DNS,响应包砸向受害者 | 中等 | 带宽耗尽型 |
攻击发生时的判断方法
<code"># 1. 查看当前连接数(异常增多)
ss -s
netstat -an | grep ESTABLISHED | wc -l
# 2. 查看实时流量(带宽打满)
iftop -i eth0 -n # 实时带宽监控
nethogs eth0 # 按进程查看流量
# 3. 查看TOP来源IP(大量相同/相似IP)
netstat -an | awk '/tcp/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
# 4. 查看异常高频请求IP(Nginx日志)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 5. 系统负载异常
uptime # load average突增
dmesg | grep -i "dropping" | tail -20二、第一层防护:Cloudflare免费DDoS防护
Cloudflare橙云代理模式下,攻击流量会被Cloudflare的全球网络吸收,源站IP被隐藏,是最基础也是最有效的DDoS防护手段。
开启Under Attack模式
<code"># 攻击发生时,通过Cloudflare API切换到Under Attack模式
# 所有访问者都需要完成5秒JS验证
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的Zone_ID/settings/security_level" \
-H "Authorization: Bearer 你的API_Token" \
-H "Content-Type: application/json" \
--data '{"value":"under_attack"}'
# 攻击结束后恢复正常模式
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的Zone_ID/settings/security_level" \
-H "Authorization: Bearer 你的API_Token" \
-H "Content-Type: application/json" \
--data '{"value":"medium"}'Cloudflare防火墙规则(应对CC攻击)
<code"># 在Cloudflare Dashboard → Security → WAF → Rules创建规则 # 规则1:对高频访问IP触发Challenge # 条件:同一IP每分钟超过100次请求 # 操作:Managed Challenge(JS验证) # 规则2:封禁已知恶意User-Agent # 条件:User-Agent包含 python-requests / curl / Go-http-client 等自动化工具特征 # 操作:Block # 规则3:封禁可疑的高频API请求 # 条件:URI路径包含 /api/ AND 请求速率 > 50/分钟 # 操作:Rate Limit → Block 10分钟
三、第二层防护:服务器本地防御
iptables防御SYN Flood
<code"># 限制新建连接速率(防SYN Flood)
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 5 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# 对单IP的ICMP限速(防ICMP Flood)
iptables -A INPUT -p icmp --icmp-type echo-request \
-m limit --limit 1/second --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# 批量封禁攻击IP(从攻击IP列表导入)
# 方法1:ipset(高效,支持大量IP)
apt install ipset -y
ipset create blocklist hash:ip maxelem 1000000 timeout 3600
# 将攻击IP加入黑名单(封禁1小时)
ipset add blocklist 1.2.3.4 timeout 3600
# 创建iptables规则匹配ipset
iptables -I INPUT 1 -m set --match-set blocklist src -j DROP
# 方法2:批量添加(从文件)
while read ip; do
ipset add blocklist "$ip" timeout 3600 2>/dev/null
done < /tmp/attack_ips.txtNginx层CC防御
<code">http {
# 连接限制(全局)
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=web:10m rate=30r/s;
server {
# 每IP最多100个并发连接
limit_conn addr 100;
# 普通页面:每秒30次请求,突发50次
location / {
limit_req zone=web burst=50 nodelay;
limit_req_status 429;
}
# API接口:每秒10次请求,更严格
location /api/ {
limit_req zone=api burst=20 nodelay;
limit_req_status 429;
# 返回429时的响应体
error_page 429 = @rate_limit_error;
}
location @rate_limit_error {
add_header Retry-After 60 always;
return 429 '{"error":"请求过于频繁,请60秒后重试","code":429}';
}
}
}自动封禁高频攻击IP
<code">#!/bin/bash
# /usr/local/bin/auto-block-ddos.sh
# 每分钟运行,自动封禁超过阈值的IP
THRESHOLD=500 # 1分钟内请求超过500次则封禁
BLOCK_DURATION=3600 # 封禁1小时
# 分析最近1分钟的Nginx日志
ATTACK_IPS=$(awk -v start="$(date -d '1 minute ago' '+%d/%b/%Y:%H:%M')" \
'$4 > "["start' /var/log/nginx/access.log | \
awk '{print $1}' | sort | uniq -c | sort -rn | \
awk -v t="$THRESHOLD" '$1 > t {print $2}')
for IP in $ATTACK_IPS; do
# 跳过白名单(Cloudflare IP段等)
if echo "$IP" | grep -qE "^(127\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)"; then
continue
fi
# 封禁IP(ipset)
ipset add blocklist "$IP" timeout "$BLOCK_DURATION" 2>/dev/null && \
echo "$(date): 已封禁攻击IP $IP(请求超过${THRESHOLD}次/分钟)" >> /var/log/ddos-block.log
done四、第三层:高防IP服务选型
当攻击流量超过Cloudflare免费版(5Gbps软限制)或需要保护非HTTP服务(游戏UDP流量)时,需要购买专业高防服务。
| 服务商 | 防护容量 | 延迟影响 | 价格参考 | 适用场景 |
|---|---|---|---|---|
| Cloudflare Magic Transit | 理论无上限 | 极小(BGP宣告) | 企业定价 | 大型企业 |
| AWS Shield Advanced | 高 | 小 | $3000/月起 | AWS生态 |
| 国内高防IP(阿里/腾讯) | 300Gbps~T级 | 有延迟增加 | 数千~数万元/月 | 大陆用户为主 |
| 香港高防IP(本地服务商) | 10~300Gbps | 小 | 数百~数千元/月 | 香港节点保护 |
五、应急响应步骤
<code">DDoS攻击发生时的处置步骤: 1. 确认攻击(1分钟内) □ 确认是真实攻击还是业务流量突增 □ 判断攻击类型(带宽型/CC型/协议型) 2. 开启Cloudflare Under Attack模式(立即) □ 通过API或Dashboard一键开启 3. 临时封禁主要攻击源IP(5分钟内) □ ipset批量封禁主要攻击IP段 4. 收集证据(同步进行) □ 保存tcpdump抓包数据 □ 保存Nginx访问日志 5. 联系IDC评估需求 □ 判断是否需要升级到高防IP 6. 攻击结束后复盘(24小时内) □ 分析攻击规模、类型、来源 □ 加固防御规则,防止同类攻击
六、总结
香港服务器DDoS防护的推荐层次:Cloudflare橙云(隐藏IP,吸收HTTP层攻击)→ Nginx限流(本地CC防御)→ iptables/ipset(封禁攻击IP)→ 高防IP(大流量带宽型攻击)。对于大多数网站,Cloudflare免费版配合Nginx限流已经能抵御95%以上的DDoS攻击。IDC.Net提供香港高防服务器方案,对于游戏服务器和高价值业务,可以选择配备高防IP的独立服务器。
版权声明:
作者:后浪云
链接:https://idc.net/help/442875/
文章版权归作者所有,未经允许请勿转载。
THE END
