1.
总体防护思路与准备
- 思路:优先将流量导向“边缘
云WAF+CDN(免费)”,在源站部署轻量开源WAF(如ModSecurity)做二次深度防护。
- 准备:注册一个免费云WAF账号(例如Cloudflare免费计划或其他同类服务),准备修改域名DNS(能改nameserver或A记录),准备一台可SSH登录的源站或云主机用于部署Nginx+ModSecurity。
2.
第一步:注册并接入免费云WAF(以Cloudflare为例)
- 注册:访问Cloudflare官网,注册账号并添加站点,系统会扫描现有DNS记录。
- 修改DNS:将Cloudflare提供的nameserver写到域名注册商控制台,等待生效(通常几分钟到24小时)。
- 开启流量代理:在Cloudflare控制面板将需要保护的域名行“云朵”设为橙色(代理模式),此时流量会经过Cloudflare网络。
3.
第二步:在云WAF上配置基础防护策略
- 开启“Under Attack Mode”:临时应对较大DDoS或可疑流量,Cloudflare会对访问者做JS挑战。
- 安全等级和速率:把安全级别设为“中或高”;添加基于URI、User-Agent、Country的Firewall Rule封禁恶意指纹。
- 页面规则:对静态资源启用缓存、对登录/支付页禁用缓存并启用额外安全策略(例如挑战/验证码)。
4.
第三步:实施业务层(Layer7)防护策略
- 自定义防火墙规则:匹配高频访问同一URI、异常User-Agent或带攻击特征的请求(如包含sql注入模式)并阻断或挑战。
- Bot与爬虫识别:通过请求速率、Referer与UA组合识别并挑战疑似自动化流量。
- 验证页/验证码:对可疑会话强制跳转到验证码/人机验证页,阻止自动化提交。
5.
第四步:在源站部署Nginx + ModSecurity(开源WAF)
- 安装示例(Ubuntu):sudo apt update && sudo apt install nginx libapache2-mod-security2 wget -y;若使用nginx需编译或使用动态模块的ModSecurity-nginx connector。
- 启用OWASP CRS:下载并启用OWASP ModSecurity CRS规则集(可从github获取),把规则路径加入ModSecurity配置文件并设置SecRuleEngine On。
- 调整模式:首次启用先用检测模式(DetectionOnly)观察误报,再逐步切换到阻断模式(On)并白名单误报源。
6.
第五步:在源站实现速率限制与连接控制
- Nginx限流(示例):在http段添加 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;在location使用 limit_req zone=one burst=20 nodelay。
- iptables防SYN flood(示例):iptables -N SYN_FLOOD; iptables -A INPUT -p tcp --syn -j SYN_FLOOD; iptables -A SYN_FLOOD -m limit --limit 1/s --limit-burst 4 -j RETURN; iptables -A SYN_FLOOD -j DROP。
- 使用fail2ban:基于nginx日志编写fail2ban规则,自动封禁恶意高频IP。
7.
第六步:对业务层攻击(表单/接口滥用)做细粒度防护
- 强制认证与签名:对重要API加入时间戳+签名机制,校验请求合法性,避免重复请求攻击。
- CSRF/验证码/双因素:对敏感操作(下单、支付、密码修改)加入验证码或二次验证。
- 限制重复操作:后端实现基于用户/IP的短期唯一操作锁,避免并发重复提交。
8.
第七步:日志、报警与演练
- 日志集中:将Cloudflare日志(或Edge日志)与源站日志汇聚到ELK或云日志平台,便于关联分析。
- 告警规则:基于异常流量增长、错误率上升、CPU/带宽飙升触发自动告警(邮件/钉钉/Slack)。
- 演练:在测试环境用压力工具(ab、wrk、siege)做演练,验证防护规则是否生效并调整阈值,避免线上误拦。
9.
第八步:调整与优化规则避免误杀
- 初期监控误报:把ModSecurity先设为检测并记录触发详情,统计误报高的规则ID并调整或白名单。
- 分段放行:对重要客户IP或API调用做白名单,注意速率与信誉评估并周期性回收。
- 自动化规则更新:定期更新OWASP CRS与云WAF的威胁情报库,保留变更记录以便回滚。
10.
第九步:应急处置流程(当遭遇大规模攻击)
- 快速切换到边缘防护最大化:打开云WAF的“Under Attack/高挑战”模式,暂时切断非必要入口。
- 源站保护:在源站启用更严格的iptables限制、甚至临时更换为只允许云WAF出口IP访问(Cloudflare提供IP列表)。
- 恢复策略:攻击结束后逐步放松策略并分析日志找出攻击矢量,补强规则。
11.
第十步:费用与免费策略的注意事项
- 免费功能局限:免费云WAF通常提供基础DDoS和边缘过滤,高级细化WAF规则或速率限制可能需要付费。
- 混合防护:把免费云WAF作为第一道防线,源站的开源WAF和iptables作为第二道防线,形成成本低且有效的组合。
- SLA与滥用:了解免费服务的SLA和滥用条款,关键业务仍需考虑付费保障。
12.
问:免费云WAF能完全替代源站WAF吗?
- 答:免费云WAF可以拦截大量网络层和一些常见的业务层攻击,但不能完全替代源站WAF。建议边缘云WAF与源站ModSecurity/Nginx组合使用,边缘负责大规模流量清洗,源站负责深度业务规则与误报调整。
13.
问:如何测试防护是否生效而不影响真实用户?
- 答:在测试环境或使用受控IP白名单进行压测(ab/wrk/siege),并用低频率的模拟攻击逐步提升。同时开启检测模式记录触发日志,避免在生产环境直接以高强度压力测试真实用户。
14.
问:遭遇大流量DDoS时首要操作是什么?
- 答:首要操作是启用边缘WAF的最高防护策略(如Cloudflare的“Under Attack”),并临时限制源站只接受云WAF的回源IP访问,然后根据日志快速识别攻击向量并执行基于规则的封堵与回溯。