学习 AWS WAF、AWS Shield 和 OWASP Top 10 的过程中整理的笔记,尽量用通俗语言解释每个概念,适合对云安全感兴趣但还没深入了解的开发者。
AWS 安全三件套学习笔记
AWS WAF · OWASP Top 10 · AWS Shield — 通俗易懂版
一、先搞清楚”攻击”是什么
在学防护之前,先理解我们在防什么。
常见攻击类型
| 攻击名称 | 通俗解释 | 危害 |
|---|---|---|
| DDoS | 一万台机器同时刷你的网站,服务器被压垮 | 网站瘫痪,正常用户无法访问 |
| SQL 注入 | 在输入框里填恶意代码,骗数据库执行 | 数据泄露、数据被篡改 |
| XSS | 把恶意脚本植入网页,攻击访问者 | 用户 Cookie 被盗、账号被劫持 |
| 供应链攻击 | 在第三方库或工具中植入恶意代码 | 大规模感染,难以察觉 |
| 暴力破解 | 用脚本不停尝试密码 | 账号被入侵 |
二、AWS Shield — 防洪水
是什么
专门用来抵御 DDoS 攻击的服务。
DDoS 就像餐厅突然涌入一万个假顾客,把座位占满,真实顾客进不来。Shield 的作用就是在门口识别并驱散这些假顾客。
两个版本
Shield Standard(免费)
- 所有 AWS 用户自动启用,无需配置
- 防护网络层(L3)和传输层(L4)的常见攻击
- SYN Flood:伪造大量连接请求耗尽服务器资源
- UDP Flood:发送大量无效数据包占满带宽
- 反射攻击:利用第三方服务器放大攻击流量
- 覆盖 CloudFront 和 Route 53
Shield Advanced(付费,约 $3000/月)
- 在 Standard 基础上增加:
- L7 应用层防护(HTTP Flood、CC 攻击)
- 实时攻击可视化,看到攻击正在发生
- 24/7 SRT 专家团队支持,攻击时可以联系 AWS 专家
- 费用保护:DDoS 导致账单飙升可申请抵免
- WAF 免费集成
防护的资源
| 资源 | Standard | Advanced |
|---|---|---|
| CloudFront | ✅ | ✅ |
| Route 53 | ✅ | ✅ |
| ALB / NLB | ❌ | ✅ |
| EC2 弹性 IP | ❌ | ✅ |
| Global Accelerator | ❌ | ✅ |
防护层次图
1 | L7 应用层 ── HTTP Flood、CC 攻击 ← Shield Advanced + WAF |
什么时候用 Advanced
- 业务对可用性要求极高(金融、电商、游戏)
- 担心 DDoS 攻击导致 AWS 账单暴涨
- 需要专家实时介入处理攻击
三、AWS WAF — 防坏请求
是什么
WAF = Web Application Firewall,Web 应用防火墙。
如果说 Shield 防的是”请求的量”(洪水),WAF 防的是”请求的质”(坏人混进来)。
WAF 就像一个检查员,每个请求进来都要过一遍:这个请求正常吗?有没有夹带恶意内容?
核心概念
1 | Web ACL(访问控制列表) |
动作类型:
Allow— 放行Block— 拦截,返回 403Count— 只计数,不拦截(用于观察阶段)CAPTCHA— 弹出验证码
💡 建议:新规则先用 Count 模式跑一段时间,确认不会误伤正常用户,再切换到 Block。
可以挂在哪里
- CloudFront(推荐,离用户最近)
- Application Load Balancer(ALB)
- API Gateway
- AWS AppSync
AWS 托管规则集(开箱即用)
不用自己写规则,AWS 提供现成的规则集:
| 规则集名称 | 防护内容 |
|---|---|
| AWSManagedRulesCommonRuleSet | 通用 Web 攻击(必开) |
| AWSManagedRulesSQLiRuleSet | SQL 注入攻击 |
| AWSManagedRulesKnownBadInputsRuleSet | 已知恶意输入模式 |
| AWSManagedRulesBotControlRuleSet | 爬虫和机器人 |
| AWSManagedRulesAmazonIpReputationList | 已知恶意 IP |
| AWSManagedRulesAnonymousIpList | 匿名代理、VPN、Tor |
常用自定义规则
速率限制(防暴力破解)
1 | 条件:同一个 IP,5 分钟内请求超过 100 次 |
IP 白名单(只允许指定 IP 访问)
1 | 条件:源 IP 不在白名单列表中 |
地理位置限制
1 | 条件:请求来自某些国家 |
注意:WAF 有容量限制
每个 Web ACL 默认上限是 1500 WCU(Web ACL Capacity Units),每个规则有自己的 WCU 消耗,规则越复杂消耗越高。
四、OWASP Top 10 — 最危险的 10 类漏洞
是什么
OWASP(开放全球应用安全项目)是一个非营利安全社区,每隔几年发布一次 Top 10 Web 安全风险榜单,汇总全球真实漏洞数据,相当于安全界的”年度通缉令”。
这份榜单已成为行业标准,很多企业的安全合规要求直接引用它。
版本说明
| 版本 | 状态 |
|---|---|
| OWASP Top 10 2025 | ✅ 当前最新版 |
| OWASP Top 10 2021 | 上一版,仍广泛引用 |
| OWASP Top 10 2017 | 已过时 |
2021 vs 2025 排名对比
| 排名 | 2021 版 | 2025 版 |
|---|---|---|
| A01 | 访问控制失效 | 访问控制失效(不变) |
| A02 | 加密失败 | 安全配置错误(上升 ↑) |
| A03 | 注入攻击 | 软件供应链失败(新晋 🆕) |
| A04 | 不安全设计 | 加密失败(下降 ↓) |
| A05 | 安全配置错误 | 注入攻击(下降 ↓) |
| A06 | 易受攻击的过时组件 | 不安全设计(下降 ↓) |
| A07 | 身份认证失败 | 身份认证失败(不变) |
| A08 | 软件和数据完整性失败 | 软件和数据完整性失败(不变) |
| A09 | 安全日志与监控失败 | 安全日志与告警失败(不变) |
| A10 | SSRF | 异常条件处理不当(新晋 🆕,SSRF 并入 A01) |
2025 版 Top 10 详解
A01 — 访问控制失效 ⚠️ 连续两版排名第一
是什么: 用户能访问他不应该访问的功能或数据。2025 版还将 SSRF 并入此类。
两种常见形式:
- 垂直越权:普通用户访问到管理员功能
- 水平越权:用户 A 能看到用户 B 的订单
真实案例: 把 URL 里的 user_id=123 改成 user_id=124,就看到了别人的数据。
SSRF(现归入此类): 攻击者骗服务器访问内部地址。在 AWS 上可通过 SSRF 访问 EC2 元数据接口(169.254.169.254),窃取 IAM 临时凭证。
防护方法:
- 服务器端严格校验权限(不能只靠前端隐藏按钮)
- IAM 最小权限原则
- AWS 上强制启用 IMDSv2,防止 SSRF 获取元数据
- JWT Token 中嵌入用户身份,后端每次验证
A02 — 安全配置错误(从 A05 升至 A02)
是什么: 服务配置不当,留下漏洞。2025 版排名大幅上升,反映云环境下配置错误越来越普遍。
常见错误:
- S3 存储桶设置为公开可读
- 生产环境开着调试模式,报错信息暴露代码细节
- 云服务使用默认账号密码没修改
- 开了很多不需要的端口和服务
防护方法:
- AWS Security Hub 自动检测配置问题
- AWS Config Rules 持续监控资源配置
- 定期做安全审计
A03 — 软件供应链失败 🆕(2025 新晋,直接进入第三)
是什么: 你依赖的第三方代码、工具、库被篡改或含有漏洞,导致你的系统也被攻击。这是 2025 版最大的变化,社区投票中有 50% 的人把它列为第一。
真实案例:
- SolarWinds(2019):供应商软件更新被植入后门,约 18000 家机构受影响,包括美国多个政府部门
- Log4Shell(2021):Java 日志库 Log4j 漏洞,攻击者发送一条特殊日志即可远程执行代码
- Bybit 被盗(2025):通过供应链攻击盗走 15 亿美元加密货币
防护方法:
- 维护 SBOM(软件物料清单),追踪所有直接和间接依赖
- 只从官方可信来源获取组件,优先使用签名包
- 使用 AWS Inspector 扫描漏洞,ECR 开启镜像扫描
- CI/CD 流水线加强访问控制,做到职责分离(写代码的人不能直接推送到生产)
- 使用分阶段发布(金丝雀发布),避免供应商被入侵时全量受影响
A04 — 加密失败(从 A02 降至 A04)
是什么: 敏感数据没有加密,或者用了弱加密。
常见错误:
- 数据库里存明文密码
- 用 MD5 / SHA1 哈希密码(已被破解)
- 接口用 HTTP 而不是 HTTPS 传输
防护方法:
- 密码用 bcrypt 哈希存储
- 全站强制 HTTPS
- AWS 上用 KMS 加密敏感数据,S3 / RDS 开启静态加密
A05 — 注入攻击(从 A03 降至 A05)
是什么: 攻击者把恶意代码混进输入,骗程序执行。
SQL 注入例子:
1 | -- 正常查询 |
防护方法:
- 使用参数化查询(Prepared Statement),永远不拼接 SQL 字符串
- AWS WAF 开启 SQLi 规则集
- 输入内容严格校验和过滤
A06 — 不安全设计(从 A04 降至 A06)
是什么: 系统设计阶段就有安全缺陷,不是代码写错了,而是根本没考虑安全。
例子: 密码找回功能用”密保问题”,问题太简单,攻击者猜得出来。
防护方法:
- 设计阶段做威胁建模(想清楚攻击者会怎么利用你的系统)
- 遵循最小攻击面原则
A07 — 身份认证失败(位置不变)
是什么: 登录和会话管理有漏洞,导致账号被入侵。
常见问题:
- 允许弱密码(123456)
- 没有 MFA(多因素认证)
- 登录失败次数不限制,可以无限暴力破解
- Session Token 不过期
防护方法:
- 强制强密码 + MFA
- AWS Cognito 内置登录保护
- WAF 速率限制防暴力破解
- Secrets Manager 管理密钥,定期自动轮换
A08 — 软件和数据完整性失败(位置不变)
是什么: 代码或数据在传输/更新过程中被篡改,但没有验证。
常见场景:
- 从不可信的 CDN 加载第三方脚本
- CI/CD 流水线没有校验构建产物的完整性
- 不安全的反序列化(接收外部数据直接反序列化执行)
防护方法:
- 使用 AWS CodeArtifact 私有包仓库
- 对关键软件包验证签名
- 维护 SBOM(软件物料清单)
A09 — 安全日志与告警失败(位置不变)
是什么: 没有足够的日志,攻击发生了都不知道,事后也无法溯源。
后果: 攻击者可能已经潜伏数月,你毫无察觉。
防护方法:
- AWS CloudTrail:记录所有 API 操作(谁、什么时间、做了什么)
- CloudWatch:设置异常告警
- AWS GuardDuty:机器学习自动检测威胁行为
- AWS Security Lake:集中存储和分析安全日志
A10 — 异常条件处理不当 🆕(2025 新晋,替换 SSRF)
是什么: 程序遇到异常情况时处理不当,导致崩溃、泄露信息或出现安全漏洞。
常见问题:
- 报错信息把数据库结构、堆栈信息直接返回给用户
- 异常发生时”失败开放”(fail open):本应拒绝的操作,因为出错而意外放行
- 未捕获的异常导致程序进入未知状态,被攻击者利用
真实例子: 登录接口报错时返回 User not found in database: users_v2 table,攻击者由此得知数据库表名。
防护方法:
- 对用户只显示通用错误信息,详细错误只写进日志
- 每个可能出错的地方都要有明确的错误处理逻辑
- 异常时”失败关闭”(fail closed):不确定的情况下默认拒绝
- 设置全局异常处理兜底,防止漏网之鱼
五、三者关系总结
1 | 你的应用 |
| AWS Shield | AWS WAF | OWASP Top 10 | |
|---|---|---|---|
| 性质 | AWS 服务 | AWS 服务 | 安全标准/指南 |
| 防什么 | DDoS 大流量攻击 | 恶意 HTTP 请求内容 | 应用层漏洞 |
| 在哪里生效 | 网络边缘 | HTTP 请求检查 | 代码和架构层面 |
| 需要写代码吗 | 不需要 | 配置规则即可 | 需要开发时注意 |
六、快速上手建议
基础配置(适合大多数项目)
- Shield Standard — 已自动开启,不用管
- WAF 挂到 API Gateway 或 CloudFront,开启这两个托管规则集:
AWSManagedRulesCommonRuleSetAWSManagedRulesSQLiRuleSet
- CloudTrail 开启,保留操作日志
- 开发时 对照 OWASP Top 10 2025 检查自己的代码
进阶配置(高安全要求项目)
- WAF 加速率限制规则,防暴力破解
- 如果后端 API 在 Cloudflare 之后,设置 IP 白名单只允许 Cloudflare IP 段访问
- 强制启用 IMDSv2,防止 SSRF 窃取 EC2 元数据凭证
- 开启 GuardDuty 自动威胁检测
- 维护 SBOM,定期扫描依赖漏洞(对应 OWASP A03)
- 考虑 Shield Advanced(业务可用性要求极高时)
基于 OWASP Top 10:2025 整理,参考官方文档:https://owasp.org/Top10/2025/
- 本文标题:AWS 安全三件套:WAF、Shield 与 OWASP Top 10 通俗指南
- 本文作者:乔文飞
- 创建时间:2026-05-26 08:00:00
- 本文链接:http://www.feidom.com/2026/05/26/aws-waf-shield-owasp-top10/
- 版权声明:本博客所有文章为作者学习笔记,有转载其他前端大佬的文章。转载时请注明出处。