oussama-allouch/snort-rag-rule-generator
GitHub: oussama-allouch/snort-rag-rule-generator
一个结合检索增强生成技术的 Snort 规则生成与对比实验项目,通过多种 RAG 架构将自然语言攻击描述自动转化为 IDS 检测规则。
Stars: 1 | Forks: 0
# Snort RAG 规则生成器 - NLP 迷你项目 + Devoir 3
这是一个防御性的 NLP/RAG 项目,旨在根据自然语言的网络攻击描述生成有效的 Snort IDS 规则。
## 本项目包含的内容
- 一份**官方 Person 1 检索数据集**,存储在 `data/processed/final_snort_dataset.csv` 中。
- 一份存储在 `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/` 中的技术报告。
## 重要的学术限制
该作业禁止直接使用黑盒 LLM,并禁止在 Devoir 3 中使用 OpenAI/Mistral/Ollama API。因此,本项目使用基于检索上下文 + Snort 模板的**本地透明生成器**。代码仍然实现了完整的 RAG pipeline:查询编码、检索、提示词构建、生成、解释和评估。
## 安装
```
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 数据集为 `data/processed/final_snort_dataset.csv`。
- 最终数据集是私人的、受控的,在 10 种攻击类型之间保持平衡,包含 200 行。
- 旧版可信规则扩展生成器作为实验代码保留在存储库中。
- 旧的 50 万行生成文件未包含在最终提交的项目中。
## 旧版数据集生成器
旧版生成器需要可信的真实规则知识库,并仅为较早的实验为每条真实规则创建多个自然语言数据行。
```
python -m snort_rag.generate_dataset --multiplier 10
# 更大的 dataset
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 安装中进行验证。
标签:DLL 劫持, IDS规则生成, NLP, RAG, 大语言模型, 检索增强生成, 逆向工具