百Gbps级别的流量洪峰砸过来的时候,没有时间开会,没有时间写报告,甚至没有时间紧张。第一秒的反应直接决定了业务是短暂抖动后恢复,还是直接瘫痪数小时。这种量级的攻击或突发流量,靠人工去一个个点鼠标封IP已经毫无意义,设备控制面板可能都打不开。你需要的是预先刻在肌肉记忆里的操作序列,以及一套能自动触发或一键执行的防御体系。
第一时间切断非核心业务流量登录核心路由或流量清洗设备,如果控制面已经拥塞,立刻通过带外管理网络接入。不要犹豫,直接对目标IP段启用黑洞路由,但这有个致命问题——黑洞会把正常流量也干掉。所以更精细的做法是,如果你的上游运营商支持,立刻通过BGP Community通告目标IP段,让运营商在骨干网层面进行流量清洗和限速。同时,在本地设备上,针对服务器的公网IP,立即执行严格的ACL,只放行白名单中的业务端口,比如仅允许443和80,其余全部deny。如果是UDP反射放大攻击,直接在边界设备上丢弃特定端口的UDP包,比如NTP的123端口、DNS的53端口(如果业务本身不依赖外部DNS解析)。这一步的目标不是完全恢复业务,而是保住核心链路不被塞死,让运维通道保持畅通。
紧急启用流量清洗与分发策略百G流量中,攻击流量通常占绝大部分,但往往混杂着少量真实用户请求。此时需要立刻将流量牵引至专业的流量清洗中心,无论是自建的清洗集群还是云服务商的高防IP。如果之前没有接入,立刻联系服务商做紧急接入,修改DNS解析,将A记录指向高防IP。DNS切换有个致命细节:TTL时间。如果之前TTL设置过长,比如3600秒,那切换后大量用户仍会解析到源站IP,攻击依然会打垮源站。紧急情况下,可以尝试联系域名注册商或DNS服务商,请求强制刷新部分递归DNS的缓存,同时立刻将源站IP更换为新的地址,并仅对高防IP的回源地址开放访问。在清洗中心,针对HTTP/HTTPS流量,立刻启用强校验模式,开启JS挑战和验证码,这会牺牲一部分用户体验,但能迅速过滤掉99%的僵尸网络流量。
应用层的精细化防御与降级网络层DDoS往往伴随着应用层CC攻击,攻击者会模拟正常请求,消耗数据库连接和CPU资源。在入口网关或负载均衡器上,立刻开启限流熔断。针对单一IP、单一Session、单一API接口设置极端的频率限制,比如单个IP每秒只能请求5次,超过则直接丢弃或返回429状态码。更关键的是业务降级。立刻关闭搜索建议、推荐算法、动态榜单计算等高消耗功能,将这些接口直接返回空值或静态缓存内容。对于电商或内容平台,立即将商品详情页、文章内容页全面静态化推送至CDN边缘节点,源站只处理下单、支付等核心事务。检查数据库连接池,如果发现大量慢查询堆积,直接kill掉长时间运行的查询进程,并临时关闭非核心的报表统计、后台分析任务。在代码层面,如果来得及,紧急上线一个补丁,在中间件层面对异常高频的User-Agent或特定请求路径进行直接拦截。
日志与流量特征的即时分析在应急的同时,必须有人专门负责分析攻击特征,这是从被动挨打转向主动防御的关键。不要试图保存所有原始日志,百G流量产生的日志量会瞬间撑爆磁盘。在流量清洗设备或网关层,开启NetFlow/sFlow采样,快速统计Top 10的源IP、源端口、协议类型、请求路径。你会发现攻击往往具有明显的特征,比如某个从未见过的User-Agent,或者请求的都是同一个耗时的API接口,或者源IP都来自某个特定的运营商或地域。一旦发现特征,立刻在清洗设备上添加特征过滤规则。如果是HTTP Flood,提取攻击请求中的特定字符串,比如固定的Referer缺失、特定的Cookie缺失,直接进行正则匹配拦截。对于游戏或UDP业务,分析包长分布,如果大量包长固定且载荷内容重复,直接针对包长和载荷特征码进行丢弃。
上游协同与带宽资源紧急扩容百G流量已经超出了绝大多数企业自有带宽的承受范围,必须立刻联系上游运营商和云服务商。向运营商明确告知遭受攻击的目标IP段、攻击流量类型和规模,请求协助在上游进行流量压制和分散。同时,在云服务商控制台,紧急提升高防实例的防护带宽上限,哪怕按天付费。如果业务部署在混合云环境,立刻启动云端的弹性资源,将流量入口切换到云端,利用云服务商的超大带宽和分布式清洗节点来硬抗。这里有一个关键的隐藏操作:检查你的SSL证书是否部署在清洗设备或云端节点上,如果证书在源站,而源站IP已不可达,用户访问时会看到证书错误,业务等同于瘫痪。必须确保证书同步部署在流量入口的最前端。
源站的隐蔽与回源策略加固攻击者一旦发现打不动高防IP,会转而寻找源站的真实IP。历史上大量案例都是因为源站IP泄露导致高防形同虚设。立刻检查所有可能泄露源站IP的途径:往期邮件的邮件头、域名历史解析记录、未受保护的子域名、甚至网站上的报错信息。将源站IP更换为一个全新的地址,并严格设置安全组或防火墙规则,仅允许高防节点的回源IP段访问,其他任何访问一律拒绝。对于Web应用,可以在源站Nginx或Apache上配置,仅当请求头中包含特定的回源校验Token时才响应真实内容,否则返回444或直接断开连接。这个Token由高防节点在回源时自动添加,这样即使攻击者拿到了源站IP,发起的请求也会被源站直接丢弃。
数据一致性与业务恢复的渐进式验证流量清洗和限流策略上线后,业务开始逐步恢复,但此时绝不能立刻全量放开。先通过内部测试账号和白名单IP验证核心链路是否通畅,下单、支付、数据写入是否正常。特别注意缓存与数据库的一致性问题。在攻击期间,大量请求可能触发了错误的缓存,或者数据库写入因为重试机制产生了脏数据。需要紧急执行一次数据校验脚本,检查订单状态、库存扣减、用户余额等关键数据是否准确。然后采用灰度放量的方式,逐步降低验证码的触发阈值,逐步放宽IP频率限制,观察服务器负载和业务指标。每放开一个限制,观察5分钟,确认无异常后再继续。如果发现某个策略放开后流量再次飙升,立刻回滚,并针对新特征进行二次清洗。
事后复盘与架构的永久性加固应急结束不代表事情完结。必须对攻击进行完整复盘,输出攻击时间线、攻击流量峰值、攻击类型、使用的清洗策略及效果、业务影响时长和范围。更重要的是,根据这次攻击暴露出的弱点,对系统架构进行永久性加固。如果这次是因为某个API没有限流被打垮,那就必须将限流熔断机制作为标准组件集成到架构中。如果是因为源站IP泄露,那就必须建立严格的IP生命周期管理机制,定期更换源站IP,并强制所有对外服务使用高防或CDN。将应急过程中手动执行的操作尽可能脚本化、自动化,例如编写自动触发流量清洗的脚本,当监控检测到流量超过阈值时,自动调用云服务商API切换DNS并启用最高防护等级。同时,准备一份简洁明了的应急响应手册,确保任何一位值班工程师在凌晨三点被警报叫醒时,都能按照手册步骤在几分钟内完成第一轮响应。
监控与告警的深度优化百G流量攻击往往不是瞬间达到峰值的,在爆发前通常会有流量爬坡的过程。优化监控体系,对入向流量设置多级阈值告警,比如带宽利用率超过70%发出预警,超过85%发出严重告警并自动触发初步防御策略。监控维度不能只看带宽,还要关注新建连接数、并发连接数、丢包率、应用层响应时间。特别是SYN_RECV状态的连接数,如果短时间内暴增,基本可以判定是SYN Flood攻击。将这些监控指标接入统一的告警平台,并配置好分级通知机制,确保关键告警能通过电话和短信触达到人。同时,定期进行压力测试和攻防演练,模拟百G级别流量冲击,检验整个防御体系和团队的响应速度,让每一次演练都暴露出新的问题并加以修正。
