首页建站教程站长工具网址导航免费资源

网站防DDoS攻击完整方案

728×90 教程页顶部广告位

DDoS攻击是网站最常见的网络攻击之一,新手站长经常遇到网站突然打不开、服务器CPU跑满、流量暴增的情况,很可能就是被DDoS或CC攻击了。这篇教程教你如何识别、防护和应对DDoS攻击。

一、DDoS攻击概述

DDoS(Distributed Denial of Service,分布式拒绝服务攻击)是指攻击者控制大量肉鸡(被入侵的电脑/服务器),同时向目标网站发送大量请求,耗尽服务器的带宽、CPU、内存等资源,导致正常用户无法访问网站。

攻击类型说明特点
流量型DDoS发送大量数据包耗尽带宽流量大(几G到几百G),直接打满服务器带宽,网站完全打不开
CC攻击模拟正常用户访问页面,耗尽服务器资源流量不大但请求多,服务器CPU/数据库跑满,网站打开慢或502错误
UDP Flood发送大量UDP包消耗带宽和服务器处理能力
SYN Flood发送大量TCP连接请求不完成握手耗尽服务器连接数,新连接无法建立
DNS Query Flood发送大量DNS查询请求攻击DNS服务器,导致域名解析失败
HTTP Flood发送大量HTTP请求类似CC攻击,消耗Web服务器和数据库资源
💡 为什么会被攻击

同行恶意竞争:竞争对手攻击你的网站,让你无法正常运营
勒索:攻击者攻击后联系你,要求支付比特币等赎金才停止
报复:得罪了某些人或组织,被报复性攻击
练手/无聊:黑客新手用你的网站练习攻击技术
误攻击:攻击者目标是同服务器的其他网站,你被牵连
没有原因:很多攻击就是随机扫描,谁弱就打谁

⚠️ 新手常见误区

• "我的网站小,不会被攻击" → 错,小网站更容易被攻击,因为防护弱
• "装个安全插件就能防DDoS" → 错,大流量DDoS插件防不住,需要CDN或高防
• "被攻击了换个IP就行" → 错,攻击者会持续攻击新IP,需要专业防护
• "报警就能解决" → 错,DDoS攻击溯源难,警方很难处理,先自己防护
• "服务器商一定会帮我防" → 错,普通云服务器被大流量攻击时会被黑洞(直接断开网络)

二、判断是否被攻击

网站打不开不一定是被攻击,先判断是不是真的被DDoS/CC攻击。

攻击判断方法
  1. 网站访问异常
    • 网站突然打不开或打开极慢
    • 之前正常,没有做任何修改就出问题
    • ping域名超时或丢包严重
    • 服务器SSH连接不上或极慢
  2. 服务器资源异常
    • 登录宝塔面板,查看CPU、内存、带宽使用率
    • CPU突然跑满100%,平时很低
    • 带宽跑满(入站/出站流量暴增)
    • 数据库连接数暴增,MySQL负载高
    • Web服务器(Nginx/Apache)连接数暴增
  3. 日志分析
    • 查看Nginx访问日志(/www/wwwlogs/域名.log)
    • 短时间内大量来自不同IP的请求
    • 大量请求集中在同一个页面(CC攻击特征)
    • User-Agent异常(大量相同UA或空UA)
    • 用命令统计:tail -n 10000 域名.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
  4. 云服务商监控
    • 登录阿里云/腾讯云控制台,查看云监控
    • 查看公网带宽、CPU、内存监控图表
    • 如果有DDoS防护服务,查看是否有攻击告警
    • 部分云服务商有"云盾"会自动检测并通知攻击
  5. 排除其他原因
    • 是不是服务器到期/欠费被停了
    • 是不是域名过期或DNS解析出问题
    • 是不是网站程序出错(PHP报错、数据库挂了)
    • 是不是服务器硬件故障
    • 是不是机房网络故障(可以ping同机房其他IP测试)
💡 CC攻击和DDoS攻击的区别

CC攻击:流量不大,但请求数多,模拟正常用户访问页面,主要消耗服务器CPU和数据库资源。特征:带宽没跑满,但CPU/数据库负载高,访问日志有大量请求。防护:CDN+WAF+限流,服务器层面可以防。
DDoS流量攻击:流量巨大,直接打满服务器带宽,服务器完全无法通信。特征:带宽跑满,SSH都连不上,访问日志可能都记录不到(流量在网络层就被堵了)。防护:必须用高防IP或云清洗,服务器层面防不住。

三、基础防护措施

即使是小网站,也应该做好基础防护,降低被攻击的风险和影响。

