DDoS攻击的高发期通常集中在节假日、电商大促、新品发布、财报发布前后以及某些地缘政治敏感时段。这些时间点攻击者更倾向于发起资源耗尽型攻击,因为业务方对可用性的敏感度最高,谈判筹码也最大。与其临时抱佛脚,不如在攻击来临前把几个关键位置的防护策略调整到位。下面直接讲具体可落地的优化方法。

先梳理资产暴露面,把不必要的端口和服务关掉

很多DDoS攻击之所以能快速打垮一个站点,并不是因为攻击流量有多大,而是因为暴露面太宽。比如一台服务器同时开着22、3306、6379、8080,甚至管理后台也直接对公网开放。攻击者不需要打满你的带宽,只需要针对某个未优化的服务发起小规模SYN Flood或者连接耗尽,就能让整台机器失去响应。防护的第一步永远是收缩暴露面。检查所有公网IP上的开放端口,只保留80和443。数据库、缓存、SSH管理端口全部改为内网访问或通过跳板机。如果业务必须开放API,建议单独拆分域名和入口,避免和主站共用同一组源站资源。

把DNS解析切到高防线路,并降低TTL

DNS层是DDoS防护中最容易被忽略的一环。攻击者如果直接对权威DNS服务器发起查询洪水,域名解析就会失败,用户根本到不了你的网站。高发期前应确认域名使用了具备流量清洗能力的DNS服务,并开启DNS防护。同时把TTL从常见的600秒降到60秒或更低。这样一旦需要切换解析到备用IP或高防IP,生效时间可以控制在一分钟内。不要小看这个细节,很多业务在攻击期间切换了IP,结果因为TTL过长导致大量用户还在访问已经失效的地址,恢复时间被拉长数小时。

源站IP必须隐藏,历史解析记录也要清理

如果攻击者直接拿到源站真实IP,前面挂的高防CDN就形同虚设。很多人以为套了CDN就安全了,但历史上解析过的IP、邮件头里泄露的IP、SSL证书透明日志里的记录、子域名指向的旧服务器,都可能成为攻击者的突破口。高发期前要做一次源站IP泄露排查。更换源站IP后,确认所有子域名、邮件服务、FTP服务都不再暴露真实地址。对于必须直接暴露的业务,比如游戏或物联网接口,建议在该IP前增加一层独立的高防转发,而不是直接裸奔。

启用弹性带宽和自动扩容策略

固定带宽在DDoS攻击面前非常脆弱。一个100Mbps的站点,攻击者只要打出200Mbps的流量就能完全堵死。高发期前应确认云服务商的弹性带宽功能已开启,或者将带宽上限临时调高到日常峰值的3到5倍。同时配置自动扩容规则,当入向流量超过阈值时自动增加带宽或启用按量计费。很多业务方担心成本,但一次成功的攻击造成的业务损失和用户流失,通常远高于临时扩容的费用。关键在于设置合理的阈值和封顶值,避免攻击导致账单失控。

优化TCP协议栈和内核参数

对于自建源站,内核参数调优能显著提升抗小流量攻击的能力。以下是一组常见优化配置:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535

这些参数的核心思路是:开启SYN Cookie防止半连接队列被打满,缩短重试次数和超时时间让无效连接快速释放,扩大队列长度和端口范围提升并发处理能力。需要注意的是,不同操作系统版本和内核对参数的支持有差异,调整前应在测试环境验证。

部署应用层限速和智能验证

很多DDoS攻击并不是纯粹的流量型,而是应用层CC攻击。攻击者用大量真实IP或代理IP请求高消耗的接口,比如搜索、登录、验证码发送、动态页面渲染。这类攻击流量不大,但能把后端数据库和CPU资源耗尽。防护方法是在网关层或应用层做限速。对每个IP、每个会话、每个设备指纹设置请求频率上限,超过阈值后触发验证码或直接丢弃。对于登录、注册、短信发送等高风险接口,单独设置更严格的频率限制。验证码不要用简单的图形验证,建议使用行为式验证或无感验证,既拦截机器人又不过度影响正常用户体验。

静态资源与动态请求分离

攻击者发起HTTP Flood时,如果所有请求都打到源站,源站很容易过载。把静态资源全部推到CDN边缘节点,源站只处理动态请求。图片、CSS、JS、字体文件设置长缓存时间,配合CDN的缓存命中率,大部分攻击流量会在边缘节点被吸收。对于动态接口,可以在CDN层配置缓存规则,把一些不频繁变化的数据接口缓存几十秒到几分钟。这样即使攻击者打的是动态URL,只要CDN能命中缓存,源站压力就会大幅下降。缓存键的设计要避免把用户身份信息带入,否则会导致缓存命中率极低。

准备备用入口和降级方案

高发期前应准备至少一个备用入口,可以是另一个CDN厂商的线路,也可以是提前配置好的高防IP。当主线路被攻击或质量严重劣化时,能够快速切换。切换手段包括DNS切换、负载均衡调度、客户端SDK内置备用域名等。同时要准备业务降级方案。比如攻击期间关闭搜索功能、关闭非核心推荐模块、减少数据库查询次数,用静态页面或缓存数据替代动态内容。降级方案要提前演练,确保在攻击发生时能一键切换,而不是临时改代码。

监控和告警要细化到接口级别

很多团队在攻击发生时才发现监控粒度太粗,只看到整体流量上涨,却不知道具体是哪个接口被攻击。高发期前应把监控指标细化到域名、路径、状态码、响应时间、源站连接数等维度。告警阈值要合理,比如某个接口的请求量在5分钟内上涨超过日常均值的3倍,或者5xx错误率超过5%,就触发告警。告警通道不要只依赖邮件,短信、即时通讯工具、电话语音都要配置。攻击往往在几分钟内就能造成严重影响,告警延迟一分钟可能就意味着用户已经开始流失。

提前与上游运营商和高防服务商沟通

如果你的业务体量较大,或者处于金融、政务、游戏等高危行业,高发期前应主动与机房运营商、云服务商、高防服务商沟通,告知业务高峰时段和预期流量。很多服务商在接到客户报备后,会提前调整清洗策略和资源预留。攻击发生时,报备过的客户通常能获得更快的响应和更精准的清洗。不要等到攻击已经打挂了才去找客服,那时候排队和处理流程会浪费大量时间。

攻击发生时的应急处理顺序

如果攻击已经发生,处理顺序很重要。第一步是确认攻击类型和规模,看监控数据是带宽打满、连接数耗尽还是CPU过载。第二步是切换或启用高防线路,把流量引到清洗设备。第三步是启用限速和验证策略,拦截应用层攻击。第四步是降级非核心功能,减轻源站压力。第五步是持续观察攻击是否转向,因为攻击者可能会在清洗生效后更换攻击向量。整个过程中保持冷静,按照预案执行,不要盲目重启服务器,重启往往会让连接状态丢失,反而加剧问题。

DDoS防护没有一劳永逸的方案,高发期的防护优化本质上是把防御纵深做厚,把响应速度提快。资产梳理、协议栈调优、应用层限速、备用入口、监控告警,每一层都做到位,攻击者就很难找到便宜可占的突破口。平时把这些基础工作做好,高发期来临时就不会手忙脚乱。