ahmxdniazi/aws-secure-vpc-waf-network-firewall
GitHub: ahmxdniazi/aws-secure-vpc-waf-network-firewall
该项目展示了如何在 AWS 上使用 WAF、Network Firewall、Shield 和 VPC Flow Logs 构建一个多层防御的生产级安全 VPC 网络边界。
Stars: 0 | Forks: 0
# 🛡️ 项目 2 — 使用 WAF、Shield 和 Network Firewall 的安全 VPC




**AWS Cloud Security — 5 个核心项目系列的一部分**
[概述](#-overview) • [架构](#-architecture) • [使用的服务](#-services-used) • [步骤](#-implementation-steps) • [截图](#-screenshots) • [关键收获](#-key-learnings)
## 📌 概述
本项目演示了如何在 AWS 上使用分层防御构建一个**完整的网络安全边界**。我构建了一个生产级的安全 VPC,结合了多种 AWS 安全服务来防范 DDoS 攻击、Web 攻击和未经授权的网络访问 —— 涵盖了面试官在云安全职位中考察的核心能力。
### 🎯 我构建的内容
| 组件 | 用途 |
|-----------|---------|
| **安全 VPC** | 具有公有、私有和隔离子网的多层网络 |
| **NACLs & Security Groups** | 分层的无状态 + 有状态网络控制 |
| **AWS WAF** | OWASP Top 10 防护 + ALB 上的速率限制 |
| **AWS Network Firewall** | 有状态深度数据包检测 |
| **VPC Flow Logs + Athena** | 实时流量监控和威胁查询 |
| **AWS Shield Standard** | 自动 DDoS 防护 |
## 🏗️ 架构
```
Internet
│
▼
┌─────────────────────────────────────────────────┐
│ AWS WAF (Web ACL) │
│ OWASP Rules + Rate Limiting + IP Blocks │
└─────────────────────┬───────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Application Load Balancer (ALB) │
│ Public Subnets (2 AZs) │
└─────────────────────┬───────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ AWS Network Firewall Subnet │
│ Stateful Rules: Block SSH, Alert HTTP │
└─────────────────────┬───────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Private App Subnets │
│ Security Group: app-sg │
│ (Only allows traffic from alb-sg) │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ VPC Flow Logs → S3 → Athena │
│ Query & analyze rejected traffic │
└─────────────────────────────────────────────────┘
Shield Standard: Active on all resources (automatic)
```
## ⚙️ 使用的服务
| 服务 | 作用 | 成本 |
|---------|------|------|
| **Amazon VPC** | 核心网络隔离 | 免费套餐 |
| **Security Groups** | 有状态的实例级防火墙 | 免费 |
| **Network ACLs** | 无状态的子网级过滤 | 免费 |
| **AWS WAF** | L7 Web 应用防火墙 | 按使用付费 |
| **AWS Network Firewall** | 有状态数据包检测 | 按使用付费 |
| **Application Load Balancer** | 流量分发 + WAF 附加 | 按使用付费 |
| **VPC Flow Logs** | 网络流量日志记录 | 免费(需支付 S3 存储费用) |
| **Amazon Athena** | 对 Flow Log 数据进行 SQL 查询 | 按查询付费 |
| **Amazon S3** | Flow Log 存储 | 免费套餐 |
| **AWS Shield Standard** | L3/L4 DDoS 防护 | 免费(默认开启) |
## 📋 实施步骤
### 第 1 部分 — 安全 VPC 设置
- [x] 使用“VPC 等”向导创建了 CIDR 为 `10.0.0.0/16` 的 `security-vpc`
- [x] 跨 2 个可用区自动配置了 2 个公有子网 + 2 个私有子网
- [x] 为 Network Firewall 创建了专用的 `firewall-subnet-1a` (`10.0.48.0/28`)
- [x] 配置了 `alb-sg` — 允许来自互联网 (`0.0.0.0/0`) 的 HTTP/HTTPS 流量
- [x] 配置了 `app-sg` — 仅允许来自 `alb-sg`(非互联网)的流量
- [x] 编辑了私有子网 NACLs:
- 入站:允许来自 VPC CIDR 的 80、443 端口;拒绝其他所有流量
- 出站:允许临时端口 1024–65535
### 第 2 部分 — Application Load Balancer
- [x] 跨两个公有子网部署了面向互联网的 ALB
- [x] 附加了 `alb-sg` 安全组
- [x] 创建了 `test-tg` 目标组 (HTTP:80) 用于附加 WAF
### 第 3 部分 — AWS WAF
- [x] 在 `eu-north-1` 中创建了 Web ACL (`security-waf`)
- [x] 添加了托管规则组:
- `AWSManagedRulesCommonRuleSet` — OWASP Top 10
- `AWSManagedRulesSQLiRuleSet` — SQL 注入
- `AWSManagedRulesKnownBadInputsRuleSet`
- [x] 基于速率的规则:GET、POST 限制(Count 模式用于监控)
- [x] 将 Web ACL 关联到 ALB
### 第 4 部分 — Network Firewall
- [x] 在防火墙子网中创建了 `vpc-firewall`
- [x] 创建了包含有状态规则组的 `firewall-policy`
- [x] 有状态规则:阻止 SSH (端口 22),告警 HTTP 流量
- [x] 启用了严格的规则评估顺序
### 第 5 部分 — VPC Flow Logs + Athena
- [x] 启用 VPC Flow Logs → S3 存储桶 (`vpc-flow-logs-muhammad-2026`)
- [x] 创建了 Athena 数据库 `vpc_logs`
- [x] 创建了指向 S3 的外部表 `vpc_flow_logs`
- [x] 运行了威胁分析查询 — 返回了来自外部 IP 的 **20 个被拒绝的连接**
### 第 6 部分 — Shield Standard 验证
- [x] 确认 Shield Standard 已自动激活(无需配置)
- [x] 记录了何时需要使用 Shield Advanced(生产环境、SLA 关键型工作负载)
## 📸 截图
| # | 步骤 | 截图 |
|---|------|-----------|
| 01 | VPC 已创建 (`security-vpc`, `10.0.0.0/16`) | [查看](./screenshots/01_VPC_Created.png) |
| 02 | 防火墙子网已创建 (`10.0.48.0/28`) | [查看](./screenshots/02_Firewall_Subnet_Created.png) |
| 03 | 安全组 1 — `alb-sg` 已创建 | [查看](./screenshots/03_Security_Group_ALB_SG.png) |
| 04 | 安全组 2 — `app-sg` 已创建 | [查看](./screenshots/04_Security_Group_App_SG.png) |
| 05 | Application Load Balancer 已创建 | [查看](./screenshots/05_ALB_Created.png) |
| 06 | 目标组 `test-tg` 已创建 | [查看](./screenshots/06_Target_Group_Created.png) |
| 07 | WAF Web ACL 已创建并与 ALB 关联 | [查看](./screenshots/07_WAF_WebACL_Created.png) |
| 08 | WAF 托管规则已添加 | [查看](./screenshots/08_WAF_Rules_Added.png) |
| 09 | Network Firewall `vpc-firewall` 已创建 | [查看](./screenshots/09_Network_Firewall_Created.png) |
| 10 | 有状态规则组已激活 | [查看](./screenshots/10_Stateful_Rules_Created.png) |
| 11 | 用于 Flow Logs 的 S3 存储桶已创建 | [查看](./screenshots/11_S3_Bucket_FlowLogs.png) |
| 12 | VPC Flow Log 已激活(状态:Active) | [查看](./screenshots/12_VPC_FlowLog_Active.png) |
| 13 | Athena 表创建成功 | [查看](./screenshots/13_Athena_Table_Created.png) |
| 14 | Athena 查询 — 发现 20 个被拒绝的连接 | [查看](./screenshots/14_Athena_Query_Results.png) |
## 🔍 关键收获
### NACLs vs Security Groups vs WAF vs Network Firewall
| 功能 | NACLs | Security Groups | WAF | Network Firewall |
|---------|-------|----------------|-----|-----------------|
| **层** | L3/L4 | L3/L4 | L7 | L3–L7 |
| **状态** | 无状态 | 有状态 | 有状态 | 有状态 |
| **范围** | 子网级别 | 实例级别 | ALB/CloudFront | VPC 级别 |
| **规则** | 允许 + 拒绝 | 仅允许 | 复杂条件 | 兼容 Suricata |
| **用例** | 广泛的子网阻止 | 每个资源的控制 | Web 攻击防护 | 深度数据包检测 |
### 来自 Athena 查询的真实威胁数据
启用 VPC Flow Logs 后,我查询了被拒绝的流量,发现 **20 个外部 IP** 被阻止 —— 证明安全控制正在发挥作用。值得注意的被阻止端口:
- 端口 `23` (Telnet) — 遗留协议扫描
- 端口 `22` (SSH) — 暴力破解尝试
- 端口 `88` (Kerberos) — 凭据攻击媒介
### Shield Standard vs Shield Advanced
| | Standard | Advanced |
|--|---------|---------|
| **成本** | 免费 | ~$3,000/月 |
| **防护** | L3/L4 DDoS | L3/L4/L7 DDoS |
| **SRT 访问** | 否 | 24/7 DRT 团队 |
| **成本保护** | 否 | 是 |
| **需要时** | 所有账户 | 具有 SLA 的生产环境 |
## 🧹 清理
项目完成后删除资源以避免收费:
```
✅ Network Firewall (vpc-firewall)
✅ Application Load Balancer (test-alb)
✅ WAF Web ACL
✅ Target Group (test-tg)
```
保留的资源(无持续费用):
```
✅ VPC, Subnets, Security Groups, NACLs
✅ VPC Flow Logs (minimal S3 storage cost)
✅ Athena Database
```
## 📁 项目结构
```
aws-project2-secure-vpc/
├── README.md ← This file
├── architecture-diagram.md ← Detailed architecture notes
├── athena-queries.sql ← All SQL queries used
├── nacl-rules.md ← NACL configuration reference
└── screenshots/
├── 01_VPC_Created.png
├── 02_Firewall_Subnet_Created.png
├── 03_Security_Group_ALB_SG.png
├── 04_Security_Group_App_SG.png
├── 05_ALB_Created.png
├── 06_Target_Group_Created.png
├── 07_WAF_WebACL_Created.png
├── 08_WAF_Rules_Added.png
├── 09_Network_Firewall_Created.png
├── 10_Stateful_Rules_Created.png
├── 11_S3_Bucket_FlowLogs.png
├── 12_VPC_FlowLog_Active.png
├── 13_Athena_Table_Created.png
└── 14_Athena_Query_Results.png
```
## 🔗 相关项目
| 项目 | 主题 | 状态 |
|---------|-------|--------|
| [项目 1 — 使用 ABAC 的 IAM 最小权限](../project-1-iam/) | 身份与访问管理 | ✅ 完成 |
| **项目 2 — 使用 WAF 和 Network Firewall 的安全 VPC** | 网络安全 | ✅ **您在这里** |
| [项目 3 — KMS + Secrets Manager](../project-3-kms/) | 加密与机密管理 | 🔄 进行中 |
| [项目 4 — GuardDuty + Security Hub](../project-4-guardduty/) | 威胁检测 | ⏳ 即将推出 |
| [项目 5 — 自动化补救](../project-5-remediation/) | 事件响应 | ⏳ 即将推出 |
**Muhammad Ahmad** · AWS Cloud Security 系列 · 2026


标签:AMSI绕过, AWS, C语言, DNS 反向解析, DPI, Mr. Robot, VPC, WAF, 后端开发, 威胁检测, 插件系统, 网络安全, 运维, 配置错误, 隐私保护