KYoussefAI/snort_rag_rule_generator
GitHub: KYoussefAI/snort_rag_rule_generator
一个基于 RAG 的 NLP 项目,用于从自然语言描述生成 Snort IDS 入侵检测规则。
Stars: 0 | Forks: 0
# Snort RAG 规则生成器 - NLP 迷你项目 + Devoir 3
一个防御性的 NLP/RAG 项目,用于从自然语言描述的网络攻击中生成有效的 Snort IDS 规则。
## 项目内容
- 存储在 `data/processed/final_snort_dataset.csv` 中的**官方 Person 1 检索数据集**。
- 存储在 `data/knowledge_base/` 中的真实 Snort 规则的**可信来源知识库**。
- 一个**将可信规则扩展为实验行**的旧版脚本:`python -m snort_rag.generate_dataset --multiplier 20`。
- 七种 Devoir 3 架构:
- 无 RAG 的基线
- 经典 RAG
- 带重排序的 RAG
- 混合 RAG(TF-IDF 稠密回退 + BM25 融合)
- 多跳 RAG
- 图 RAG
- 智能体 RAG
- `results/comparison_metrics.csv` 中的指标和比较表。
- `results/embedding_tsne.png` 中的 t-SNE 嵌入可视化。
- 带 PDF 上传功能的 Gradio 仪表板,用于扩展知识库。
- `docs/` 中的技术报告。
## 安装说明
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install -e .
```
## 构建真实规则知识库
```
python scripts/fetch_real_sources.py
```
输出:
- `data/knowledge_base/trusted_rule_kb.csv`
- `data/knowledge_base/trusted_rule_kb.jsonl`
- `data/knowledge_base/fetch_summary.json`
## 官方 Person 1 数据集
应用程序、Devoir 3 运行器和检索层使用的官方数据集是:
- `data/processed/final_snort_dataset.csv`
- `data/processed/final_snort_dataset.jsonl`
- `data/processed/dataset_summary.json`
- `data/processed/person1_rules.rules`
此数据集是私人的、受控的、可手动审核的,是 Person 1 和整个项目默认检索语料库的主要数据集。
导出的 Person 1 规则已通过强化的验证器在本地预先验证。这不能替代 Snort 运行时验证。
提交状态:
- 官方 Person 1 数据集为 `data/processed/final_snort_dataset.csv`。
- 最终数据集是私人的、受控的、在 10 种攻击类型间平衡,并且包含 200 行。
- 旧版可信规则扩展生成器仅作为实验代码保留在存储库中。
- 旧的 50 万行生成文件未包含在最终提交的项目中。
## 旧版数据集生成器
旧版生成器需要可信的真实规则知识库,并为每个真实规则创建
多行自然语言描述,仅用于旧版实验。
```
python -m snort_rag.generate_dataset --multiplier 10
# 更大数据集
python -m snort_rag.generate_dataset --multiplier 30
```
如果手动运行实验,旧版输出为:
- `data/experiments/legacy_generated/snort_generated_dataset.csv`
- `data/experiments/legacy_generated/snort_generated_dataset.json`
- `data/experiments/legacy_generated/snort_generated_dataset.jsonl`
- `data/experiments/legacy_generated/snort_generated_dataset_summary.json`
这些文件仅是旧版实验工件。旧版生成器不再写入 `data/processed/`,且不得用作官方 Person 1 数据集工作流。
## 运行 Devoir 3 比较
```
python -m snort_rag.run_devoir3
```
输出:
- `results/comparison_metrics.csv`
- `results/detailed_devoir3_results.csv`
- `results/embedding_tsne.png`
## 启动仪表板
```
python -m snort_rag.app_gradio
```
该仪表板允许您选择 RAG 架构、生成 Snort 规则、检查检索到的文档,并添加 PDF 作为新的知识来源。
## 项目结构
```
src/snort_rag/ package source code
data/knowledge_base/ persisted trusted-source real Snort rules
data/raw/ source manifest
data/processed/ official Person 1 dataset
data/experiments/legacy_generated/ legacy trusted-rule expansion outputs only
notebooks/ Devoir 3 notebook
results/ metrics and t-SNE plot
docs/ report files
scripts/fetch_real_sources.py trusted-source rule ingestion
```
## 示例
```
from snort_rag.architectures import SnortRAGArchitectures
rag = SnortRAGArchitectures("data/processed/final_snort_dataset.csv")
result = rag.agentic_rag("Detect SQL injection with UNION SELECT in HTTP URI")
print(result["generated_rule"])
print(result["explanation"])
```
## 免责声明
这是一个用于教育目的的防御性 IDS 规则生成项目。每个生成的规则在投入生产使用前,仍需在真实的 Snort 安装中使用 Snort 的配置测试模式进行验证。
标签:Apex, DNS枚举, Gradio, Mutation, NLP应用, PDF处理, RAG架构, Ruby, 入侵检测系统, 可视化, 安全数据湖, 技术报告, 机器学习, 架构比较, 检索增强生成, 深度学习, 知识库, 网络安全, 网络安全工具, 网络调试, 自动化, 规则生成, 评估指标, 逆向工具, 隐私保护