网站被ddos攻击怎么办 高防ip原理与香港高防服务器配置实战
网站被打了,第一时间该做什么?
DDoS 攻击(分布式拒绝服务攻击)是指攻击者通过控制大量”肉鸡”设备,向目标服务器发送海量请求,耗尽服务器带宽或计算资源,导致正常用户无法访问。
对于游戏服务器、电商平台、竞争激烈行业的网站,DDoS 攻击几乎是迟早会遇到的问题。本文从攻击类型识别、防御架构选择到具体配置,提供一套完整的 DDoS 防御方案。
一、先判断攻击类型
不同类型的 DDoS 攻击,防御策略不同。首先要判断你面对的是哪种攻击。
流量型攻击(volumetric attack)
特征:服务器带宽被打满,iftop 或流量监控显示入站流量异常巨大(数百 Mbps 甚至 Gbps 级别),即使什么都不做服务器也无法响应。
常见类型:UDP Flood、ICMP Flood、DNS 放大攻击。
应对方向:必须在上游(运营商或 CDN 层)清洗流量,仅靠服务器自身无法抵御,因为攻击流量在到达服务器之前已经把带宽堵死。
协议型攻击(protocol attack)
特征:服务器 CPU 或连接数异常高,但带宽未必打满。netstat 显示大量 SYN_RECV 状态连接(SYN Flood)。
应对方向:防火墙层面限制异常连接,配合高防 IP 的 SYN Cookie 机制。
应用层攻击(application layer attack / CC 攻击)
特征:请求看起来像正常 HTTP 流量,但数量极大,导致 Web 服务器或数据库过载。Nginx 日志中大量来自不同 IP 的相同请求路径。
应对方向:WAF(Web 应用防火墙)、Nginx 限流、Cloudflare 防护。
二、快速诊断命令
遭受攻击时,用以下命令快速判断攻击类型和来源:
# 查看当前网络连接数(连接数异常高说明受到攻击)
ss -s
# 查看连接数最多的前20个IP(找出攻击源IP段)
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
# 查看 SYN_RECV 状态连接数(判断是否 SYN Flood)
netstat -n | grep SYN_RECV | wc -l
# 实时监控网络流量(判断带宽是否被打满)
iftop -n
# 查看 Nginx 日志中请求最多的IP
tail -n 10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# 查看 Nginx 日志中请求最多的 URL
tail -n 10000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20三、防御层级:从免费到高防的完整方案
第一层:Cloudflare 免费防护(适合中小网站)
Cloudflare 是最易上手的 DDoS 防护方案。将域名 DNS 迁移到 Cloudflare 后,所有流量先经过 Cloudflare 的全球网络过滤,再回源到你的服务器,真实服务器 IP 被隐藏。
免费版 Cloudflare 提供:
- 无限流量的 DDoS 防护(L3/L4 层)
- 基础 WAF(应用层防护)
- Bot 检测和 CAPTCHA 验证
- 全球 CDN 加速
配置步骤:
- 注册 Cloudflare 账号,添加你的域名
- 将域名 NS 服务器改为 Cloudflare 提供的 NS 地址
- 在 Cloudflare 后台将 DNS 记录的代理状态设为”已代理”(橙色云朵图标)
- 遭受攻击时,在”安全性”→”DDoS”中将防护级别调为”我受到攻击!”模式
注意:Cloudflare 回源到服务器的流量仍然通过公网,如果攻击者找到了真实 IP,直接攻击 IP 绕过 Cloudflare,防护失效。因此,使用 Cloudflare 后务必确保服务器只接受来自 Cloudflare IP 段的流量。
在服务器上限制只允许 Cloudflare IP 访问 80/443 端口:
# 先清除现有的 80/443 规则
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
# 只允许 Cloudflare IPv4 段访问(Cloudflare IP列表见 https://www.cloudflare.com/ips/)
sudo ufw allow from 173.245.48.0/20 to any port 80
sudo ufw allow from 173.245.48.0/20 to any port 443
sudo ufw allow from 103.21.244.0/22 to any port 80
sudo ufw allow from 103.21.244.0/22 to any port 443
sudo ufw allow from 103.22.200.0/22 to any port 80
sudo ufw allow from 103.22.200.0/22 to any port 443
sudo ufw allow from 103.31.4.0/22 to any port 80
sudo ufw allow from 103.31.4.0/22 to any port 443
sudo ufw allow from 141.101.64.0/18 to any port 80
sudo ufw allow from 141.101.64.0/18 to any port 443
sudo ufw allow from 108.162.192.0/18 to any port 80
sudo ufw allow from 108.162.192.0/18 to any port 443
sudo ufw allow from 190.93.240.0/20 to any port 80
sudo ufw allow from 190.93.240.0/20 to any port 443
sudo ufw allow from 188.114.96.0/20 to any port 80
sudo ufw allow from 188.114.96.0/20 to any port 443
sudo ufw allow from 197.234.240.0/22 to any port 80
sudo ufw allow from 197.234.240.0/22 to any port 443
sudo ufw allow from 198.41.128.0/17 to any port 80
sudo ufw allow from 198.41.128.0/17 to any port 443
sudo ufw allow from 162.158.0.0/15 to any port 80
sudo ufw allow from 162.158.0.0/15 to any port 443
sudo ufw allow from 104.16.0.0/13 to any port 80
sudo ufw allow from 104.16.0.0/13 to any port 443
sudo ufw allow from 104.24.0.0/14 to any port 80
sudo ufw allow from 104.24.0.0/14 to any port 443
sudo ufw allow from 172.64.0.0/13 to any port 80
sudo ufw allow from 172.64.0.0/13 to any port 443
sudo ufw allow from 131.0.72.0/22 to any port 80
sudo ufw allow from 131.0.72.0/22 to any port 443
sudo ufw reload第二层:Nginx 限流(防御 CC 攻击)
在服务器层面配置 Nginx 请求频率限制,对单个 IP 的请求进行限速,有效缓解 CC 攻击:
sudo nano /etc/nginx/nginx.conf在 http 块中添加限流区域定义:
http {
# 定义限流区域:按客户端IP限速,10MB内存可存储约16万个IP状态
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=20r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
# 其他配置...
}在站点配置文件的 server 块中应用限流规则:
server {
# 每个IP每秒最多20个请求,突发允许50个排队
limit_req zone=req_limit burst=50 nodelay;
# 每个IP最多同时保持100个连接
limit_conn conn_limit 100;
# 超出限制返回 429(请求过多)而不是默认的 503
limit_req_status 429;
limit_conn_status 429;
}测试并重载 Nginx:
sudo nginx -t && sudo systemctl reload nginx第三层:高防服务器 / 高防 IP(应对大流量攻击)
当攻击流量超过服务器带宽上限(如超过 10G 的 UDP Flood),仅靠软件层面的防护已无能为力,必须在网络层面进行流量清洗。这就是高防服务器和高防 IP 的价值所在。
高防 IP 的工作原理:
- 将业务域名解析到高防 IP,而非真实服务器 IP
- 所有流量先流向高防节点的清洗中心
- 清洗中心识别并过滤攻击流量,只将正常流量回源到真实服务器
- 真实服务器 IP 不对外暴露,攻击者无法绕过防护直接攻击
香港高防服务器通常提供 10G–100G 的 DDoS 清洗能力,适合游戏服务器、金融类网站、长期遭受攻击的业务。
四、临时应急措施
正在遭受攻击,需要立即恢复服务时,可以采取以下临时措施:
临时封禁攻击 IP 段
# 封禁单个 IP
sudo ufw deny from 攻击IP to any
# 封禁整个 IP 段(/24 代表封禁该段所有256个IP)
sudo ufw deny from 攻击IP段/24 to any
# 查看已封禁规则
sudo ufw status numbered使用 iptables 限制连接速率
# 限制每个IP每秒新建连接数不超过20个
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/second --limit-burst 100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP临时关闭非核心服务
攻击期间,关闭非必要的服务端口,减少攻击面,将服务器资源集中保障核心业务:
# 查看当前所有监听端口
ss -tlnp
# 临时停止非核心服务(以 FTP 为例)
sudo systemctl stop vsftpd五、高防服务器选购要点
| 指标 | 说明 | 建议 |
|---|---|---|
| 防护带宽 | 能承受的最大攻击流量 | 根据业务被攻击历史选择,至少选 10G 起步 |
| CC 防护能力 | 应用层 CC 攻击的识别和清洗能力 | 确认服务商是否支持 CC 防护,不仅仅是流量防护 |
| 清洗延迟 | 流量经过清洗中心后增加的延迟 | 高防服务器通常增加 3–10ms,可接受 |
| 封堵政策 | 超出防护上限时的处理方式 | 确认是否会直接封禁 IP 导致业务中断 |
| 回源线路 | 清洗后流量回到源站的线路质量 | 香港高防服务器建议选 CN2 GIA 回源 |
总结
DDoS 防御没有一劳永逸的方案,需要根据攻击类型和业务规模选择合适的防护层级:
- 小流量 CC 攻击:Nginx 限流 + Cloudflare 免费版,成本接近零
- 中等规模攻击:Cloudflare Pro + 隐藏真实 IP,月费约 20 USD
- 大流量 DDoS:高防服务器或高防 IP,网络层清洗是唯一有效方案
- 游戏/金融类高价值业务:香港高防服务器(CN2 GIA + 10G 以上防护),月费 700 元起
防御的核心逻辑是:让攻击流量永远到不了你的真实服务器,无论是通过 CDN 隐藏 IP,还是通过高防清洗中心过滤流量。
如需了解香港高防服务器方案,IDC.Net 香港高防服务器提供 CN2 GIA 线路 + 10G 高防 IP 配置,月付 700 元起,支持 12 小时试用,支付宝 / USDT 付款,免 KYC 实名,适合游戏服务器、竞争激烈行业网站的长期防护需求。