从零开始搞懂DDoS和CC攻击:运维人员必备的防护攻略

张开发
2026/4/16 12:01:03 15 分钟阅读

分享文章

从零开始搞懂DDoS和CC攻击:运维人员必备的防护攻略
作为一个在运维岗位摸爬滚打好几年的人我想和大家聊聊DDoS和CC攻击这个话题。这两种攻击方式虽然都能让你的服务器瞬间趴窝但原理和防护方法却大不相同。今天就把我这些年踩过的坑和积累的经验分享给大家。DDoS攻击到底是个什么鬼DDoS全称是Distributed Denial of Service翻译过来就是分布式拒绝服务攻击。听起来很高大上其实原理挺简单的。你可以想象一下平时你家门口最多同时来3-5个客人你能应付得过来。但如果突然来了100个人都要进你家坐坐你家的门、客厅、厕所…肯定就瘫痪了。DDoS攻击就是这个道理通过控制大量的肉鸡被感染的计算机同时向目标服务器发送请求把服务器的带宽、CPU、内存等资源耗尽。DDoS攻击主要分几种类型流量型攻击Volume-based attacks这种最直接就是用大量的垃圾流量把你的带宽塞满。常见的有UDP洪水攻击、ICMP洪水攻击等。攻击者会发送大量的UDP包或者ping包把你的网络带宽占满正常用户就访问不了了。协议型攻击Protocol attacks这种攻击利用网络协议的缺陷比如SYN洪水攻击。TCP三次握手大家都知道吧客户端发SYN服务器回SYN-ACK然后等客户端的ACK。攻击者只发SYN不发ACK服务器就一直等着连接池很快就满了。应用层攻击Application layer attacks这种攻击针对应用程序看起来像正常的请求但会消耗大量的服务器资源。比如不断请求复杂的数据库查询或者上传大文件等。CC攻击又是怎么回事CC攻击的全称是Challenge Collapsar中文叫挑战黑洞。听这名字就知道不是什么好东西。CC攻击和DDoS攻击的区别在于CC攻击更加精准。它不需要很大的流量而是模拟正常用户的行为不断地请求那些消耗资源比较大的页面或接口。CC攻击的特点是流量不大但请求频繁看起来像正常用户行为针对消耗资源较大的功能难以通过简单的流量限制来防护两种攻击的本质区别说到区别我觉得可以用一个比喻来解释。DDoS攻击就像是在你家门口堵了一大群人把路都堵死了正常客人根本进不来。这种攻击比较粗暴流量大容易发现。CC攻击则像是派了几个人每个人都很有礼貌地敲门但一进来就要你做很复杂的事情比如帮忙搬家具、修电器…虽然人不多但你很快就累趴下了。从技术角度来说DDoS主要消耗带宽和网络资源CC主要消耗服务器的CPU、内存和数据库资源DDoS流量特征明显CC攻击更隐蔽DDoS防护相对简单粗暴CC防护需要更精细的策略防护策略不只是买个高防就完事很多人以为防DDoS和CC攻击就是买个高防服务器或者CDN其实远没有这么简单。我这些年总结下来防护需要多层次的策略。基础防护措施首先是服务器层面的优化。我一般会调整一些系统参数比如增加TCP连接池大小调整超时时间等。在nginx配置里也会做一些限制# 限制单个IP的连接数 limit_conn_zone $binary_remote_addr zoneconn_limit_per_ip:10m; limit_conn conn_limit_per_ip 20; # 限制请求频率 limit_req_zone $binary_remote_addr zonereq_limit_per_ip:10m rate10r/s; limit_req zonereq_limit_per_ip burst20 nodelay;这些配置能在一定程度上缓解攻击但面对大规模DDoS还是不够的。应用层防护对于CC攻击我会在应用层做一些防护。比如给那些消耗资源大的接口加上缓存限制单个用户的请求频率对异常请求进行识别和拦截。我记得有次优化一个电商网站的搜索功能发现搜索结果页面的数据库查询特别复杂。于是我们加了Redis缓存把热门搜索词的结果缓存起来这样即使遇到CC攻击数据库压力也不会太大。CDN和云防护现在各大云厂商的防护产品确实很强大。我用过阿里云的DDoS高防腾讯云的大禹华为云的Anti-DDoS等效果都不错。这些产品的原理基本相似在你的服务器前面部署一层防护节点所有流量先经过这些节点进行清洗正常流量才会转发到你的服务器。流量清洗的那些门道流量清洗听起来很神秘其实原理并不复杂。就是在海量的网络流量中把攻击流量识别出来并丢弃让正常流量通过。特征识别最基础的方法是基于特征识别。比如DDoS攻击的流量往往有一些明显特征源IP分布异常大量来自同一地区或AS请求模式单一相同的User-Agent、请求路径等流量突增短时间内流量暴涨几十倍我见过一些简单的攻击所有请求的User-Agent都一样这种很容易识别。但现在的攻击者也越来越狡猾会模拟各种真实的浏览器特征。行为分析更高级的清洗技术会分析用户行为。正常用户访问网站是有一定规律的比如先访问首页然后点击链接进入详情页停留一段时间后再进行下一步操作。而攻击流量往往缺乏这种人性化的行为模式。比如一个IP在1秒钟内访问了100个不同的页面这明显不是正常用户的行为。机器学习算法现在很多云厂商都在用AI技术来做流量清洗。通过分析历史数据训练模型来识别攻击模式。这种方法的好处是能适应新的攻击手法但也需要大量的数据和计算资源。阿里云的AI防护系统每天要分析TB级别的流量数据不断优化识别算法。确实挺厉害的。各大云厂商的防护产品对比作为一个经常和各种云服务打交道的人我对主流厂商的DDoS防护产品还是比较了解的。阿里云DDoS高防阿里云的DDoS高防应该是国内最成熟的产品之一了。我用过他们的高防IP和高防包防护能力确实很强。高防IP适合那种可以更换IP的场景比如游戏服务器。你把域名解析到高防IP上所有流量先经过阿里云的清洗中心干净的流量再转发到你的源服务器。高防包则适合不能更换IP的场景直接对你现有的ECS进行防护。价格相对便宜一些但防护能力也会差一点。阿里云的优势是技术比较成熟清洗算法不断在优化。而且他们有全球的清洗中心能就近清洗延迟相对较低。腾讯云大禹防护腾讯云的DDoS防护产品叫大禹分为基础防护、DDoS高防包和DDoS高防IP。我觉得腾讯云的一个优势是和他们的CDN结合得比较好。如果你同时用了腾讯云的CDN可以在CDN层面就进行一些基础的防护效果会更好。而且腾讯云在游戏行业有很深的积累对游戏类的攻击防护经验比较丰富。如果你是做游戏的腾讯云可能是个不错的选择。华为云Anti-DDoS华为云的Anti-DDoS产品我接触得相对少一些但从技术架构上看还是很不错的。华为在网络设备方面的积累很深厚这个优势在DDoS防护上也体现出来了。他们的清洗设备据说用的是华为自研的芯片处理性能比较强。而且华为云在政企市场做得不错如果你的业务对合规性要求比较高华为云可能更合适。百度云DDoS防护百度云的DDoS防护产品在AI算法方面有一些优势毕竟百度在AI领域积累比较深。他们的智能防护能够自动学习和适应新的攻击模式。AWS Shield防护AWS的DDoS防护产品主要是Shield分为Shield Standard和Shield Advanced两个版本。Shield Standard是免费提供的基础防护自动保护所有AWS资源免受常见的网络层和传输层DDoS攻击。这个服务默认就开启了不需要额外配置能防护SYN/UDP洪水、反射攻击等常见的Layer 3/4攻击。Shield Advanced则是付费的高级防护服务每月费用大概3000美元起。它提供更强的防护能力包括更大规模的DDoS攻击防护实时攻击通知和详细报告DDoS Response Team (DRT) 24/7专家支持攻击期间的费用保护避免因攻击导致的AWS账单激增与AWS WAF集成提供应用层防护AWS的一个优势是和他们的全球CDN服务CloudFront结合得很好。流量先经过CloudFront的边缘节点进行初步过滤然后再到达你的源服务器。而且AWS的基础设施本身就很强大能够吸收大规模的攻击流量。不过AWS Shield的价格相对较高特别是Shield Advanced比较适合对成本不太敏感的大型企业。对于国内用户来说还要考虑网络延迟的问题毕竟AWS的主要节点还是在海外。实战防护配置说了这么多理论我想分享一些具体的防护配置。Nginx层面的防护# 基础限流配置 http { limit_req_zone $binary_remote_addr zonelogin:10m rate1r/s; limit_req_zone $binary_remote_addr zoneapi:10m rate10r/s; limit_conn_zone $binary_remote_addr zoneconn_limit:10m; # 针对不同接口的限制 location /login { limit_req zonelogin burst3 nodelay; limit_conn conn_limit 5; } location /api/ { limit_req zoneapi burst20 nodelay; limit_conn conn_limit 10; } }iptables防火墙规则# 限制单个IP的连接数iptables-AINPUT-ptcp--dport80-mconnlimit --connlimit-above20-jDROP# 限制SYN包的频率iptables-AINPUT-ptcp--syn-mlimit--limit1/s --limit-burst3-jACCEPT iptables-AINPUT-ptcp--syn-jDROP# 防护ICMP攻击iptables-AINPUT-picmp-mlimit--limit1/s-jACCEPT iptables-AINPUT-picmp-jDROP应用层防护代码在应用程序中也可以加入一些防护逻辑importredisimporttimefromflaskimportrequest,abort redis_clientredis.Redis(hostlocalhost,port6379,db0)defrate_limit(key,limit,window):简单的滑动窗口限流currenttime.time()piperedis_client.pipeline()pipe.zremrangebyscore(key,0,current-window)pipe.zcard(key)pipe.zadd(key,{str(current):current})pipe.expire(key,int(window)1)resultspipe.execute()ifresults[1]limit:returnFalsereturnTrueapp.before_requestdefcheck_rate_limit():client_iprequest.remote_addrifnotrate_limit(frate_limit:{client_ip},100,60):# 每分钟最多100个请求abort(429)# Too Many Requests监控和告警体系完善的监控告警系统对于及时发现和处理攻击非常重要。关键监控指标我一般会监控这些指标网络流量入站/出站并发连接数请求响应时间错误率4xx/5xx状态码服务器资源使用率CPU、内存、磁盘IO数据库连接数和查询响应时间告警规则设置# Prometheus告警规则示例groups:-name:ddos_detectionrules:-alert:HighTrafficVolumeexpr:rate(nginx_http_requests_total[5m])1000for:2mlabels:severity:warningannotations:summary:High traffic detected-alert:HighErrorRateexpr:rate(nginx_http_requests_total{status~5..}[5m]) / rate(nginx_http_requests_total[5m])0.1for:1mlabels:severity:criticalannotations:summary:High error rate detected应急响应流程当攻击发生时有一个清晰的应急响应流程很重要第一阶段快速识别查看监控告警确认是否为攻击分析流量来源和攻击类型评估攻击规模和影响范围第二阶段紧急处置启用高防IP或CDN防护在防火墙层面封禁明显的攻击IP调整限流策略降低服务压力如果必要临时下线部分非核心功能第三阶段深度防护分析攻击特征调整防护策略优化应用程序提高抗攻击能力联系云厂商或安全厂商获得专业支持准备备用方案如备用域名、备用服务器等第四阶段事后总结分析攻击过程和应对效果总结经验教训完善防护体系更新应急预案和操作文档成本效益分析谈到防护成本是个绕不开的话题。不同规模的业务需要不同的防护策略。小型网站日PV 10万基础防护使用CDN的基础DDoS防护成本每月几百到一千元能防护10G以下的攻击中型网站日PV 10万-100万推荐方案CDN 高防包成本每月几千到一万元能防护50G以下的攻击大型网站日PV 100万推荐方案高防IP 多重防护成本每月几万到十几万元能防护几百G的攻击未来发展趋势从技术发展趋势来看我觉得有几个方向值得关注AI智能防护机器学习在DDoS防护中的应用会越来越广泛。通过分析大量的攻击数据AI能够识别出更复杂的攻击模式提高识别准确率。边缘计算防护随着5G和边缘计算的发展防护节点会更加分散能够就近处理攻击流量降低延迟提高用户体验。云原生安全容器化和微服务架构的普及推动防护技术向云原生方向发展。防护能力会更好地集成到应用架构中实现更细粒度的防护。零信任安全模型传统的边界防护模式正在向零信任模型转变每个请求都需要验证这种模式对DDoS和CC攻击也有很好的防护效果。实用工具推荐在日常运维中我经常用到这些工具流量分析工具Wireshark网络抓包分析ntopng实时网络流量监控iftop查看网络连接和流量压力测试工具Apache Bench (ab)简单的HTTP压力测试wrk现代化的HTTP基准测试工具JMeter功能强大的压力测试工具监控工具Prometheus Grafana监控和可视化Zabbix企业级监控解决方案Nagios传统但稳定的监控工具法律和合规考虑在防护DDoS攻击时也要注意法律合规问题数据保护在收集和分析攻击数据时要注意保护用户隐私遵守相关的数据保护法规。证据保全如果攻击造成了重大损失要及时保存相关证据为后续的法律追责做准备。合规报告某些行业可能需要向监管部门报告重大安全事件要了解相关的合规要求。写在最后DDoS和CC攻击虽然可怕但只要我们了解其原理采取合适的防护措施还是能够有效应对的。关键是要有预防意识不要等到被攻击了才想起来防护。防护不是一次性的工作而是一个持续的过程。攻击手法在不断进化我们的防护策略也要跟着调整。同时要平衡安全性和成本选择适合自己业务的防护方案。最重要的是要建立完整的安全体系包括技术防护、监控告警、应急响应等各个环节。只有这样才能在面对攻击时从容应对。技术在进步攻击手法也在进化我们需要不断学习和适应。希望这篇文章能对大家有所帮助在实际工作中如果遇到了相关问题也欢迎交流讨论。防患于未然永远比事后补救要好。在平时就做好防护准备真正遇到攻击时才不会手忙脚乱。如果这篇文章对你有帮助记得点赞转发哦也欢迎在评论区分享你的经验和想法。公众号运维躬行录个人博客躬行笔记

更多文章