1. 资产与访问面盘点
- 列出所有对外应用与管理入口(Web、API、SSH、数据库管理端口)。
- 识别服务暴露的IP/端口与对应域名,记录流向(内部、合作方、第三方API)。
- 输出CSV包含:服务名、IP/域名、端口、允许来源(CIDR)、风险评级。
2. 定义最小权限策略与分组
- 采用“默认拒绝、显式允许”的策略,优先用白名单控制访问。
- 将IP分组:管理控制台IP、合作伙伴IP、内部网段、第三方CDN/监控。为每组设定最小必要权限(仅允许必要端口)。
- 制定分级审批流程:新增白名单需审批并记录变更理由与时限。
3. 设计WAF规则层级与优先级
- 建议先建立全局白名单(管理IP)——全局黑名单(已知恶意IP)——业务白名单(特定服务)。
- 在WAF中通过优先级/规则顺序确保白名单先于检测规则执行,避免误拦。
- 配置“学习/观察”模式先记录命中,再切换到阻断以避免误伤。
4. 实际部署示例:AWS WAF(CLI)
- 建白名单IP集(IPSet):aws wafv2 create-ip-set --name "AllowIPs" --scope REGIONAL --ip-address-version IPV4 --addresses "203.0.113.0/24" --region cn-north-1
- 在Web ACL里创建规则引用该IPSet,设置Action为ALLOW;创建另一个IPSet用于黑名单,Action设为BLOCK。
- 推荐:在部署前在测试Web ACL上启用Logging与SampledRequests观察命中。
5. 实际部署示例:Cloudflare API 与 NGINX
- Cloudflare添加访问规则(allow/block)示例:curl -X POST "https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules" -H "X-Auth-Email: you@example.com" -H "X-Auth-Key:
" -H "Content-Type: application/json" --data '{"mode":"whitelist","configuration":{"target":"ip","value":"198.51.100.0"},"notes":"管理IP"}'
- 自托管NGINX示例:在site配置中统一include /etc/nginx/ips.conf,ips.conf写入:allow 203.0.113.0/24; deny all; 然后 nginx -t && systemctl reload nginx。
- 把WAF规则与边缘CDN规则结合,避免重复管理。
6. 变更控制、自动化与审计
- 使用IaC(Terraform/CloudFormation)管理IPSet与WAF规则,变更走CI流程并在PR中附风险说明与回滚步骤。
- 所有白/黑名单变更必须带上工单编号与审批者,写入变更日志并保留7天以上审计记录。
- 自动化示例:CI在合并时调用aws cli或cloudflare API更新并在Slack通知安全组。
7. 日志、告警与定期复审
- 打开WAF日志(CloudWatch/Cloudflare Logs),设置规则命中告警阈值(如某IP访问异常增多触发SRE警报)。
- 每月自动扫描白名单是否仍有效,过期的临时白名单自动清理。
- 对黑名单做归类:扫描机器人、恶意爬虫、暴力猜解,定期合并到共享威胁情报源。
8. 测试与回滚方案
- 在准生产环境先进行黑名单/白名单验证,通过模拟流量与渗透测试确认无误。
- 所有变更附带回滚命令,例如云WAF回滚可用Terraform rollback或用API恢复旧IPSet JSON。
- 设置短时间窗口(如10分钟)观察,若误杀率高则自动回滚并告警。
9. 细化策略:端口、协议与速率限制
- 白名单不仅限制IP,还应限制端口和协议(仅开放业务必要端口)。
- 配合WAF/防火墙实现速率限制,对同一IP短时间大量请求进行自动封禁。
- 对管理控制台强制仅允许固定跳板IP访问并配合VPN + MFA。
10. 合规与跨团队协作
- 确保白名单策略满足合规要求(如金融、医疗要求的审计保留期)。
- 安全部门负责策略制定,运维负责实施,Dev负责应用兼容性,SRE负责监控。
- 定期组织桌面演练(e.g. 恶意IP泛滥时的应急流程)。
11. 问:如何在不影响业务的前提下切换严格的白名单策略?
- 答:先在观察模式下记录命中,逐步收紧:先限制管理口,再对高风险API分段测试,使用流量回放与流量镜像验证无误后再强制阻断。
12. 问:临时合作方IP如何安全地加入白名单并自动过期?
- 答:给临时白名单设置TTL字段并用自动化脚本(Lambda/Cron + API)到期删除,且新增时要求工单与审批者信息写入变更记录。
13. 问:如何防止白名单被滥用成为“万能通行证”?
- 答:实施最小权限原则:白名单只允许必要端口与路径,结合客户端证书或签名验证、MFA与速率限制,并定期审计与回收无用条目。