Aztec8007/dshield-sqlite-honeypot-lab
GitHub: Aztec8007/dshield-sqlite-honeypot-lab
一个基于 SQLite 和 Bash 的轻量级多传感器蜜罐日志关联分析框架,帮助防御者在无需完整 SIEM 的情况下进行威胁狩猎。
Stars: 0 | Forks: 0
# 从噪声到智能
## 使用 SQLite 关联防火墙、Cowrie 和 Web 蜜罐日志
***注意:** 这仅用于蜜罐环境设置。您首先需要在您选择的专用设备和宿主操作系统(例如 Raspberry Pi 3 或更高版本、n100 迷你 PC 或虚拟机均可)上下载并安装 DShield 蜜罐传感器。您可以在这里找到有关如何安装和配置 DShield 蜜罐的说明:https://github.com/DShield-ISC/dshield*
当我第一次部署 DShield 蜜罐传感器时,生成的大量日志让我感到不知所措。单独来看,这些日志就像是孤立的噪声。然而,当将多个传感器的日志关联在一起时,它们开始揭示攻击者的行为、侦察模式、漏洞利用尝试以及漏洞利用后的活动。
本项目记录了一个轻量级、对初学者友好的多传感器蜜罐分析平台,使用 **Bash**、**SQLite**、**jq** 和 **cron** 自动化来规范化、摄取和关联来自以下来源的遥测数据:
- DShield 防火墙日志
- Cowrie SSH/Telnet 蜜罐日志
- Web 蜜罐 HTTP 日志
## 为什么选择 SQLite?
我没有部署完整的 SIEM 技术栈,而是选择了 SQLite,因为它提供了:
- 轻量级部署
- 低运营开销
- 快速的本地查询
- 灵活的 schema 设计
- ATTACH DATABASE 关联功能
每个传感器存储在单独的数据库中,以改善:
- 规范化
- 索引效率
- 可扩展性
- 查询性能
## 仓库意图
本仓库的意图是提供一个轻量级且可复现的框架,使用简单的开源工具来收集、规范化、存储和关联多传感器蜜罐遥测数据。
该项目没有部署资源密集型的 SIEM 平台,而是演示了如何利用 Bash、SQLite、jq 和 cron 自动化来构建高效的本地优先威胁狩猎和攻击分析工作流。
本仓库专为以下人群设计:
- 网络安全学生
- 威胁猎人
- 蓝队从业者
- DShield 蜜罐运营者
- 任何对攻击者遥测数据分析感兴趣的人
主要关注点是通过跨传感器关联和 SQL 驱动的分析,识别跨防火墙、SSH/Telnet 和基于 Web 的攻击向量的模式。
## 仓库架构
仓库被组织成独立的功能区,反映了博客中描述的摄取和分析工作流。每个组件专注于遥测 pipeline 的特定阶段,从数据库初始化和摄取到日常分析和关联。
## 仓库架构
```
.
├── analysis/
│ ├── daily_ingest_validation.md
│ ├── daily_ingest_validation.sql
│ └── example_correlation_queries.md
│
├── docs/
│ ├── Environment_Workflow_Diagram.png
│ ├── architecture.md
│ └── security.md
│
├── environment_setup/
│ ├── database_init/
│ │ ├── init_cowrie_db.sh
│ │ ├── init_firewall_db.sh
│ │ └── init_webhoneypot_db.sh
│ │
│ ├── ingestion/
│ │ ├── ingest_cowrie_daily.sh
│ │ ├── ingest_dshield_current.sh
│ │ └── ingest_webhoneypot_daily.sh
│ │
│ └── cron.sample
│
├── schema/
│ ├── cowrie.sql
│ ├── firewall.sql
│ └── webhoneypot.sql
│
├── .gitignore
├── LICENSE
└── README.md
```
# 安装步骤
## 环境假设
本仓库假设您已经拥有一个正常运行的 DShield 蜜罐部署,并正在生成来自以下来源的遥测数据:
- DShield 防火墙日志
- Cowrie SSH/Telnet 日志
- Web 蜜罐日志
本仓库中的脚本是在 AWS EC2 环境中运行的 Ubuntu Linux 上设计和测试的,但它们也应该适用于:
- Raspberry Pi 3 或更高版本
- 迷你 PC 部署
- 虚拟机
- 其他基于 Linux 的环境
您需要根据自身环境调整数据库路径、日志路径和 cron 调度。
**步骤:**
1. 在运行脚本之前,请确保已安装以下软件包:
- `bash`
- `sqlite3`
- `jq`
- `cron`(或 `cronie`,取决于发行版)
sudo apt update
sudo apt install -y bash sqlite3 jq cron
2. Clone 该仓库。
3. 初始化 SQLite 数据库:
在摄取日志之前,请使用位于以下位置的数据库初始化脚本初始化每个 SQLite 数据库:
environment_setup/database_init/
使脚本可执行:
chmod +x environment_setup/database_init/*.sh
运行每个初始化脚本一次:
./environment_setup/database_init/init_firewall_db.sh
./environment_setup/database_init/init_cowrie_db.sh
./environment_setup/database_init/init_webhoneypot_db.sh
4. 运行摄取脚本(根据您的环境更新日志路径):
摄取脚本位于:
environment_setup/ingestion/
使摄取脚本可执行:
chmod +x environment_setup/ingestion/*.sh
在设置 cron 自动化之前,手动运行一次摄取脚本:
./environment_setup/ingestion/ingest_dshield_current.sh
./environment_setup/ingestion/ingest_cowrie_daily.sh
./environment_setup/ingestion/ingest_webhoneypot_daily.sh
这将帮助您确认数据库路径正确、日志路径正确、依赖项已安装,并且数据已成功插入 SQLite 数据库中。
`analysis/` 文件夹包含分步验证和 SQL 查询示例,包括:
- `daily_ingest_validation.md`
- `daily_ingest_validation.sql`
- `example_correlation_queries.md`
5. Cron 自动化
要设置您的 cronjob,请从命令行打开您的 crontab(crontab -e),并将推荐的 cron 任务复制并粘贴到以下位置提供的示例 cron 配置文件中:
environment_setup/cron.sample
## 数据库结构
每个传感器都维护自己专用的 SQLite 数据库和 schema。这种分离是故意的,旨在改善规范化、索引效率、查询性能和长期可扩展性。
由于每个传感器以不同的格式和结构生成遥测数据,独立的数据库允许每个数据集专门针对其日志类型进行优化,同时仍通过 SQLite ATTACH DATABASE 功能支持跨数据库关联。
每个传感器在 `schema/` 中都有自己的 SQLite schema 文件:
- `schema/firewall.sql` → 带有 `firewall_events` 的 `firewall.db`
- `schema/cowrie.sql` → 带有 `cowrie_events` 的 `cowrie.db`
- `schema/webhoneypot.sql` → 带有 `web_requests` 的 `webhoneypot.db`
init 文件已经包含了 schema,并在运行脚本时创建和初始化数据库。但是,这些 schema sql 文件作为独立文件提供,用于手动创建数据库。您可以按如下方式从 sqlite 命令行手动创建数据库:
```
sqlite3 firewall.db < schema/firewall.sql
sqlite3 cowrie.db < schema/cowrie.sql
sqlite3 webhoneypot.db < schema/webhoneypot.sql
```
所有 schema 都包含针对高价值字段(例如 `src_ip` 和 `event_ts`)的起始索引,以提高查询性能。
## 摄取工作流
摄取 pipeline 旨在持续将原始蜜罐遥测数据规范化为结构化且可搜索的 SQLite 数据库。
工作流:
1. 原始日志由每个传感器独立生成。
2. Bash 脚本提取相关的遥测字段。
3. jq 用于解析和规范化基于 JSON 的日志。
4. 解析后的事件被转换为 SQL insert 语句。
5. SQLite 数据库存储带有支持索引的规范化记录。
6. 日常 SQL 分析和 ATTACH DATABASE 关联工作流用于识别攻击者行为和模式。
这种轻量级的提取、转换、加载(ETL)工作流提供可重复且自动化的日常遥测摄取,而无需完整的 SIEM 技术栈。
标签:Bash, HTTP工具, IP 地址批量处理, SQLite, 安全运营, 应用安全, 扫描框架, 蜜罐, 证书利用