Subconsci0us/wazuh-enhanced

GitHub: Subconsci0us/wazuh-enhanced

在Wazuh SIEM基础上集成AI聊天助手、自然语言搜索、网络可视化与多框架合规视图,降低安全分析技术门槛的增强型安全运营平台。

Stars: 1 | Forks: 0

# 增强型 Wazuh — SIEM + PECA 合规 + AI 助手 + NLQ 搜索 ## 项目概述 本仓库包含重现一个毕业设计项目(FYP)所需的一切,该项目整合了: 1. **Wazuh SIEM** — 开源安全信息和事件管理平台(一体化部署:管理器、索引器、仪表板)。 2. **PECA 合规规则** — 自定义 Wazuh 检测规则,映射到巴基斯坦《电子犯罪法》(PECA 2016)的相关条款,涵盖未授权访问、数据篡改、关键基础设施保护和恶意代码。 3. **AI 聊天机器人助手** — 由大型语言模型驱动的自然语言安全分析师(Groq、Google Gemini、OpenAI GPT 或 AWS Bedrock Claude)。聊天机器人直接嵌入在 Wazuh Dashboard 中,可以回答诸如"分析我环境中最重要的告警"或"列出关键 CVE"等问题。 4. **NLQ 搜索** — Wazuh Dashboard 插件,通过 Sec-IR 中间表示管道将纯英文安全查询转换为 Wazuh DSL,然后直接针对 Wazuh 索引器执行。支持 Groq API(默认)、Gemini API 和本地 Ollama 后端。 ## 演示 🎥 观看完整项目演示:[Wazuh FYP 演示视频](https://www.youtube.com/watch?v=NhyhEsRKhE8) ## 架构 ``` Browser (Wazuh Dashboard) │ natural-language question ▼ Wazuh Indexer — ML Commons HTTP Connector │ POST /analyze (X-API-Key header) ▼ MCP-LLM Gateway (FastAPI + LangChain) :9912 │ ▲ LLM calls (Gemini / OpenAI / Bedrock) │ │ │ └── Tool calls via MCP/SSE ▼ OpenSearch MCP Server :9900 │ OpenSearch queries ▼ Wazuh Indexer :9200 (wazuh-alerts-*, wazuh-states-vulnerabilities-*) ``` ### 组件 | 组件 | 描述 | 端口 | |-----------|-------------|------| | **Wazuh Dashboard** | 带嵌入式 Dashboard Assistant 聊天插件的 Web UI。用户发送自然语言查询。 | 443 (HTTPS) | | **MCP-LLM Gateway** | FastAPI 服务。接收来自 ML Commons 的请求,运行 LangChain 代理,调用 LLM,并将 MCP 工具调用代理到 MCP Server。返回结构化答案。 | 9912 | | **OpenSearch MCP Server** | Python 服务,将 Wazuh 索引器功能公开为 MCP 工具。针对 Wazuh 索引执行 OpenSearch 查询并返回结构化结果。 | 9900 | ### 连接方式 1. 用户在 Dashboard Assistant 聊天中输入问题(右上角聊天图标)。 2. ML Commons(注册在索引器中的 HTTP 连接器)将请求转发到 MCP-LLM Gateway 的 `POST /analyze`。 3. Gateway 运行 LangChain 代理:将系统提示 + 用户问题发送给 LLM。 4. LLM 决定调用哪些 MCP 工具(例如搜索告警、列出 CVE)。 5. Gateway 通过 SSE 将这些工具调用代理到 MCP Server。 6. MCP Server 查询 Wazuh 索引器并返回结果。 7. LLM 分析结果并生成简洁答案。 8. Gateway 将答案返回给 ML Commons,后者将其显示在聊天 UI 中。 ## 仓库结构 ``` wazuh-fyp-repo/ ├── setup.sh ← automated setup script (run this) ├── rules/ │ └── peca_rules.xml ← PECA compliance detection rules ├── ai-assistant/ │ ├── mcp_llm_gateway.py ← FastAPI + LangChain gateway service │ ├── mcp-llm-gateway.env.example ← gateway config template (fill credentials) │ ├── mcp-llm-gateway.prompt ← SOC analyst system prompt for the LLM │ ├── mcp-server.env.example ← MCP server config template │ └── services/ │ ├── mcp-server.service ← systemd unit for MCP Server │ └── mcp-llm-gateway.service ← systemd unit for MCP-LLM Gateway ├── networkGraph/ │ ├── README.md ← plugin documentation │ ├── install.sh ← build + deploy script (run as root) │ ├── opensearch_dashboards.json ← OSD plugin manifest │ ├── package.json ← npm metadata │ ├── webpack.config.js ← webpack 5 build config │ ├── graphTest.jpg ← screenshot of the plugin in the browser │ ├── networkGraph-plugin-log.md ← full development log │ ├── public/ ← browser-side plugin code (D3 graph) │ ├── server/ ← OSD server-side plugin (Wazuh API proxy) │ └── target/public/ ← pre-built webpack bundle (ready to install) ├── nlqSearch/ │ ├── README.md ← NLQ Search plugin documentation │ ├── install.sh ← build + deploy script (run as root) │ ├── opensearch_dashboards.json ← OSD plugin manifest │ ├── package.json ← npm metadata │ ├── webpack.config.js ← webpack 5 build config │ ├── .env.example ← environment variable template (API keys) │ ├── public/ ← browser-side plugin code (vanilla JS UI) │ ├── server/ ← OSD server-side plugin (LLM proxy + transpiler) │ │ ├── lib/ ← Sec-IR validator + Wazuh DSL transpiler │ │ └── llm_backends/ ← Groq + Gemini + Ollama backend implementations │ └── target/public/ ← pre-built webpack bundle (ready to install) ├── complianceView/ │ ├── README.md ← plugin documentation + route reference │ ├── install.sh ← build + deploy script (run as root) │ ├── session-log.md ← development log (research findings + decisions) │ ├── opensearch_dashboards.json ← OSD plugin manifest │ ├── package.json ← npm metadata │ ├── webpack.config.js ← webpack 5 build config │ ├── public/ ← browser-side plugin code (vanilla JS dashboard) │ └── server/ ← OSD server-side plugin (OpenSearch aggregation proxy) ├── nlq-search-log.md ← NLQ Search development log ├── setup-log.md ← step-by-step log of the original installation └── README.md ← this file ``` ## 前置条件 - **操作系统:** Ubuntu 24.04 LTS 或 Linux Mint 22(全新安装;无预先安装的 Wazuh) - **用户:** 具有 `sudo` 权限的普通账户 - **硬件:** 最低 4 vCPU / 8 GB RAM(Wazuh 一体化 + Python 服务) - **网络:** 用于下载软件包的互联网访问 - **LLM 账户:** 以下之一: - **Groq API 密钥**(推荐 — 最快推理,免费层级在 [console.groq.com](https://console.groq.com/keys)) - Google Gemini API 密钥(免费层级在 [aistudio.google.com](https://aistudio.google.com)) - OpenAI API 密钥 - 具有 Bedrock 访问权限的 AWS 凭据 - **端口(组件之间必须开放):** | 端口 | 服务 | 方向 | |------|---------|-----------| | 443 | Wazuh Dashboard | 浏览器 → 主机 | | 9200 | Wazuh Indexer | 内部 | | 9900 | MCP Server | gateway → 主机 | | 9912 | MCP-LLM Gateway | indexer → 主机 | ## 如何运行 setup.sh ``` git clone cd wazuh-fyp-repo sudo bash setup.sh ``` ### 功能标志 `setup.sh` 支持通过标志进行选择性安装: ``` sudo bash setup.sh # install ALL features (default) sudo bash setup.sh --only networkGraph nlqSearch # install only these two sudo bash setup.sh --skip complianceView # install everything except this sudo bash setup.sh --list # print available features and exit sudo bash setup.sh --help # print usage info and exit ``` #### 可用功能 | 功能 | 描述 | |---------|-------------| | `pecaRules` | 将 PECA 合规检测规则部署到 Wazuh Manager | | `aiAssistant` | MCP Server + LLM Gateway + Dashboard AI 聊天插件 + ML Commons | | `networkGraph` | 构建并安装 Network Graph OSD 插件 | | `nlqSearch` | 构建并安装 NLQ Search OSD 插件 | | `complianceView` | 比较合规视图 — 统一 OSD 插件,比较 PCI DSS、HIPAA、GDPR、NIST、TSC、PECA | | `localization` | EN/UR 语言切换 + 深色模式工具栏;**UI 插件支持乌尔都语需要此项** | `--only` 和 `--skip` 互斥。未知的功能名称会导致立即报错。 如果某个功能失败,脚本会打印错误,将该功能标记为 **FAILED**,并继续处理剩余功能。末尾的汇总表显示哪些功能成功、失败或被跳过。如果任何功能失败,退出代码为非零。 wazuh-dashboard 服务在所有功能安装**完成后**重启一次(不是在每个功能之后)。 ### 脚本执行内容 1. **共享设置** — 下载并运行官方 Wazuh 4.14 一体化安装程序(如果已在运行则跳过),然后等待索引器变为健康状态。 2. 将 PECA 规则部署到 `/var/ossec/etc/rules/`。 3. 创建 `mcpserver` 系统用户、Python venv 并安装 `opensearch-mcp-server-py`。 4. 创建 `mcpgateway` 系统用户、Python venv 并安装固定的 gateway 依赖项。 5. 在每个配置文件处暂停,提示您填写凭据。 6. 安装并启用两个 systemd 服务。 7. 下载匹配的 OpenSearch Dashboards tarball,提取两个 AI 助手插件并安装。 8. 提示输入您的 gateway IP 并应用 ML Commons 集群设置。 9. 注册远程 ML 模型和对话代理,然后将其设为主代理。 10. 打印所有服务状态和连接详情的最终汇总。 ### 运行 setup.sh — AI 助手演练 `aiAssistant` 功能最复杂,因为它需要外部凭据并会暂停两次让您填写。其他功能完全自动化。 #### 运行前准备的内容 | 凭据 | 获取位置 | |------------|-----------------| | Wazuh Indexer admin 密码 | `tar -xOf wazuh-install-files.tar wazuh-passwords.txt` — `admin` 用户密码 | | LLM API 密钥 | **Groq**(推荐):[console.groq.com/keys]( OPENSEARCH_SSL_VERIFY=false 保存并按 Enter 继续。 4. **MCP-LLM Gateway 设置** — 创建第二个 Python venv,安装固定的 LangChain + FastAPI 依赖项。 **暂停 2** — 脚本打开 `/etc/mcp-llm-gateway/mcp-llm-gateway.env` 供您填写: # 选择一个提供商(推荐 Groq — 最快,有免费层级): LLM_PROVIDER=groq GROQ_API_KEY=gsk_xxxxxxxxxxxx GROQ_MODEL=llama-3.3-70b-versatile # 备选:Gemini # LLM_PROVIDER=gemini # GEMINI_API_KEY=<您的密钥> # 内部认证 — 您选择的任何密钥字符串: GATEWAY_KEY=<您的 gateway 密钥> # MCP Server SSE 端点(同一主机,默认端口): MCP_SSE_URL=http://127.0.0.1:9900/sse 保存并按 Enter 继续。 5. **Dashboard 插件** — 下载与您的 OSD 版本匹配的官方 OpenSearch Dashboards tarball,提取 `assistantDashboards` 和 `mlCommonsDashboards` 插件并安装。 6. **ML Commons 设置** — 提示输入 gateway IP(直接按 Enter 使用本机 IP),然后向 Wazuh 索引器应用三个集群设置。 7. **模型 + 代理注册** — 提示输入您上面设置的 `GATEWAY_API_KEY`,注册指向 gateway 的远程 ML 模型,部署它,注册对话代理,并将其设为主聊天代理。 8. **Dashboard 重启** — 重启 `wazuh-dashboard` 一次以激活所有插件。 #### API 密钥的处理方式 您的 LLM API 密钥仅存储在服务器上的 `/etc/mcp-llm-gateway/mcp-llm-gateway.env` 中,仅 `mcpgateway` 系统用户可读(权限 640,`root:mcpgateway`)。它永远不会接触到 dashboard 或浏览器。 运行时的调用链为: ``` Browser → Wazuh Dashboard → OpenSearch ML Commons → POST /analyze (X-API-Key: ) ← your internal secret, not your LLM key → MCP-LLM Gateway → LLM Provider API (uses LLM key, server-side only) ``` 您在 ML Commons 中注册的 `GATEWAY_API_KEY` 只是 OpenSearch 和 gateway 之间的内部密钥 — 不是您的 LLM 提供商密钥。LLM 密钥永远不会发送到浏览器或存储在 OpenSearch 中。 #### 验证 AI 助手是否正常工作 ``` # Check all three components are healthy curl -s http://127.0.0.1:9912/health | python3 -m json.tool # Expected: # { # "summary": "All components operational.", # "status": { "gateway": "ok", "llm": "ok", "mcp": "ok" }, # "details": { "mcp_tools_count": 11 }, # "provider": "groq", # "model": "llama-3.3-70b-versatile" # } ``` 然后在浏览器中打开 `https:///`,登录,点击右上角的**聊天图标**。 ## 安装后配置 ### 填写 LLM 凭据 在启动 gateway 之前,编辑 `/etc/mcp-llm-gateway/mcp-llm-gateway.env`: ``` sudo nano /etc/mcp-llm-gateway/mcp-llm-gateway.env ``` 设置 `LLM_PROVIDER` 和匹配的 API 密钥: **Groq(推荐 — 最快推理,慷慨的免费层级):** ``` LLM_PROVIDER="groq" GROQ_API_KEY="gsk_xxxxxxxxxxxxxxxxxxxx" GROQ_MODEL="llama-3.3-70b-versatile" ``` 在 [console.groq.com/keys](https://console.groq.com/keys) 获取您的密钥。其他可用模型:`llama-3.1-8b-instant`(更低延迟)、`mixtral-8x7b-32768`、`gemma2-9b-it`。 **Gemini(免费层级可用):** ``` LLM_PROVIDER="gemini" GEMINI_API_KEY="your-gemini-api-key" GEMINI_MODEL="gemini-2.5-flash" ``` **OpenAI:** ``` LLM_PROVIDER="openai" OPENAI_API_KEY="your-openai-api-key" OPENAI_MODEL="gpt-4o" ``` **AWS Bedrock(Claude):** ``` LLM_PROVIDER="claude_bedrock" AWS_REGION="us-east-1" BEDROCK_MODEL_ID="anthropic.claude-3-sonnet-20240229-v1:0" ``` 还要设置: - `GATEWAY_API_KEY` — 任何密钥字符串(必须与 ML 模型连接器中的 `credential.api_key` 匹配) - `MCP_SSE_URL` — MCP Server 的 SSE 端点,例如 `http://127.0.0.1:9900/sse` 然后重启 gateway: ``` sudo systemctl restart mcp-llm-gateway ``` ### 填写 Wazuh Indexer 凭据(MCP Server) 编辑 `/etc/mcp-server/mcp-server.env`: ``` sudo nano /etc/mcp-server/mcp-server.env ``` 设置 `OPENSEARCH_URL`、`OPENSEARCH_USERNAME` 和 `OPENSEARCH_PASSWORD`(来自您 `wazuh-install-files.tar` 的 Wazuh Indexer admin 凭据)。示例: ``` OPENSEARCH_URL="https://127.0.0.1:9200" OPENSEARCH_USERNAME="admin" OPENSEARCH_PASSWORD="your-indexer-password" OPENSEARCH_SSL_VERIFY="false" ``` 然后重启: ``` sudo systemctl restart mcp-server ``` ### 验证健康状态 ``` curl -s http://127.0.0.1:9912/health | python3 -m json.tool ``` 一切正常时的预期响应: ``` { "summary": "All components operational.", "status": { "gateway": "ok", "llm": "ok", "mcp": "ok" }, "details": { "mcp_tools_count": 11 }, "provider": "gemini", "model": "gemini-2.5-flash", "mcp_url": "http://127.0.0.1:9900/sse" } ``` ## Dashboard 访问和聊天机器人使用 1. 在浏览器中打开 Wazuh Dashboard:`https:///` 2. 使用用户名 `admin` 和 `wazuh-install-files.tar` 中的密码登录。 3. 点击 Dashboard 右上角的**聊天图标**。 4. 如果看不到聊天图标,请注销并重新登录。 ### 示例查询 - `分析我环境中最重要的告警` - `分析过去一小时内的暴力破解攻击告警` - `列出漏洞索引中的关键 CVE` - `哪些终端受到 CVE-2023-47038 影响?` - `分析规则 ID 为 5710 的告警` ## PECA 规则参考 | 规则 ID | 级别 | PECA 条款 | 描述 | |---------|-------|--------------|-------------| | 100100 | 10 | 第 3 条(未授权访问) | 身份验证失败(SSH/PAM)— 潜在未授权访问 | | 100101 | 7 | 第 4/11 条(电子伪造/数据) | FIM 完整性校验和更改 — 检测到数据篡改 | | 100102 | 12 | 第 6/8 条(关键基础设施) | `/opt/critical_app/data` 中的 FIM 更改 — 关键基础设施数据被篡改 | | 100103 | 12 | 第 20 条(恶意代码) | Rootcheck/rootkit 检测到 — 恶意代码 | 规则存储在 `rules/peca_rules.xml` 中,由 `setup.sh` 部署到 `/var/ossec/etc/rules/`。 ## Wazuh 版本参考 | 项目 | 值 | |------|-------| | Wazuh Manager | 4.14.3(已测试)| | OpenSearch Dashboards | 2.19.4(已测试)| | MCP Server 包 | opensearch-mcp-server-py 0.8.0 | | Gateway: fastapi | 0.128.0 | | Gateway: langchain | 0.3.27 | | Gateway: langchain-mcp-adapters | 0.1.9 | | Gateway: uvicorn | 0.40.0 | | LLM 提供商(已测试)| Groq (llama-3.3-70b-versatile)、Google Gemini (gemini-2.5-flash) | ## 日志 ``` # MCP Server sudo tail -f /var/log/mcp_server/mcp-server.log # MCP-LLM Gateway sudo tail -f /var/log/mcp_llm_gateway/mcp-llm-gateway.log # Wazuh Manager sudo tail -f /var/ossec/logs/ossec.log # Wazuh Dashboard sudo journalctl -u wazuh-dashboard -f ``` ## 切换 LLM 提供商 ### AI 助手(MCP-LLM Gateway) 编辑 `/etc/mcp-llm-gateway/mcp-llm-gateway.env`,设置 `LLM_PROVIDER` 和匹配的凭据,然后: ``` sudo systemctl restart mcp-llm-gateway curl -s http://127.0.0.1:9912/health ``` `LLM_PROVIDER` 支持的值:`groq` · `openai` · `gemini` · `claude_bedrock`。 ### NLQ 搜索插件 编辑 `/usr/share/wazuh-dashboard/plugins/nlqSearch/server/.env`: ``` # Groq (default): NLQ_BACKEND=groq GROQ_API_KEY=gsk_xxxx GROQ_MODEL=llama-3.3-70b-versatile # Gemini: # NLQ_BACKEND=gemini # GEMINI_API_KEY=AIzaxxxx # Local Ollama (no API key needed): # NLQ_BACKEND=ollama # OLLAMA_HOST=http://localhost:11434 # OLLAMA_MODEL=phi3.5 ``` 然后重启:`sudo systemctl restart wazuh-dashboard` ## 网络图插件 **Network Graph** 插件(`networkGraph/`)向 Wazuh Dashboard 添加了一个交互式 D3 图,显示代理连接和近期告警关系。 ### 安装 Network Graph ``` sudo WAZUH_API_PASSWORD= bash networkGraph/install.sh ``` 或通过主安装程序: ``` sudo bash setup.sh --only networkGraph ``` 然后设置 Wazuh API 密码(如果安装时未提供): ``` sudo nano /usr/share/wazuh-dashboard/plugins/networkGraph/server/.env # Set WAZUH_API_PASSWORD= sudo systemctl restart wazuh-dashboard ``` 导航至:`https:///app/networkGraph` 详见 `networkGraph/README.md`。 ## NLQ 搜索插件 **NLQ Search** 插件(`nlqSearch/`)向 Wazuh Dashboard 侧边栏添加了一个专用搜索页面,分析师可以在其中使用纯英文查询告警。 ### 管道 ``` "Show failed admin logins in the last 24 hours" │ ▼ time-range pre-processor (deterministic regex) │ [DETECTED TIME WINDOW: use "last_24h" exactly] ▼ LLM call (Gemini / Ollama) { "sec_ir_version": "1.0", "event_type": "authentication_failure", "pattern": "single_event", "entity": { "user_role": "admin" }, "severity": "high", "time_range": { "type": "relative", "value": "last_24h" } } │ schema validation + self-correction (up to 2 retries) ▼ Wazuh DSL transpiler (deterministic) { "query": { "bool": { "must": [ { "terms": { "rule.groups": ["authentication_failed"] } }, { "match": { "data.win.eventdata.targetUserName": "admin" } }, { "range": { "@timestamp": { "gte": "now-24h", "lte": "now" } } }, { "range": { "rule.level": { "gte": 10, "lte": 12 } } } ] } } } ▼ executed against wazuh-alerts-* (Wazuh Indexer :9200) ▼ results table in browser ``` ### 安装 NLQ 搜索 ``` cd nlqSearch export GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxx # recommended # or: export GEMINI_API_KEY=your-key-here sudo -E bash install.sh ``` 然后填写 Wazuh Indexer 密码: ``` sudo nano /usr/share/wazuh-dashboard/plugins/nlqSearch/server/.env # Set INDEXER_PASSWORD= sudo systemctl restart wazuh-dashboard ``` 导航至:`https:///app/nlqSearch` ### 示例查询 - `显示过去 24 小时内的失败管理员登录` - `查找来自同一 IP 登录失败超过 5 次的账户` - `检测何时任何主机上的 vssadmin 删除卷影副本` - `当主机在过去 6 小时内联系已知 C2 域时告警` - `查找 10 分钟内先失败登录后提权的记录` 详见 `nlqSearch/README.md`。 ## 合规视图插件 **Compliance View** 插件(`complianceView/`)向 Wazuh Dashboard 侧边栏添加了一个独立页面,显示统一的跨框架合规仪表板。 ### 显示内容 1. **框架摘要行** — 每个框架(PCI DSS、HIPAA、GDPR、NIST 800-53、TSC、PECA)一张卡片,显示告警总数和颜色编码状态指示器(绿色/黄色/红色)。 2. **比较需求表** — 所有框架的所有合规条款/章节整合到一个可排序、可筛选的表格中。列:框架 · 章节 · 描述 · 告警数量 · 严重程度细分 · 最近告警。 3. **跨框架重叠矩阵** — 热力图显示同时触发两个框架违规的告警数量。帮助分析师识别具有跨监管影响的事件。 ### 安装 Compliance View ``` cd complianceView sudo OS_PASSWORD= bash install.sh ``` 或通过主安装: ``` sudo bash setup.sh --only complianceView ``` 然后设置 Wazuh Indexer 密码(如果安装时未提供): ``` sudo nano /usr/share/wazuh-dashboard/plugins/complianceView/server/.env # Set OS_PASSWORD= sudo systemctl restart wazuh-dashboard ``` 导航至:`https:///app/complianceView` 插件在 Wazuh 侧边栏中显示为 **Compliance View**。 ### API 路由 | 路由 | 描述 | |-------|-------------| | `GET /api/compliance_view/summary?time_range=24h` | 每个框架的告警数量 | | `GET /api/compliance_view/details?framework=pci_dss&time_range=24h` | 章节级别细分 | | `GET /api/compliance_view/overlap?time_range=24h` | 跨框架共现矩阵 | 支持的 `time_range` 值:`24h`(默认)、`7d`、`30d`。 详见 `complianceView/README.md` 中的完整架构和数据源文档。 ## 使用 Docker 测试安装脚本 本节介绍如何在干净的 Wazuh 环境中使用 Docker 验证 `setup.sh` — 这与在 AWS 部署之前验证脚本的步骤相同。 ### 前置条件 - 已安装 Docker CE 和 Compose 插件(`sudo apt-get install -y docker-ce docker-compose-plugin` 或等效命令) - 至少 3 GB 可用 RAM(首先停止其他占用资源的进程) - `vm.max_map_count` 设置为至少 262144:`sudo sysctl -w vm.max_map_count=262144` ### 步骤 1 — 启动新的 Wazuh Docker 堆栈 ``` # Download the official Wazuh 4.14.3 single-node compose file mkdir -p ~/wazuh-docker-test && cd ~/wazuh-docker-test curl -fsSL -L https://github.com/wazuh/wazuh-docker/archive/refs/tags/v4.14.3.zip -o wazuh-docker.zip unzip -q wazuh-docker.zip cd wazuh-docker-4.14.3/single-node # (Optional) reduce OpenSearch heap for low-memory hosts sed -i 's/-Xms1g -Xmx1g/-Xms512m -Xmx512m/' docker-compose.yml # Generate TLS certificates, then start the stack sudo docker compose -f generate-indexer-certs.yml run --rm generator sudo docker compose up -d # Wait ~2.5 minutes, then verify: curl -sk https://localhost/ -o /dev/null -w "HTTP %{http_code}\n" # expect 302 ``` ### 步骤 2 — 将仓库复制到每个容器中 ``` DASH=$(sudo docker ps --filter "name=dashboard" --format "{{.Names}}") MANAGER=$(sudo docker ps --filter "name=manager" --format "{{.Names}}") sudo docker exec -u root "$DASH" bash -c 'rm -rf /tmp/wazuh-fyp-repo' sudo docker cp /path/to/wazuh-fyp-repo "$DASH":/tmp/wazuh-fyp-repo sudo docker cp /path/to/wazuh-fyp-repo "$MANAGER":/tmp/wazuh-fyp-repo ``` ### 步骤 3 — 运行安装脚本 ``` # Dashboard plugins (networkGraph, nlqSearch, complianceView, localization) sudo docker exec -u root "$DASH" bash \ /tmp/wazuh-fyp-repo/setup.sh \ --skip aiAssistant pecaRules \ --no-restart # PECA rules (manager container) sudo docker exec -u root "$MANAGER" bash \ /tmp/wazuh-fyp-repo/setup.sh \ --only pecaRules \ --no-restart # Restart the dashboard to activate plugins sudo docker restart "$DASH" ``` ### 步骤 4 — 验证 ``` # All 4 custom plugins should appear in the "Setting up [55] plugins" log line sudo docker logs "$DASH" 2>&1 | grep "plugins-system" | grep "Setting up" | tail -1 # PECA rule smoke test (expects rule id 100100, groups include 'peca') sudo docker exec -u root "$MANAGER" bash -c ' echo "**P1** Apr 21 14:00:00 server sshd[1234]: Failed password for invalid user testuser from 192.168.1.100 port 22 ssh2" | \ /var/ossec/bin/wazuh-logtest 2>&1 | grep "id:\|groups:" ' ``` 预期输出: ``` id: '100100' groups: ['peca', 'authentication_failed', 'peca_3'] ``` ### 步骤 5 — 清洁重测(可复现性检查) ``` cd ~/wazuh-docker-test/wazuh-docker-4.14.3/single-node sudo docker compose down -v # removes volumes too — complete clean slate sudo docker compose up -d # ... repeat Steps 2–4 ``` 完整测试日志和验证期间发现的所有问题都记录在 `docker-test-log.md` 中。 ## 参考资料 - [Wazuh 文档](https://documentation.wazuh.com/) - [OpenSearch MCP Server](https://github.com/opensearch-project/opensearch-mcp-server-py) - [LangChain MCP 适配器](https://github.com/langchain-ai/langchain-mcp-adapters) - [OpenSearch ML Commons](https://opensearch.org/docs/latest/ml-commons-plugin/) - [使用 OpenSearch 构建聊天机器人](https://docs.opensearch.org/latest/tutorials/gen-ai/chatbots/build-chatbot/) - [模型上下文协议](https://modelcontextprotocol.io/docs/getting-started/intro)
标签:AI助手, AMSI绕过, Apex, API网关, AV绕过, AWS Bedrock, Claude, CVE分析, CVE检测, Dashboard插件, DLL 劫持, DSL查询, FastAPI, FYP, GPT, LangChain, LLM, LLM评估, MCP, MITM代理, ML Commons, NLP, NLQ搜索, Ollama, OpenAI, PECA合规, Sec-IR, SSE, Unmanaged PE, Wazuh, Wazuh Dashboard, Wazuh Indexer, 中间表示, 交互式网络图, 内存规避, 合规检测, 响应拦截, 大语言模型, 威胁检测, 安全信息与事件管理, 安全告警分析, 安全运营, 开源安全工具, 扫描框架, 插件开发, 搜索引擎爬取, 数据篡改检测, 服务器发送事件, 未授权访问检测, 机器学习, 模型上下文协议, 毕业设计, 漏洞管理, 电子犯罪法案, 自定义脚本, 自然语言查询, 轻量级, 逆向工具, 逆向工程平台