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` 参数,将其降低到了可控的水平,尽管我仍然不确定是否为它 设置了最佳值。 ## 告警示例 ![AI 安全告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/e8/e8fd3f318b709a3a2a21b58299a8403ae08b49062d35842f31e802213dd8d8bb.png) *在 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流量分析, 入侵检测系统, 安全数据湖, 异常检测, 无后门, 无监督学习, 逆向工具