1.
问题背景与目标
• 说明:在生产环境中为保障业务可用性,常会使用WAF白名单放行特定IP或UA,但不当放行可能导致安全事件与误判。
• 目标:在允许可信流量进入的同时,结合日志监控建立告警与回滚机制,避免误放行或放行后被滥用。
• 适用场景:API网关、管理后台、与第三方CDN配合的业务服务器。
• 约束:服务器(ECS/VPS)资源、带宽、并发能力需预先评估。
• 输出:设计白名单流程、告警阈值、回滚步骤与示例脚本。
• 相关组件:阿里
云WAF、CloudMonitor、ECS安全组、阿里云日志服务(SLS)、Nginx/Apache。
2.
白名单设置原则与操作步骤
• 原则一:最小放行,只对确切IP/端口/路径放行,避免泛域名或大网段放行。
• 原则二:结合业务流量和历史日志,设定白名单有效期与审计记录。
• 操作步骤:1) 在WAF控制台创建白名单规则并记录rule_id;2) 配置生效时间与备注;3) 在SLS开启相关日志采集;4) 在CloudMonitor添告警策略。
• 示例配置:白名单条目示例 - IP: 203.0.113.45, Scope: /api/v1/orders, Validity: 60分钟, rule_id: 1452023。
• 自动化:通过阿里云OpenAPI脚本批量添加/移除rule_id,并将操作写入变更日志。
• 审计:每次放行都生成一条SLS日志,记录操作人、时间、rule_id、理由。
3.
日志监控与告警策略设计
• 监控项:WAF日志(命中数、白名单命中数)、ECS指标(CPU、内存、网络流量)、请求速率(RPS)、并发连接。
• 指标阈值示例:当某一白名单IP的请求数 > 1000 RPS 且连续3分钟 内的攻击类型占比 > 30% 时触发告警。
• CloudMonitor告警:metric=WAF_AttackCount, period=1min, trigger=threshold>100, duration=5min。
• SLS实时分析:基于日志聚合计算IP请求分布、URI异常等,使用SQL规则触发Webhook。
• 告警动作:先通知值班工程师(短信/钉钉),同时调用自动化脚本将白名单降级为临时观测或直接回滚。
• 日志保留:WAF日志保留90天,关键事件导出至归档存储(OSS)并留存一年。
4.
告警与回滚流程(自动化示例)
• 阶段一:预警 - SLS检测到白名单IP响应异常增长并触发CloudMonitor。
• 阶段二:自动响应 - 触发Lambda/函数计算调用WAF API: 将白名单status设为observe或临时注释。
• 阶段三:流量控制 - 同时在ECS层调整Nginx限速或在安全组添加临时限流规则。
• 阶段四:人工判定 - 值班工程师查看日志快照并决定是否彻底撤销白名单。
• 阶段五:回滚与恢复 - 若确认异常,调用回滚脚本移除rule_id并回滚到上一个策略快照。
• 阶段六:事后分析 - 汇总事件数据,更新白名单审批流程并记录到变更管理系统。
5.
真实案例:电商平台双十一白名单误放行事件
• 背景:某中型电商在双十一活动前临时放行第三方数据同步IP(203.0.113.45)以解决数据延迟。
• 事件:放行后30分钟内,该IP被滥用,导致短时RPS飙升,触发应用超时,部分订单接口502。
• 监控数据(示例):见下表,展示放行前后1小时的关键指标。
| 时间 | 源IP | RPS | WAF攻击命中数/min | 应用错误率(%) |
| T-30m | 203.0.113.45 | 12 | 0 | 0.2 |
| T+10m | 203.0.113.45 | 3,200 | 420 | 6.8 |
| T+30m | 203.0.113.45 | 1,100 | 120 | 1.9 |
• 处理:自动告警触发后,回滚脚本在2分钟内撤销白名单并在ECS层临时限速,系统恢复稳定。
• 结论:增加白名单审批与短期生效机制,以及白名单添加后必须启动SLS实时分析。
6.
服务器与WAF配置示例
• 服务器规格示例:ECS规格 ecs.c6.large,2 vCPU,4GB内存,带宽100Mbps,最大并发建议上限10000。
• Nginx示例参数:worker_processes auto; worker_connections 4096; keepalive_timeout 65; limit_req zone=one burst=200 nodelay;。
• WAF策略示例:策略ID 78901,白名单条目 rule_id=1452023, ip=203.0.113.45, path=/api/*, expire=3600。
• CloudMonitor规则示例:namespace=WAF, metric=WAF_WhiteHit_RPS, period=60, threshold=1000, consecutive=3。
• 回滚脚本伪代码:1) 调用WAF.DeleteRule(rule_id) 2) 更新SLS注记 3) 调整安全组 4) 发送告警恢复通知。
• 备份与恢复:在重大变更前对WAF策略和ECS配置做快照,并在OSS存储变更包。
7.
最佳实践与建议
• 白名单审批:建立三级审批与自动化时间窗(例如最多60分钟),超时自动回滚。
• 指标联动:将WAF日志、ECS指标、CDN流量和SLS告警联动,实现多维度判定以减少误报。
• 频率与配额:对单IP设定RPS上限(如1500 RPS),超过即自动降级白名单或进入观察模式。
• 灾备:在DDoS攻击或误放行时,快速切换到CDN限流或使用阿里云DDoS高防进行流量清洗。
• 演练:定期(每季度)演练白名单误放行的告警与回滚流程并更新SOP。
• 文档与审计:所有白名单变更必须记录到变更管理系统并保留操作日志以供事后追溯。
来源:阿里云waf白名单设置 与日志监控结合的告警与回滚机制