基础防护10条
  1. 隐藏真实IP
    • 不要直接用服务器IP访问网站,域名解析到CDN
    • 服务器不要直接暴露在公网,只开放必要端口(80/443/22)
    • 修改SSH默认端口(22改为其他),限制SSH登录IP
    • 用CDN后,服务器防火墙只允许CDN回源IP访问80/443端口
  2. 使用CDN
    • 网站接入CDN(Cloudflare、七牛云、又拍云、阿里云CDN等)
    • CDN可以隐藏真实IP,攻击者只能打到CDN节点
    • CDN有基础的DDoS/CC防护能力
    • 免费CDN(如Cloudflare免费版)就有基础防护
  3. 服务器安全配置
    • 安装防火墙(宝塔防火墙、ufw、firewalld),只开放必要端口
    • 安装Fail2ban,自动封禁暴力破解IP
    • Web服务器配置限流(Nginx limit_req),限制单IP请求频率
    • 关闭不必要的服务和端口
    • 定期更新系统和软件补丁
  4. 网站程序优化
    • 使用缓存插件(WP Rocket、W3 Total Cache),减少数据库查询
    • 页面静态化,动态页面生成静态HTML
    • 数据库优化,添加索引,慢查询优化
    • 限制搜索、评论等耗资源功能的频率
    • 安装安全插件(Wordfence、Sucuri),拦截恶意请求
  5. WAF Web应用防火墙
    • 使用云WAF(阿里云WAF、腾讯云WAF、Cloudflare WAF)
    • WAF可以拦截SQL注入、XSS、CC攻击等应用层攻击
    • Cloudflare免费版就有基础WAF规则
    • 宝塔也有免费的Nginx防火墙(基础版)
  6. DNS防护
    • 使用有DDoS防护的DNS(Cloudflare DNS、阿里云DNS)
    • 不要用小服务商的DNS,容易被打挂
    • 开启DNSSEC,防止DNS劫持
  7. 定期备份
    • 虽然备份不能防攻击,但攻击导致数据损坏时可以恢复
    • 异地备份,防止攻击者删除服务器数据
    • 参考异地备份教程
  8. 监控告警
    • 配置服务器监控(宝塔监控、云监控),CPU/带宽异常时告警
    • 配置网站可用性监控(UptimeRobot、监控宝),网站宕机时通知
    • 及时发现攻击,越早处理损失越小
  9. 不要惹事
    • 网站内容合规,不做违法违规内容
    • 不和人在网上对骂、引战
    • 不泄露服务器IP和个人信息
    • 低调运营,不要到处炫耀网站
  10. 了解应急流程
    • 提前了解被攻击后怎么处理(见第六节)
    • 保存云服务商客服电话,紧急时联系
    • 知道怎么切换CDN、怎么换IP、怎么临时关站

四、CDN与云防护

CDN是防DDoS最基础也最有效的手段,免费CDN就能防住大部分小攻击。

4.1 推荐CDN服务

CDN服务免费额度DDoS防护WAF特点推荐度
Cloudflare免费版无限流量免费版有基础防护(无限DDoS防护)免费版有5条规则全球最大CDN,免费版功能够用,国外速度好⭐⭐⭐⭐⭐
七牛云CDN10GB/月流量基础防护有(需配置)国内速度好,和存储一体⭐⭐⭐⭐
又拍云CDN认证后有免费额度基础防护国内速度好,服务好⭐⭐⭐⭐
阿里云CDN新用户有免费额度基础防护(高防需另购)有(WAF需另购)稳定,国内节点多,和阿里云生态配合⭐⭐⭐⭐
腾讯云CDN新用户有免费额度基础防护有(WAF需另购)和腾讯云配合好,费用低⭐⭐⭐⭐
百度云加速免费版基础防护国内速度好,和百度搜索配合⭐⭐⭐
💡 Cloudflare免费版是首选

对于个人站长和小网站,Cloudflare免费版是性价比最高的选择:
• 无限流量,不用担心流量费用
• 免费DDoS防护(Cloudflare的DDoS防护是行业领先的)
• 免费WAF规则(5条自定义规则)
• 免费SSL证书
• 全球CDN加速
• 隐藏真实IP

缺点:国内访问速度一般(免费版没有国内节点),可以配合国内CDN使用,或用Cloudflare Partner(有国内节点的合作版)。

