doolamdattatreya2025/AI-Cloud-IDS
GitHub: doolamdattatreya2025/AI-Cloud-IDS
基于 Isolation Forest 无监督学习模型对 AWS VPC Flow Logs 进行异常流量检测的云安全入侵检测系统。
Stars: 0 | Forks: 0
# AI-Cloud-IDS
一个基于异常的 AWS 流量入侵检测系统,使用
Isolation Forest 模型,而不是特征码匹配。
## 为什么开发这个项目
我读到过的大多数 IDS 设置都依赖于基于特征码的检测——将
流量与一系列已知的攻击模式进行匹配。这对于已知的
威胁很有效,但它会漏掉任何新的威胁,而且云流量模式变化
极快,静态规则很快就会过时。
我想尝试另一种方法:学习正常流量的样子,
然后标记出任何不符合标准的情况——而无需
提前标记攻击数据。
## 核心思想
Isolation Forest 是一种无监督模型,它可以隔离异常,而
不是基于已知标签进行分类。其原理是:正常流量是
一致的并且会聚集在一起,而异常情况很罕见,也更容易
分离出来。它非常适合这个用例,因为我没有可用于训练的标记
“攻击”与“正常”流量数据集。
## 工作原理
1. **数据收集** — AWS VPC Flow Logs 捕获网络流量
2. **存储** — 日志以压缩的 `.gz` 文件形式存储在 S3 bucket 中
3. **处理** — 一个 Python 脚本通过 `boto3` 拉取最新的日志文件
并在内存中解压(使用 `gzip` + `io.BytesIO`),而不是将其写入
磁盘
4. **特征** — 提取 packets、bytes、源端口和目标端口
5. **检测** — Isolation Forest 在当前数据集上进行训练,并
为每条记录的异常可能性进行评分
6. **告警** — 超过阈值的异常会触发 SNS 通知,其中
包含相关的流量详情
## 技术栈
- AWS:S3、EC2、SNS、VPC Flow Logs
- Python — pandas、scikit-learn、boto3
- Isolation Forest(无监督)
## 遇到的问题
**压缩日志。** AWS 将流日志存储为 `.gz` 文件,我不想
仅仅为了读取它们而将其写入磁盘。最终我使用了
`io.BytesIO` 在内存中解压,结果发现这比我想象的要简单。
**特征选择。** Packets、bytes 和 ports 最终成为了最有用的
信号——我早期尝试添加更多字段,但这只会
增加噪音,而不会改善检测效果。
**误报。** 前几次运行将大量正常
流量标记为异常流量。通过调整模型中的
`contamination` 参数,将其降低到了可控的水平,尽管我仍然不确定是否为它
设置了最佳值。
## 告警示例

*在 VPC 流日志中出现异常流量后触发。*
## 项目结构
```
AI-Cloud-IDS/
├── ids_ai_logic.py # Main detection script
├── README.md
├── requirements.txt
├── .gitignore
└── images/
└── ai-security-alert.png
```
## 快速开始
克隆并安装:
```
git clone https://github.com/doolamdattatreya2025/AI-Cloud-IDS.git
cd AI-Cloud-IDS
pip install -r requirements.txt
```
在运行之前,请为以下项目设置您自己的值:
- S3 bucket 名称
- SNS topic ARN
- AWS region
(最好从环境变量中获取这些值,而不是硬编码。)
然后运行:
```
python ids_ai_logic.py
```
## 目前检测到的内容
在测试中,它成功捕获了模拟的入侵尝试——主要是未经授权的 SSH
访问尝试——并在几秒钟内生成了告警,而无需为该
特定模式预定义任何规则。目前仍处于早期阶段,所以我
认为它尚未达到生产可用的状态。
## 下一步计划添加的功能
- 保存训练好的模型,而不是每次运行都重新训练
- 使用 cron job 或 Lambda 实现自动化,而不是手动运行
- 添加某种仪表板(即使是最基础的),以便真正观察随时间变化的流量趋势,
而不仅仅是查看告警
- 最终将其接入正式的 SIEM 设置中
## 作者
由 [Dattatreya](https://github.com/doolamdattatreya2025) 开发 —— 网络安全专业学生,对云安全和威胁检测充满热情。
标签:AI安全, AWS, Chat Copilot, DPI, IP 地址批量处理, Python, VPC流量分析, 入侵检测系统, 安全数据湖, 异常检测, 无后门, 无监督学习, 逆向工具