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 Security](https://img.shields.io/badge/AWS-Cloud%20Security-FF9900?style=for-the-badge&logo=amazonaws&logoColor=white) ![Status](https://img.shields.io/badge/Status-Completed-22c55e?style=for-the-badge) ![Difficulty](https://img.shields.io/badge/Difficulty-Intermediate-f59e0b?style=for-the-badge) ![Duration](https://img.shields.io/badge/Duration-4--6%20Hours-38bdf8?style=for-the-badge) **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 ![AWS](https://img.shields.io/badge/Amazon%20Web%20Services-232F3E?style=flat&logo=amazonaws&logoColor=FF9900) ![Security](https://img.shields.io/badge/Cloud%20Security-Practitioner-blue?style=flat)
标签:AMSI绕过, AWS, C语言, DNS 反向解析, DPI, Mr. Robot, VPC, WAF, 后端开发, 威胁检测, 插件系统, 网络安全, 运维, 配置错误, 隐私保护