Hamronov/Wazuh-Journal

GitHub: Hamronov/Wazuh-Journal

一款基于 Wazuh 的 SOC 告警调查工作台,提供 AI 辅助告警分诊与检测规则草稿生成能力。

Stars: 0 | Forks: 0

# Wazuh Journal [![License](https://img.shields.io/badge/license-non--commercial-orange.svg)](LICENSE) [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22.13.0-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/) Wazuh Journal 将 Wazuh 告警流转化为专注的调查工作流。告警被分组为五分钟的批次,单个事件可以发送到兼容 OpenAI 的 API 进行误报分诊,而生成的 XML 规则在操作员明确添加之前将作为草稿保留。 界面默认为英语,并包含一个持久的 `EN / RU` 语言切换。它不会捏造演示事件:当 Wazuh 不可用时,UI 会显示集成错误,而不是伪造数据。 ## 目录 - [核心亮点](#highlights) - [架构](#architecture) - [环境要求](#requirements) - [快速开始](#quick-start) - [配置说明](#configuration) - [生产环境部署](#production-deployment) - [可用脚本](#available-scripts) - [安全性](#security) - [当前限制](#current-limitations) - [贡献指南](#contributing) - [License](#license) ## 核心亮点 - 通过服务端 SSH 桥接获取实时的 Wazuh 告警推送。 - 五分钟告警批次分组,包含严重程度、主机、时间和规则元数据。 - 支持按严重程度、时间范围、已标记告警和已跳过告警进行过滤。 - 通过任何兼容 OpenAI 的 `/chat/completions` endpoint 进行单条告警 AI 分析。 - 提供误报概率、解释、摘要和 XML 规则草案审查。 - 带有未读状态的分析历史记录,可快速返回原始告警。 - 本地 Wazuh 规则编辑器,具有 XML 范围保护和保存时备份功能。 - 可选的 LDAP/Active Directory 兼容身份验证流程。 - 本地设置面板,用于配置 Wazuh、堡垒机、LDAP 和 AI 集成参数。 - 英语优先的 UI,并支持俄语本地化。 - 兼容 Cloudflare Sites 的构建配置。 ## 架构 本项目是一个基于 Next.js/React 的应用程序,包含服务端集成路由: ``` Browser │ ├── Feed, filters, language switch, analysis history │ ▼ Next.js API routes ├── Wazuh SSH bridge ──► Wazuh Indexer ├── Authentication ─────► Wazuh / LDAP / AD-compatible identity source ├── AI analysis ────────► OpenAI-compatible API └── Rule operations ────► Protected Wazuh Manager workflow ``` 密钥仅在服务端读取和使用。它们绝不会被包含在客户端 bundle、`public/` 或浏览器存储中。设备本地浏览器存储仅用于保存 UI 偏好设置、标记、已跳过的告警以及未读分析状态。 ## 环境要求 - Node.js `>=22.13.0` - npm - 可访问的 Wazuh 部署,用于获取实时数据 - 具备 Wazuh 命令所需最低权限的 SSH 凭据 - 如果需要 AI 分析,需准备兼容 OpenAI 的服务商 ## 快速开始 ``` git clone https://github.com/Hamronov/Wazuh-Journal.git cd Wazuh-Journal npm ci cp .env.example .env.local npm run dev ``` 打开开发服务器输出的本地 URL。使用配置好的 Wazuh/域账户登录,然后打开 **Settings** 验证集成情况。 AI 分析是可选的。如果未配置 `OPENAI_*` 变量,告警推送仍然可用,AI 面板会提示该集成尚未配置。 ## 配置说明 `.env.example` 是一个安全的模板。将其复制到 `.env.local` 用于本地开发,并将每个值替换为符合当前环境的具体设置。切勿提交 `.env_LOCAL` 或真实的凭据信息。 ### Wazuh 和 SSH | 变量 | 用途 | | --- | --- | | `WAZUH_SSH_HOST` | Wazuh SSH 主机或隧道 endpoint。 | | `WAZUH_SSH_PORT` | SSH 端口,通常为 `22`。 | | `WAZUH_SSH_USER` | 用于 Wazuh 桥接的 SSH 用户。 | | `WAZUH_SSH_PRIVATE_KEY` | 私钥内容;仅限在服务端保存。 | | `WAZUH_SSH_PRIVATE_KEY_PATH` | 服务端私钥文件的路径。 | | `WAZUH_SSH_PASSWORD` | 私钥的替代密码方案。 | | `WAZUH_SSH_JUMP_HOST` | 可选的堡垒机/跳板机。 | | `WAZUH_SSH_JUMP_PORT` | 可选的堡垒机端口。 | | `WAZUH_SSH_JUMP_USER` | 可选的堡垒机用户。 | ### 身份验证和目录服务 | 变量 | 用途 | | --- | --- | | `AUTH_SESSION_SECRET` | 会话签名密钥。在生产环境中必填;请使用至少 32 个字符的随机值。 | | `AD_TENANT_ID` | 可选的 Active Directory 租户标识符。 | | `AD_CLIENT_ID` | 可选的目录应用程序标识符。 | | `AD_CLIENT_SECRET` | 可选的目录应用程序密钥。 | | `LDAP_SERVER_URIS` | 以逗号分隔的 LDAP/LDAPS 服务器 URI。 | | `LDAP_BASE_DN` | 目录基础 DN。 | | `LDAP_BIND_DN` | 服务绑定 DN。 | | `LDAP_BIND_PASSWORD` | 服务绑定密码。 | | `LDAP_USERS_DNS` | 以分号分隔的用户搜索 DN。 | | `LDAP_GROUPS_DN` | 组搜索 DN。 | | `LDAP_CA_CERT` | 可选的 CA 证书,用于 LDAPS 验证。 | ### AI 服务商 | 变量 | 用途 | | --- | --- | | `OPENAI_BASE_URL` | 服务商基础 URL,例如 `https://api.openai.com/v1`。 | | `OPENAI_API_KEY` | 服务商 API key;切勿暴露给浏览器。 | | `OPENAI_MODEL` | 用于单条告警分析的模型名称。 | 分析 endpoint 仅将选定的告警(或明确选定的批次)发送给已配置的服务商。它不会发送整个数据流。 ## 生产环境部署 使用标准的 Node.js 工作流进行构建和运行: ``` npm ci npm run build npm start ``` 对于 Cloudflare Sites,请将 `.openai/hosting.json` 保留在代码库中,并在托管环境中配置运行时密钥,而不是通过 Git。在允许用户登录之前,请设置 `AUTH_SESSION_SECRET` 以及部署所需的所有 Wazuh/目录/AI 参数。 在发布构建之前,请运行: ``` npm run lint npm test ``` ## 可用脚本 | 命令 | 描述 | | --- | --- | | `npm run dev` | 启动本地开发服务器。 | | `npm run build` | 创建生产环境构建。 | | `npm start` | 运行生产环境服务器。 | | `npm run lint` | 运行 ESLint 和生产数据安全检查。 | | `npm test` | 构建项目并运行渲染/源码契约测试。 | | `npm run check:production-data` | 确保应用程序代码中不包含禁止的测试数据标记。 | | `npm run db:generate` | 在需要进行数据库 schema 工作时生成 Drizzle 元数据。 | ## 安全性 在配置集成之前,请阅读 [SECURITY.md](SECURITY.md)。 - 切勿提交 `.env.local`、私钥、密码、API key 或证书。 - 将 Wazuh、LDAP、AD 和 AI 凭据保留在服务端。 - 在生产环境中使用高强度随机的 `AUTH_SESSION_SECRET`。 - 将生成的 XML 视为草稿:在将其应用到 Wazuh 之前,验证其语法、范围和影响。 - 审计生产环境的规则写入操作,并限制规则管理后端使用的账户权限。 - 在将意外暴露的凭据从文件或历史记录中删除之前,请先对其进行轮换。 ## 当前限制 本代码库是一个可部署的基础设施,而不是一个完全托管的 SOC 平台。根据目标环境的不同,以下内容仍需要进行运维设置: - Wazuh SSH 桥接连接和最小权限命令配置; - 生产环境的 LDAP/Active Directory 授权和访问策略; - 持久化的分析历史记录存储和数据库迁移; - 通过受保护的后端进行的经审计的生产规则写入; - 特定于服务商的 AI 隐私、数据留存和模型策略。 当 Wazuh 不可用时,系统不会替换为测试告警。 ## 贡献指南 1. 从 `main` 分支创建一个新分支。 2. 切勿将密钥和特定于组织的基础设施详细信息包含在提交中。 3. 保持英语优先的界面,并在添加面向用户的文案时同步更新俄语翻译。 4. 在发起 pull request 之前运行 `npm run lint` 和 `npm test`。 5. 描述集成变更对安全性和部署的影响。 ## License Wazuh Journal 在自定义的 [Wazuh Journal Non-Commercial License](LICENSE) 下提供源码,可用于个人、教育、研究和其他非商业用途。 商业用途,包括 SaaS、付费产品、托管服务和商业运营,需获得版权持有人的另行书面许可。
标签:MITM代理, Petitpotam, 内存分配, 自动化攻击