4.2 CDN防护配置要点

  • 开启"我已受到攻击"模式:Cloudflare在被攻击时可以开启Under Attack Mode,增加验证环节
  • 配置WAF规则:拦截恶意请求、限制特定国家/地区IP、拦截异常User-Agent
  • 开启Bot Fight Mode:Cloudflare免费功能,拦截恶意机器人
  • 配置速率限制:限制单IP请求频率,防止CC攻击(Cloudflare免费版有基础速率限制)
  • 缓存静态资源:图片、CSS、JS等静态资源缓存到CDN,减少回源请求
  • 页面规则:对重要页面配置缓存规则,对后台等敏感页面配置安全规则
  • 隐藏真实IP:确保服务器只允许CDN回源IP访问,防止攻击者绕过CDN直接打源站

五、高防IP与专业防护

如果遇到大流量DDoS攻击(几十G以上),免费CDN可能扛不住,需要专业高防服务。

5.1 高防IP服务

服务防护能力费用特点
阿里云DDoS高防30G-1T+几千到几万元/月国内最大,防护能力强,BGP线路
腾讯云DDoS高防30G-1T+几千到几万元/月和腾讯云配合好,价格略低
华为云DDoS高防30G-1T+几千到几万元/月企业级服务
Cloudflare Pro/Business无限(企业级更强)$20/$200/月国外首选,性价比高,国内速度一般
百度云加速高防10G-100G几百到几千元/月国内速度好,价格适中
第三方高防(如盾云、酷盾)10G-100G几百到几千元/月价格比大厂低,服务灵活,但稳定性参差
⚠️ 高防IP注意事项

• 高防IP费用较高,个人小网站不一定需要,先评估攻击规模
• 购买前确认防护能力(保底防护+弹性防护),弹性防护是按量付费的
• 高防IP只能防流量型DDoS,CC攻击还需要WAF配合
• 国内高防IP需要域名备案才能用
• 切换高防IP需要修改DNS解析,有一定生效时间(几分钟到几小时)
• 不要相信"绝对防住"的宣传,没有100%防住的防护

5.2 什么时候需要高防

  • 网站经常被大流量攻击(10G以上),免费CDN扛不住
  • 网站是商业网站,宕机损失大(如电商、付费内容、游戏)
  • 攻击者持续攻击,换IP、换CDN都没用
  • 有明确的竞争对手或勒索者持续攻击
  • 网站收入可以覆盖高防费用(高防几千元/月,网站收入至少要超过这个数)
💡 个人站长的低成本防护方案

对于个人小网站,不建议花大价钱买高防IP,推荐低成本方案:
1. Cloudflare免费版:隐藏IP+基础DDoS防护+WAF,能防住90%的小攻击
2. 国内CDN:七牛云/又拍云免费额度,国内加速+基础防护
3. 服务器防火墙:宝塔防火墙+Nginx限流,防CC攻击
4. 缓存优化:页面静态化+数据库缓存,降低攻击时的资源消耗
5. 被攻击时临时关站:如果攻击太大扛不住,临时关闭网站,等攻击过去再开(攻击通常持续几小时到几天)
6. 换IP:如果真实IP泄露被直接打源站,换服务器IP并重新接入CDN

这个方案成本几乎为0,能防住大部分针对小网站的攻击。

六、被攻击后应急处理

如果发现网站正在被攻击,按以下步骤紧急处理。

应急处理步骤
  1. 保持冷静,确认攻击
    • 先确认是真的被攻击,不是服务器故障或程序问题
    • 查看服务器资源、日志、云监控,判断攻击类型和规模
    • 不要慌,越慌越容易出错
  2. 如果能登录服务器
    • 查看Nginx/Apache访问日志,找到攻击特征(集中访问的页面、异常IP段、异常UA)
    • 用防火墙封禁异常IP或IP段(iptables/宝塔防火墙)
    • Nginx配置限流,限制单IP请求频率
    • 如果是CC攻击集中访问某个页面,可以临时禁用该页面或返回503
    • 开启维护模式,临时关闭网站(显示维护页面),减少服务器压力
  3. 如果不能登录服务器(被打满了)
    • 登录云服务商控制台,通过VNC或控制台登录服务器
    • 如果控制台也登不上,联系云服务商客服,请求帮助
    • 部分云服务商有"黑洞"机制,攻击太大时会自动断开服务器网络(保护其他用户),等攻击过去自动恢复
  4. CDN层面处理
    • 登录CDN控制台(Cloudflare等),开启"Under Attack Mode"(我已受到攻击模式)
    • 配置WAF规则,拦截攻击特征的请求(特定URL、UA、IP段、国家)
    • 开启Bot Fight Mode,拦截恶意机器人
    • 增加缓存,减少回源请求
    • 如果攻击太大,考虑升级CDN套餐或切换到高防CDN
  5. 联系云服务商
    • 如果是阿里云/腾讯云服务器,提交工单或打电话给客服,说明被DDoS攻击
    • 请求临时提升防护或协助清洗流量
    • 部分云服务商有免费的基础DDoS防护(阿里云5G、腾讯云2G),超过会被黑洞
    • 询问是否可以临时开通高防(按天付费)
  6. 如果是勒索攻击
    • 攻击者可能会通过邮件/留言联系你,要求支付赎金
    • 不要支付赎金!支付了也不一定停止,而且会让你成为持续目标
    • 保留勒索信息作为证据,可以报警(虽然很难处理,但留个记录)
    • 加强防护,等攻击过去,攻击者看你不付钱通常会换目标
  7. 攻击过后
    • 攻击停止后,逐步恢复网站(先开维护页面,确认正常后全开)
    • 检查服务器是否被入侵(攻击可能是声东击西,真正目的是植入后门)
    • 检查网站文件完整性,对比备份,看有没有被篡改
    • 修改所有密码(服务器、后台、数据库、FTP)
    • 分析攻击日志,总结攻击特征,加强防护规则
    • 考虑升级防护方案(CDN套餐、WAF、高防)
    • 确保备份完整,万一被攻击损坏可以恢复
