implementing-cloud-waf-rules
部署和调优 AWS WAF、Azure WAF 和 Cloudflare 上的 Web 应用防火墙规则,保护云托管应用免受 OWASP Top 10 攻击。详细介绍配置托管规则集、创建业务逻辑保护自定义规则、实施速率限制、部署机器人管理,以及通过规则调优和日志分析减少误报。
Best use case
implementing-cloud-waf-rules is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
部署和调优 AWS WAF、Azure WAF 和 Cloudflare 上的 Web 应用防火墙规则,保护云托管应用免受 OWASP Top 10 攻击。详细介绍配置托管规则集、创建业务逻辑保护自定义规则、实施速率限制、部署机器人管理,以及通过规则调优和日志分析减少误报。
Teams using implementing-cloud-waf-rules should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/implementing-cloud-waf-rules/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How implementing-cloud-waf-rules Compares
| Feature / Agent | implementing-cloud-waf-rules | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
部署和调优 AWS WAF、Azure WAF 和 Cloudflare 上的 Web 应用防火墙规则,保护云托管应用免受 OWASP Top 10 攻击。详细介绍配置托管规则集、创建业务逻辑保护自定义规则、实施速率限制、部署机器人管理,以及通过规则调优和日志分析减少误报。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 实施云 WAF 规则
## 适用场景
- 在云负载均衡器后部署需要 OWASP 保护的新 Web 应用或 API 时
- 应用渗透测试发现 SQL 注入、XSS 或其他注入漏洞时
- 遭受针对认证端点的暴力破解、凭据填充或机器人攻击时
- 合规要求(如 PCI-DSS)强制要求部署 WAF 时
- 调优 WAF 规则以减少阻断合法应用流量的误报时
**不适用于**:网络级 DDoS 防护(使用 AWS Shield 或 Azure DDoS Protection)、API 认证设计(参见 managing-cloud-identity-with-okta),或应用代码级安全修复(WAF 是补偿控制,不能替代安全编码)。
## 前置条件
- 已配置 AWS ALB/CloudFront、Azure Application Gateway 或 Cloudflare 作为应用入口点
- WAF 部署前的应用流量日志用于基线分析
- 用于在生产执行前验证 WAF 规则的测试环境
- 了解应用请求模式以最小化误报
## 工作流程
### 步骤 1:部署托管规则集
启用涵盖 OWASP Top 10 漏洞的云提供商托管规则集。在切换到阻断(Block)模式之前,先在计数(Count,检测)模式下运行。
```bash
# AWS WAF:使用 AWS 托管规则创建 Web ACL
aws wafv2 create-web-acl \
--name production-waf \
--scope REGIONAL \
--default-action '{"Allow": {}}' \
--visibility-config '{
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "production-waf"
}' \
--rules '[
{
"Name": "AWSManagedRulesCommonRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"OverrideAction": {"Count": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CommonRuleSet"
}
},
{
"Name": "AWSManagedRulesSQLiRuleSet",
"Priority": 2,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesSQLiRuleSet"
}
},
"OverrideAction": {"Count": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "SQLiRuleSet"
}
},
{
"Name": "AWSManagedRulesKnownBadInputsRuleSet",
"Priority": 3,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesKnownBadInputsRuleSet"
}
},
"OverrideAction": {"Count": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "KnownBadInputs"
}
}
]'
```
### 步骤 2:创建自定义速率限制规则
部署基于速率的规则,保护登录端点免受暴力破解和凭据填充攻击。
```bash
# 登录端点速率限制规则(每 IP 每 5 分钟 100 次请求)
aws wafv2 update-web-acl \
--name production-waf \
--scope REGIONAL \
--id <web-acl-id> \
--lock-token <lock-token> \
--default-action '{"Allow": {}}' \
--rules '[
{
"Name": "RateLimitLogin",
"Priority": 0,
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": {
"ByteMatchStatement": {
"FieldToMatch": {"UriPath": {}},
"PositionalConstraint": "STARTS_WITH",
"SearchString": "/api/auth/login",
"TextTransformations": [{"Priority": 0, "Type": "LOWERCASE"}]
}
}
}
},
"Action": {"Block": {"CustomResponse": {"ResponseCode": 429}}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "RateLimitLogin"
}
}
]'
```
### 步骤 3:配置地理封锁和 IP 声誉
阻断来自应用没有合法用户的国家的流量,并利用 IP 声誉列表阻断已知恶意来源。
```bash
# AWS WAF:地理封锁规则
# 阻断不在允许列表中的国家
aws wafv2 create-ip-set \
--name blocked-ips \
--scope REGIONAL \
--ip-address-version IPV4 \
--addresses "198.51.100.0/24" "203.0.113.0/24"
# 添加 Amazon IP 声誉规则
# AWSManagedRulesAmazonIpReputationList 阻断被 AWS 威胁情报标记的 IP
```
### 步骤 4:调优规则以减少误报
在计数模式下分析 WAF 日志,识别被标记的合法请求。为特定 URI 路径或请求模式创建规则例外。
```bash
# 启用 WAF 日志到 S3
aws wafv2 put-logging-configuration \
--logging-configuration '{
"ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/production-waf/id",
"LogDestinationConfigs": ["arn:aws:s3:::waf-logs-bucket"],
"RedactedFields": [{"SingleHeader": {"Name": "authorization"}}]
}'
# 使用 Athena 查询 WAF 日志以发现误报
# 查找最频繁触发合法流量的规则
cat << 'EOF' > waf-analysis.sql
SELECT
terminatingRuleId,
httpRequest.uri,
httpRequest.httpMethod,
COUNT(*) as block_count
FROM waf_logs
WHERE action = 'BLOCK'
AND timestamp > date_add('day', -7, now())
GROUP BY terminatingRuleId, httpRequest.uri, httpRequest.httpMethod
ORDER BY block_count DESC
LIMIT 20
EOF
```
```bash
# 从导致误报的托管规则集中排除特定规则
# 示例:为文件上传端点排除 SizeRestrictions_BODY
aws wafv2 update-web-acl \
--name production-waf \
--scope REGIONAL \
--id <web-acl-id> \
--lock-token <lock-token> \
--rules '[{
"Name": "AWSManagedRulesCommonRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet",
"ExcludedRules": [{"Name": "SizeRestrictions_BODY"}]
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CommonRuleSet"
}
}]'
```
### 步骤 5:验证后切换到阻断模式
经过 7-14 天的计数模式且误报率可接受后,将托管规则切换到阻断模式进行主动防护。
```bash
# 将 OverrideAction 从 Count 更改为 None(使用规则组的默认阻断操作)
# 将每个托管规则组从 {"Count": {}} 更新为 {"None": {}}
# 监控 CloudWatch 指标,观察被阻断请求量的突然变化
```
## 核心概念
| 术语 | 定义 |
|------|------|
| Web ACL(Web 访问控制列表) | 定义针对受保护资源每个 HTTP 请求进行评估的规则集 |
| 托管规则组(Managed Rule Group) | 由云提供商或第三方供应商维护的预配置规则集,涵盖常见攻击模式 |
| 基于速率的规则(Rate-Based Rule) | 跟踪每 IP 地址请求速率的 WAF 规则,阻断在时间窗口内超过阈值的 IP |
| 计数模式(Count Mode) | WAF 操作,记录匹配请求但不阻断,用于执行前的规则验证 |
| 规则优先级(Rule Priority) | 确定规则评估顺序的数字排序,数字越小优先级越高 |
| 自定义响应(Custom Response) | WAF 在阻断请求时返回特定 HTTP 状态码和标头的功能 |
| 范围限定语句(Scope-Down Statement) | 将基于速率的规则缩小到特定 URI 路径、方法或标头的条件 |
| 误报(False Positive) | WAF 规则错误阻断的合法请求,需要规则调优或排除处理 |
## 工具与系统
- **AWS WAF**:与 ALB、CloudFront、API Gateway 和 AppSync 集成的云原生 WAF
- **Azure WAF**:Application Gateway 或 Front Door 上具有 OWASP CRS 规则集的 Web 应用防火墙
- **AWS Firewall Manager**:跨 Organization 中多个 AWS 账户的集中化 WAF 策略管理
- **WAF Security Automations**:基于日志分析自动更新 WAF 规则的 AWS Lambda 解决方案
- **CloudWatch 指标**:用于跟踪 WAF 规则匹配率、阻断计数和允许请求的监控仪表盘
## 常见场景
### 场景:针对认证 API 的凭据填充攻击
**场景背景**:一个电子商务应用每小时遭受来自僵尸网络使用盗取凭据列表的 5 万次登录尝试。攻击者每隔几分钟轮换源 IP 以规避简单的基于 IP 的阻断。
**方法**:
1. 部署基于速率的规则,将登录端点请求限制为每 IP 每 5 分钟 10 次
2. 启用 AWS WAF Bot Control 托管规则组,检测 IP 轮换之外的自动请求模式
3. 添加自定义规则,要求登录失败超过 5 次的请求提供有效 CAPTCHA 令牌
4. 使用 AWSManagedRulesAmazonIpReputationList 实施 IP 声誉阻断
5. 创建匹配凭据填充工具常见 User-Agent 模式的自定义规则
6. 监控被阻断请求指标,根据合法流量模式调整阈值
**常见陷阱**:设置速率限制过于激进会阻断共享 NAT IP 背后的合法用户。仅通过 User-Agent 阻断很容易被轮换代理字符串绕过。
## 输出格式
```
云 WAF 配置报告
================================
Web ACL: production-waf
范围: 区域性(us-east-1)
受保护资源: ALB(arn:aws:elasticloadbalancing:...)
报告日期: 2025-02-23
规则配置:
[P0] RateLimitLogin - 阻断(每 IP 每 5 分钟 100 次)
[P1] AWSManagedRulesCommon - 阻断(1 个排除: SizeRestrictions_BODY)
[P2] AWSManagedRulesSQLi - 阻断
[P3] AWSManagedRulesKnownBad - 阻断
[P4] AWSManagedRulesBotControl - 计数(评估阶段)
[P5] GeoBlockRule - 阻断(已阻断 12 个国家)
流量分析(过去 7 天):
请求总数: 2,847,293
允许: 2,791,456(98.0%)
阻断: 51,234(1.8%)
计数: 4,603(0.2%)
TOP 阻断规则:
RateLimitLogin: 23,456 次阻断(45.8%)
SQLi 检测: 8,234 次阻断(16.1%)
CommonRuleSet(XSS): 7,891 次阻断(15.4%)
GeoBlockRule: 6,543 次阻断(12.8%)
KnownBadInputs: 5,110 次阻断(10.0%)
误报分析:
报告的误报: 3
确认的误报: 1(/api/upload 的 SizeRestrictions_BODY)
已采取措施: 已应用规则排除
```Related Skills
securing-kubernetes-on-cloud
本技能涵盖通过实施 Pod 安全标准(Pod Security Standards)、网络策略、工作负载身份、RBAC 权限控制、镜像准入控制和运行时安全监控,对 EKS、AKS 和 GKE 上的托管 Kubernetes 集群进行加固。涉及云平台特定安全功能,包括 EKS 的 IRSA、GKE 的工作负载身份(Workload Identity)以及 AKS 的托管身份(Managed Identity)。
performing-threat-hunting-with-yara-rules
使用 YARA 模式匹配规则在文件系统和内存转储中狩猎恶意软件、可疑文件和入侵指标。 涵盖规则编写、yara-python 扫描以及与威胁情报源的集成。
performing-cloud-storage-forensic-acquisition
通过收集 API 远程数据和端点设备本地同步客户端制品,对 Google Drive、OneDrive、Dropbox 和 Box 等云存储服务执行取证获取和分析。
performing-cloud-penetration-testing
对 AWS、Azure 和 GCP 云环境执行授权渗透测试,识别 IAM 错误配置、暴露的存储桶、过度宽松的安全组、 无服务器函数漏洞以及从初始访问到账户沦陷的云特定攻击路径。测试人员使用云原生工具及 Pacu、 ScoutSuite 等专用框架枚举并利用云基础设施。适用于云渗透测试、AWS 安全评估、Azure 渗透测试 或云基础设施安全测试等请求场景。
performing-cloud-penetration-testing-with-pacu
使用开源 AWS 利用框架 Pacu 执行已授权的 AWS 渗透测试,枚举 IAM 配置、发现权限提升路径、测试凭据收集,并通过系统化的攻击模拟验证安全控制。
performing-cloud-native-forensics-with-falco
使用 Falco YAML 规则在容器和 Kubernetes 中进行运行时威胁检测,监控系统调用以检测 shell 生成、文件篡改、网络异常和权限提升。通过 Falco gRPC API 管理 Falco 规则并解析 Falco 告警输出。适用于构建容器运行时安全或调查 k8s 集群入侵。
performing-cloud-incident-containment-procedures
在 AWS、Azure 和 GCP 中执行云原生事件遏制,包括隔离受攻陷资源、撤销凭据、保全取证证据,以及应用安全组限制以防止横向移动。
performing-cloud-forensics-with-aws-cloudtrail
使用 CloudTrail 日志对 AWS 环境执行取证调查,重建攻击者活动、识别受损凭据并分析 API 调用模式。
performing-cloud-forensics-investigation
通过收集和分析来自 AWS、Azure 和 GCP 服务的日志、快照和元数据,在云环境中开展取证调查。
performing-cloud-asset-inventory-with-cartography
使用 Cartography 执行全面的云资产清单和关系映射,在 AWS、GCP 和 Azure 中构建包含基础设施资产、IAM 权限和攻击路径的 Neo4j 安全图谱。
managing-cloud-identity-with-okta
本技能涵盖将 Okta 部署为云环境集中身份提供商,配置与 AWS、Azure 和 GCP 的 SSO 集成,使用 Okta FastPass 部署抗钓鱼 MFA,管理用户预配置和取消配置的生命周期自动化,以及基于设备态势和风险信号实施自适应访问策略。
implementing-zero-trust-with-hashicorp-boundary
使用 HashiCorp Boundary 实现具备动态凭据代理、会话录制和 Vault 集成的身份感知零信任基础设施访问管理。