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 技术栈。

Workflow Diagram of DShield environment

有关架构的详细信息,请参阅 [`docs/architecture.md`](docs/architecture.md)。 ## 关联查询和分析工作流示例 `analysis/` 文件夹包含示例验证工作流、SQLite 狩猎查询和多传感器关联示例,用于验证遥测摄取并执行日常威胁狩猎活动。 | 文件 | 用途 | |---|---| | `daily_ingest_validation.md` | 分步摄取验证指南 | | `daily_ingest_validation.sql` | 针对所有三个数据库的日常验证查询 | | `example_correlation_queries.md` | 多传感器威胁狩猎和关联查询示例 | 可直接运行的示例包括: - Top 源 IP - 所有传感器上的常见 IP - 成功的 Cowrie 登录 - 可疑的 Web 请求 - 基于 `ATTACH DATABASE` 的跨传感器 joins ## Cron 自动化概述 摄取脚本旨在通过 cronjob 自动运行,以支持连续的遥测收集和日常分析工作流。 调度策略特意与每个传感器的日志轮转行为保持一致,以确保完整的 24 小时摄取覆盖。 示例调度: - Web 蜜罐摄取:每天 UTC 时间 02:30 - Cowrie 摄取:每天 UTC 时间 06:30 - 防火墙摄取:每小时第 5 分钟 防火墙摄取的行为有所不同,因为防火墙遥测数据量大且全天持续追加,需要滚动摄取而不是日常文件处理。 ``` crontab -e ``` 然后从 `environment_setup/cron.sample` 复制条目并调整仓库/日志路径。 ## 未来增强功能 潜在的 future 改进包括: - 威胁情报富化 - Zeek 网络遥测集成 - Snort IDS 签名分析 - SIEM 集成 - 自动化 IOC 提取 - LLM 辅助的攻击分析工作流 - 时间线重建和可视化 ## 安全指南 - 请勿上传真实的攻击者数据。 - 在共享前对日志进行脱敏处理。 - 切勿上传凭据或 SSH 密钥。 请参阅 [`docs/security.md`](docs/security.md) 获取专门的检查清单。
标签:Bash, HTTP工具, IP 地址批量处理, SQLite, 安全运营, 应用安全, 扫描框架, 蜜罐, 证书利用