💡 预防大于治疗

DDoS攻击防不胜防,但做好预防可以大大降低损失:
• 提前接入CDN,隐藏真实IP(这是最重要的一步)
• 配置好WAF和限流规则
• 定期备份,异地备份
• 监控告警,及时发现攻击
• 了解应急流程,提前准备
• 网站内容合规,不惹事

很多攻击是因为真实IP泄露(没用CDN、历史解析记录、服务器直接发邮件泄露IP等),所以隐藏IP是第一道防线。

Q:被DDoS攻击会被搜索引擎惩罚吗?
A:短时间的攻击(几小时到几天)不会被惩罚,搜索引擎能理解网站可能遇到技术问题。但如果网站长期打不开(几周以上),搜索引擎会逐步降低排名甚至删除收录。所以被攻击后要尽快恢复,攻击持续时间长的话,可以用百度站长平台的"闭站保护",告诉百度网站临时维护,恢复后申请恢复,减少对排名的影响。

Q:免费CDN真的能防DDoS吗?
A:免费CDN(如Cloudflare免费版)能防住大部分小流量DDoS和CC攻击,因为CDN有大量节点和带宽,分布式攻击被分散到各个节点,源站压力小。Cloudflare免费版提供"无限DDoS防护",这是他们的卖点。但如果是超大流量攻击(几百G以上)或针对性的高级攻击,免费版可能扛不住,需要升级付费版或高防服务。对于个人小网站,免费版足够了。

Q:怎么隐藏服务器真实IP?
A:①网站接入CDN,域名解析到CDN,不直接解析到服务器IP;②服务器防火墙只允许CDN回源IP访问80/443端口,其他IP访问直接拒绝;③不要用服务器IP直接访问网站(测试时用hosts绑定,不要在公网用IP访问);④服务器发邮件时,邮件头可能包含服务器IP,可以用第三方邮件服务(如SendGrid、阿里云邮件推送)代替服务器直接发邮件;⑤历史DNS解析记录可能泄露旧IP,如果之前没用CDN直接解析过IP,建议换服务器IP;⑥SSL证书申请记录(如crt.sh)可能泄露IP,用CDN的SSL证书,不要在源站申请证书时泄露IP;⑦ping.chinaz.com等工具可以查历史解析,定期检查自己的域名有没有泄露真实IP。

Q:被CC攻击了,怎么用Nginx限流?
A:在Nginx配置中添加限流规则:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
}
这个配置限制每个IP每秒最多10个请求,突发20个。可以根据攻击情况调整。宝塔面板可以在"网站设置" → "限流"中图形化配置,不需要手写代码。同时可以用宝塔防火墙的CC防护功能,更方便。

Q:网站被攻击了,要不要报警?
A:可以报警,但实际效果有限。DDoS攻击溯源困难(攻击者用肉鸡、代理、海外服务器),警方很难抓到人,尤其是小金额的勒索攻击。建议:①保留攻击日志和勒索信息作为证据;②到当地网安部门报案,做个记录;③同时自己做好防护,恢复网站运营。如果攻击造成重大损失(如商业网站宕机损失几十万),警方会更重视。不要把希望全放在报警上,自己防护才是根本。

这篇教程对你有帮助吗?

728×90 教程页底部广告位