FirdausYudha/DeusWatch

GitHub: FirdausYudha/DeusWatch

DeusWatch 是一个自托管的多合一开源安全平台,通过一条 Docker Compose 命令启动 SIEM、IDS/IPS、SOAR、CTI 富化和 LLM 分析等安全监控与响应功能。

Stars: 1 | Forks: 0

# DEUSWATCH **多合一、开源、自托管安全平台。** SIEM · IDS/IPS · 轻量级 SOAR · CTI enrichment · 基于 LLM 的分析 —— 集成于一个轻量级、模块化的系统中。 [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-Phase%201–5%20complete%20·%20detection%20Linux--tested-green.svg)]() [![Made with Go](https://img.shields.io/badge/Go-backend-00ADD8.svg)]() [![Web: React + Vite](https://img.shields.io/badge/Web-React%20%2B%20Vite-61DAFB.svg)]() [功能](#features) · [集成](#integrations) · [快速开始](#quick-start) · [文档](#documentation) · [支持 ♥](#support)
## 什么是 DeusWatch? DeusWatch 将安全检测和响应整合在一个软件包中,你只需运行一条 `docker compose up` 命令即可启动。它默认对初学者非常友好,同时也为 SOC 专业人员提供了完全可定制的选项。 核心原则:**不要重复造轮子。** 我们建立在成熟的标准之上(Sigma 规则、 CrowdSec bouncer 协议、PostgreSQL、NATS),并专注于集成层和 任何单一供应商都无法打包在一起的用户体验。 ## 功能 **收集 → 检测 → 富化 → 决策 → 响应**,每一步都配有人性化的 UI。 - **采集** — 轻量级的 Go agent 通过 mTLS 传输日志(Linux/Windows);网关将它们标准化为 NATS JetStream 上的通用事件 schema。 - **检测** — [Sigma](https://github.com/SigmaHQ/sigma) 规则,支持单事件和聚合/关联(例如 SSH 暴力破解 = 来自单个 IP 的 N 次失败)。规则由 **数据库支持,并完全通过 UI 管理**(类似 Wazuh 风格):浏览、编辑、切换、添加或删除 —— 内置规则在首次启动时导入,自定义规则在保存时验证。告警会自动打上 **MITRE ATT&CK** 技术/战术标签。 - **富化** — 使用 CTI(AbuseIPDB、AlienVault OTX)和 GeoIP 对源 IP 进行评分;在检测到高可信度威胁时,严重级别会自动升级。可选的 **LLM 分析**(与提供商无关:Claude、Ollama 或任何兼容 OpenAI 的 endpoint)支持 AI 报告摘要(按需 + 定时),并可选择对每次告警进行分诊。 - **响应 (SOAR)** — 一个**渐进式封禁**引擎:累犯者将沿着可配置的时长阶梯逐步加重处罚(例如 `10m → 30m → 1h → 24h → 永久`),所有这些都可在 UI 中编辑。支持**自动封禁**(无需人工审批)、**观察窗口**、**IP 白名单**(受信任的 IP 永远不会被封禁)、针对单个违规者的**去重**(每个 IP 仅保留一个打开的操作),以及带有批量消除功能的**单 IP 响应视图**。通过 nftables(agent 端)、MikroTik 或 CrowdSec LAPI 执行。 - **可视化** — 可定制的拖放式仪表盘(统计数据、严重程度、热门 IP/规则、MITRE、攻击源地图、填补空白的日程表),配有精确的**日历 + 时间范围选择器**,以及自动化报告。 - **运维** — 具有细粒度权限的 RBAC、TOTP 2FA、仅追加的审计日志、工单系统(Tier-2 升级)、通知(Telegram / 电子邮件 / webhook,带有可通过 UI 配置的严重程度阈值 + 定时报告推送)、向外部分发工具进行 JSON **webhook 导出**、**配置文件导入/导出**(将一台服务器的设置克隆到另一台),以及全面的 **i18n**。 ### 路线图 | 阶段 | 范围 | 状态 | |---|---|---| | **阶段 1** | Linux agent、mTLS 采集、网关 + 标准化、NATS、Postgres+TimescaleDB、Sigma 检测 + 自动 MITRE 标签、API + RBAC + 审计日志、基础 Web UI | ✅ | | **阶段 2** | Windows agent、CTI 富化(AbuseIPDB/OTX/GeoIP)、响应引擎(nftables/Mikrotik/CrowdSec LAPI)、TOTP 2FA、通知(Telegram/电子邮件/webhook) | ✅ | | **阶段 3** | LLM worker(Claude/启发式)、自动化报告、社区黑名单 | ✅ | | **阶段 4** | 管理/UX 优化、全面 i18n、UI 管理的检测规则、可配置的渐进式封禁(自动封禁 + IP 白名单 + 去重)、单 IP 响应视图、仪表盘时间范围选择器 + 可搜索的事件/告警 | ✅ | | **阶段 5** | FIM + 文件哈希信誉(CIRCL/VirusTotal)、基于已知恶意哈希的端点文件隔离/删除、撤销时 agent 自卸载、开源/自托管 LLM(Ollama)、AI 报告摘要(按需 + 定时)、**JSON webhook 导出,配置文件导入/导出,UI 告警阈值 + 定时向 Telegram/电子邮件推送报告** | ✅ | | 阶段 6 | Windows 检测规则、规则/集成市场、Helm chart | 计划中 | ### 各平台检测覆盖率 检测流水线(日志解析 → Sigma 规则 → 富化 → 渐进式封禁)在 **Linux 上已实现端到端验证**。其他平台可以收集和发送日志,但其事件 解析 + 检测规则仍在开发中。 | 平台 | 日志收集 | 检测(解析 + 规则) | 端到端验证 | |---|---|---|---| | **Linux** (sshd / journald) | ✅ | ✅ SSH 暴力破解、无效用户、root 登录、sudo、FIM + 恶意哈希 | ✅ 已测试 | | **Windows** (Event Log: Security/System) | ✅ 发送事件 | 🚧 4625/RDP-SMB 暴力破解解析 + 规则开发中 | ❌ 尚未测试 | ## 架构 ``` Agent (Go) ──mTLS──> Ingest Gateway ──> NATS JetStream ──> Worker (detect/enrich/respond/llm) │ PostgreSQL 16 + TimescaleDB │ API Server (Go) ──> Web UI (React + Vite) ``` 完整的设计细节:请参阅 [DeusWatch.md](DeusWatch.md)。 ## 集成 连接器可以从 UI 中的**集成**菜单进行添加和配置(密钥在 静态存储时加密且只写)。目前可用的有: | 类型 | 集成 | 作用 | |---|---|---| | 🛡️ 防火墙 | **nftables (agent 端)** | 端点自动拦截:agent 将活动的黑名单添加到本地 nftables 集合中,并丢弃匹配的流量。 | | 🛡️ 防火墙 | **MikroTik RouterOS** | 通过 REST API 将被拦截的 IP 推送到 RouterOS 地址列表中。 | | 🛡️ Bouncer | **CrowdSec LAPI** | 通过 `cscli` 创建/移除封禁决策,交由 CrowdSec bouncer 执行。 | | 🔎 CTI | **AbuseIPDB** | 使用滥用置信度评分为源 IP 进行富化。 | | 🔎 CTI | **AlienVault OTX** | 使用威胁情报脉冲数为源 IP 进行富化。 | | 🔔 通知 | **Telegram · 电子邮件 (SMTP) · Webhook** | 实时告警(严重程度阈值在 UI 中设置)+ **定时报告推送**。频道凭证通过环境变量提供 —— 请参阅 [docs/notifications.md](docs/notifications.md)。 | | 📤 导出 | **Webhook (JSON)** | 一键将事件/告警或报告 POST 到外部分发工具(SIEM、n8n、Zapier、自定义工具)。 | | 🤖 LLM | **Claude · Ollama · 兼容 OpenAI** | AI 报告摘要(按需 + 定时);可选的每次告警分诊。与提供商无关;可通过 Ollama 免费且离线运行。 | 威胁情报还包括 **GeoIP**(攻击源地图)和可选的 **社区黑名单**。 ## 快速开始 一条命令即可启动整个技术栈(数据库、NATS、证书生成、API、网关、worker、Web UI): ``` git clone https://github.com/FirdausYudha/DeusWatch.git cd DeusWatch docker compose -f deploy/docker-compose.yml up -d --build ``` - **Web UI:** http://localhost:5173 · **API:** http://localhost:8080 - **默认登录账号:** `admin` / `thewatcher` (通过 `ADMIN_PASSWORD` 更改,或在首次登录后在 **Users**/**Settings** 中更改) - 自助注册**默认处于禁用状态**(由管理员在 UI 中创建用户);设置 `REGISTRATION_ENABLED=1` 可允许从登录页面注册具有 viewer 角色的账号。 ## 部署 agent 在 UI 中转到 **Agents → + Add agent**,选择操作系统(Linux / Windows),将 **Manager host** 设置为 agent 可以访问到的地址(对于跨主机部署,填写局域网 IP,例如 `192.168.1.10:8080`),然后复制 生成的一行命令。它会下载 agent,使用一次性 token 注册,安装 自动启动服务,并建立连接 —— 例如在 Linux 上: ``` curl -fsSL http://:8080/api/agent/install.sh | sudo MANAGER= TOKEN= NAME= sh ``` 管理端必须允许入站 **8080**(注册/安装)和 **8443**(网关,mTLS)端口: - Linux 管理端: `sudo ufw allow 8080,8443/tcp` (如果启用了 `ufw`) - Windows 管理端: `New-NetFirewallRule -DisplayName "DeusWatch" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080,8443` agent 通过部署的**私有 CA** 对管理端进行身份验证,而不是通过主机名/IP,因此 跨主机部署无需进行针对特定 IP 的证书调整。要额外将 管理端的 IP 固定到服务器证书的 SAN 中(可选),请在首次启动前在 `deploy/.env` 中设置 `MANAGER_IP` (例如 `MANAGER_IP=192.168.1.10`);如果之后再进行更改,则需要重新生成 证书(删除 `deploy/certs/*` 或使用 `-force` 运行 certgen)并重新注册 agent(新的 CA 会使旧证书失效)。 ### 故障排查离线 agent 在线状态由发送到网关(`:8443`)的心跳决定。如果 agent 显示为 **离线**,而 `systemctl status deuswatch-agent` 看起来运行正常,请检查其日志: ``` sudo journalctl -u deuswatch-agent -n 30 --no-pager ``` - `connection refused` / 超时 → 管理端的防火墙阻止了 8443 端口,或者 `MANAGER`/host 错误。 - `x509: certificate signed by unknown authority` → agent 注册时使用的是不同的 CA;在重新生成证书后重新注册。 ## 通知(Telegram 和电子邮件) DeusWatch 可以向 **Telegram** 和**电子邮件**推送**告警**(高于你在 UI 中选择的严重程度阈值)和**定时报告**。频道凭证存在于环境变量中(它们是密钥);严重程度 阈值和推送计划在 UI 中设置。Telegram 快速设置: 1. **创建机器人** — 向 [@BotFather](https://t.me/BotFather) 发送消息,发送 `/newbot`,复制 **token**。 2. **获取你的 chat id** — 向机器人发送私信,然后打开 `https://api.telegram.org/bot/getUpdates` 并读取 `"chat":{"id":...}` (或向 [@userinfobot](https://t.me/userinfobot) 发送消息)。群组 id 为负数。 3. **在 `deploy/.env` 中设置:** TELEGRAM_BOT_TOKEN=123456789:AAE... TELEGRAM_CHAT_ID=123456789 4. **重启 worker:** `docker compose -f deploy/docker-compose.yml --env-file deploy/.env up -d worker` 5. **开启它:** **Settings → Alert notifications** (严重程度阈值)和 **Report → Scheduled delivery** (推送频率)。 包含电子邮件/SMTP(Gmail 应用密码)和 webhook 导出的完整指南:**[docs/notifications.md](docs/notifications.md)**。 ## 文档 | 文档 | 用途 | |---|---| | [DeusWatch.md](DeusWatch.md) | 完整的架构与设计参考 | | [docs/notifications.md](docs/notifications.md) | 连接 Telegram / 电子邮件 + 定时报告推送 | | [SECURITY.md](SECURITY.md) | 威胁模型与负责任的披露政策 | | [LICENSE](LICENSE) | AGPL-3.0 | 了解 DeusWatch 最快的方法是运行快速开始,登录,并对受监控的主机触发 暴力破解 —— 你将实时看到它从告警 → 富化 → MITRE 标签 → 渐进式封禁建议的整个流程。 ## 技术栈 Go · PostgreSQL + TimescaleDB · NATS JetStream · Sigma · React + Vite + Tailwind · Docker · 与提供商无关的 LLM(用于 Claude 的官方 Anthropic SDK;用于 Ollama 和其他兼容 OpenAI 的 API)。 ## 安全 一个不安全的防御系统本身就是一种讽刺。必须使用 mTLS,第一天就引入了 RBAC, 加密的密钥,仅追加的审计日志。有关 负责任的披露政策,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 [AGPL-3.0](LICENSE) —— 永久免费自托管,反对供应商锁定。 ## 支持 DeusWatch 是在开放环境中免费开发和维护的。如果它对你有帮助,一笔小小的 捐赠能让我们维持运转,我们将不胜感激 —— 谢谢你! 🙏 [![Saweria](https://img.shields.io/badge/Saweria-donate-FF5E5B.svg)](https://saweria.co/DeusLoVult1) — 🇮🇩 印度尼西亚 (QRIS / GoPay / OVO / DANA) [![Ko-fi](https://img.shields.io/badge/Ko--fi-support-FF5E5B.svg)](https://ko-fi.com/firdausyudha) — 🌏 国际 (PayPal / 信用卡) 你也可以使用本仓库顶部的 **Sponsor ♥** 按钮,或者应用程序内的 **♥ Support DeusWatch** 链接。
标签:C2, EVTX分析, IDS/IPS, SOAR, x64dbg, 威胁情报, 安全运营平台, 开发者工具, 日志审计, 测试用例, 请求拦截