chv-sneha/cloud-network-traffic-analyzer
GitHub: chv-sneha/cloud-network-traffic-analyzer
基于 AWS VPC Flow Logs 和 Lambda 的云网络流量监控系统,实时分析网络流量并自动告警可疑活动。
Stars: 0 | Forks: 0
# 🌐 云网络流量分析器
一个基于云的网络监控系统,用于在 AWS 虚拟环境中捕获、分析和可视化网络流量,以检测异常模式和潜在的安全威胁。
[](https://aws.amazon.com)
[](https://python.org)
[](https://aws.amazon.com/lambda/)
[](LICENSE)
## 🏗️ 架构图
```
┌─────────────────────────────────────────────────────────────────────────┐
│ AWS CLOUD │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ VPC │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Public │ │ Private │ │ │
│ │ │ Subnet │ │ Subnet │ │ │
│ │ │ │ │ │ │ │
│ │ │ EC2/ECS │◄───────►│ Database │ │ │
│ │ │ Instances │ │ Services │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ │ │
│ │ │ │ │ │
│ │ └───────────┬───────────┘ │ │
│ │ │ │ │
│ │ ┌──────▼──────┐ │ │
│ │ │ VPC Flow │ │ │
│ │ │ Logs │ │ │
│ │ └──────┬──────┘ │ │
│ └─────────────────────┼────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ CloudWatch │ │
│ │ Log Group │ │
│ │ │ │
│ │ • Flow Records │ │
│ │ • Timestamps │ │
│ │ • IP Addresses │ │
│ └────────┬────────┘ │
│ │ │
│ │ (Trigger) │
│ ▼ │
│ ┌─────────────────┐ │
│ │ AWS Lambda │ │
│ │ (analyzer.py) │ │
│ │ │ │
│ │ • Parse Logs │ │
│ │ • Detect Anomaly│ │
│ │ • Analyze Traffic│ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Amazon SNS │ │ CloudWatch │ │
│ │ Topic │ │ Metrics │ │
│ │ │ │ │ │
│ │ • Alerts │ │ • Statistics│ │
│ │ • Warnings │ │ • Logs │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
└────────────┼─────────────────┼──────────────────────────────────────┘
│ │
▼ ▼
┌────────────┐ ┌────────────┐
│ Email │ │ Grafana │
│ Alert │ │ Dashboard │
│ │ │ │
│ 📧 Admin │ │ 📊 Metrics │
└────────────┘ └────────────┘
```
### 数据流
1. **流量捕获**:VPC Flow Logs 捕获所有网络流量(已接受/已拒绝的连接)
2. **日志聚合**:日志实时流式传输到 CloudWatch Log Group
3. **事件触发**:新的日志条目自动触发 Lambda 函数
4. **分析**:Lambda 解析日志并应用异常检测算法
5. **告警**:可疑活动触发 SNS 通知
6. **可视化**:Grafana 查询 CloudWatch 以获取仪表盘指标
## ⚙️ 技术栈
| 组件 | 技术 |
|---|---|
| 云服务提供商 | AWS |
| 网络监控 | VPC Flow Logs |
| 日志存储 | CloudWatch Logs |
| 异常检测 | AWS Lambda (Python) |
| 告警 | Amazon SNS |
| 可视化 | Grafana |
| IaC | AWS Console + CLI |
## 🧠 功能特性
- 通过 VPC Flow Logs 进行**实时流量监控**
- **自动化异常检测** —— 高流量、拒绝连接、可疑 IP
- 通过 SNS 邮件通知进行**即时告警**
- 展示流量趋势、已接受与已拒绝流量对比、热门 IP 的**可视化仪表盘**
## 📁 项目结构
```
cloud-network-traffic-analyzer/
├── lambda/
│ └── analyzer.py # Anomaly detection Lambda function
├── grafana/
│ └── dashboard.json # Grafana dashboard configuration
├── screenshots/ # AWS console proof of implementation
│ ├── vpc-flow-logs.png
│ ├── lambda-running.png
│ ├── sns-alert.png
│ └── grafana-dashboard.png
├── .gitignore
└── README.md # This file
```
## 🚀 部署指南
### 前置条件
- 具有适当权限的 AWS 账户
- 配置好凭证的 AWS CLI
- Python 3.9+
- Grafana(本地或云端实例)
- 对 AWS 网络有基本了解
### 架构组件
该系统由五个主要组件组成:
1. **启用了 Flow Logs 的 VPC** - 捕获所有网络流量
2. **CloudWatch Log Group** - 存储并流式传输流日志
3. **Lambda 函数** - 分析流量中的异常
4. **SNS Topic** - 发送告警通知
5. **Grafana 仪表盘** - 可视化流量指标
### 部署概览
部署过程包括:
- 设置启用了 Flow Logs 的 VPC 基础设施
- 配置 CloudWatch 以进行日志聚合
- 部署具有异常检测逻辑的 Lambda 函数
- 创建用于告警的 SNS Topic
- 将 Grafana 连接到 CloudWatch 进行可视化
有关详细的部署说明,请参阅 [architecture.md](architecture.md) 文件。
### 配置
**Lambda 环境变量:**
- `SNS_TOPIC_ARN` - 用于告警的 SNS Topic 的 ARN
- `ANOMALY_THRESHOLD_PACKETS` - 数据包阈值(默认:1000)
- `ANOMALY_THRESHOLD_REJECTS` - 拒绝阈值(默认:50)
**VPC Flow Logs 设置:**
- 流量类型:ALL(已接受 + 已拒绝)
- 目标:CloudWatch Logs
- 日志格式:默认 AWS 格式
- 聚合间隔:1 分钟
**所需 IAM 权限:**
- VPC Flow Logs:CloudWatch Logs 写入权限
- Lambda:CloudWatch Logs 读/写,SNS 发布
- Grafana:CloudWatch 只读访问权限
## 📸 截图
| 组件 | 截图 |
|---|---|
| VPC Flow Logs |  |
| Lambda Running |  |
| SNS Alert |  |
| Grafana Dashboard |  |
## 🔍 异常检测逻辑
Lambda 函数检测以下内容:
| 异常类型 | 阈值 | 动作 |
|---|---|---|
| 高流量 | >1000 数据包/分钟 | SNS 告警 |
| 拒绝连接 | >50 次拒绝/分钟 | SNS 告警 |
| 可疑 IP | 已知的恶意 IP | SNS 告警 + 阻断 |
| 端口扫描 | >100 个唯一端口 | SNS 告警 |
| 异常协议 | 非标准协议 | 记录警告 |
## 💡 演示的关键概念
- ☁️ **云网络**:具有公有/私有子网的 VPC 架构
- ⚡ **无服务器计算**:事件驱动的 Lambda 函数
- 🔍 **日志分析**:实时解析和模式检测
- 🚨 **告警流水线**:自动化 SNS 通知
- 📊 **可观测性**:用于流量可视化的 Grafana 仪表盘
- 🔐 **安全监控**:威胁检测和异常识别
## 🧪 测试与验证
### 验证部署
1. **检查 VPC Flow Logs**
- 验证日志是否正在流式传输到 CloudWatch
- 确认日志格式和数据准确性
2. **测试 Lambda 函数**
- 在 CloudWatch 中监控 Lambda 调用
- 检查执行日志是否有错误
- 验证异常检测逻辑
3. **验证 SNS 告警**
- 确认邮件订阅
- 测试告警投递
4. **检查 Grafana 仪表盘**
- 验证数据源连接
- 检查指标可视化
- 确认实时更新
### 生成测试流量
您可以生成测试流量模式来验证系统:
- **正常流量**:常规 HTTP/HTTPS 请求
- **大流量**:并发连接突发
- **端口扫描**:顺序端口访问尝试
- **拒绝连接**:对被阻止端口的请求
监控 Grafana 仪表盘和邮件告警以确认检测。
## 📊 示例指标
```
Traffic Statistics (Last 24h):
├── Total Packets: 1,245,678
├── Accepted: 1,198,432 (96.2%)
├── Rejected: 47,246 (3.8%)
├── Unique IPs: 3,421
├── Anomalies Detected: 12
└── Alerts Sent: 5
```
## 🛠️ 故障排除
| 问题 | 解决方案 |
|---|---|
| Lambda 未触发 | 检查 CloudWatch Logs 订阅过滤器 |
| 未收到 SNS 邮件 | 在 SNS 控制台中确认邮件订阅 |
| Flow Logs 丢失 | 验证 IAM 角色是否具有 CloudWatch Logs 权限 |
| Grafana 无数据 | 检查 AWS 凭证和 CloudWatch 数据源 |
## 📈 未来增强
- [ ] 基于机器学习的异常检测
- [ ] 与 AWS GuardDuty 集成
- [ ] 通过 Security Groups 自动阻断 IP
- [ ] 多区域流量分析
- [ ] 利用 S3 日志归档进行成本优化
- [ ] Slack/Teams 告警集成
## 🤝 贡献
欢迎贡献!请打开一个 Issue 或提交 Pull Request。
## 📄 许可证
MIT 许可证 - 可随意将此项目用于学习和作品集展示目的。
## ⚠️ 资源清理
为避免持续的 AWS 费用,请在测试后删除所有资源:
### 清单
- [ ] 删除 Lambda 函数
- [ ] 移除 SNS Topic 和订阅
- [ ] 删除 CloudWatch Log Group
- [ ] 禁用并删除 VPC Flow Logs
- [ ] 移除 VPC 及相关资源(子网、路由表等)
- [ ] 删除 IAM 角色和策略
**重要**:按创建顺序的相反顺序删除资源,以避免依赖关系错误。
**云网络流量分析器** - 一个专业的基于 AWS 的安全监控解决方案
标签:AMSI绕过, Apex, AWS, DPI, EC2, ECS, IaC, Lambda, Python, SecOps, Serverless, Terraform, VPC, 云安全架构, 云计算, 代码示例, 威胁检测, 安全运营, 异常检测, 扫描框架, 数据分析, 无后门, 机器学习, 流量捕获, 漏洞利用检测, 监控可视化, 网络安全, 网络拓扑, 网络流量分析, 虚拟网络, 规则引擎, 逆向工具, 隐私保护