diagonalciso/wazuh-weekly-report

GitHub: diagonalciso/wazuh-weekly-report

自动化生成 Wazuh 周度 SOC 安全审查报告并以邮件定时发送 PDF 的运维工具。

Stars: 0 | Forks: 0

# Wazuh 周报 自动化的每周 **Wazuh 安全审查**:从 manager 收集数据,渲染一页执行级 **PDF**(如果没有 PDF 引擎则回退为 HTML),并通过电子邮件发送,计划在每周日 18:00 执行。 两种部署方式 —— 任选其一: | | **方式 A — 远程 (SSH)** | **方式 B — 在 manager 上(本地)** | |--|--|--| | 运行位置 | 独立的运维机器 | Wazuh manager 本身 | | 入口点 | `run.sh` | `run_local.sh` | | 数据收集 | `ssh … 'sudo python3 -' < collect_remote.py` | `sudo python3 collect_remote.py`(无 SSH) | | manager 上的机密信息 | 无(浏览器/SMTP 保留在 SIEM 之外) | 需要在 manager 上配置 `smtp.env` | | 缘由 | 保持 SIEM 纯净;OpenSearch `:9200` 仅限 localhost | 完全自包含;无需 SSH 密钥,无跨主机依赖 | 这两种方式共享相同的收集器、HTML 构建器、PDF 渲染器和邮件发送器。所有部署细节都保存在被 gitignore 的 `.env` 文件中 —— 请参阅 **[INSTALL.md](INSTALL.md)**。 ## 收集内容(过去 7 天) - 告警数量 + 级别分布 + 每日时间线(OpenSearch `127.0.0.1:9200`) - 高危(≥10)和 level-9 规则明细 - 外部 / 认证失败的源 IP - **agent 健康** (`agent_control -l` — 活跃与断开连接) - **manager 错误** (`ossec.log` ERROR/CRITICAL 尾部 + 集成失败计数) - **cluster 健康** (状态 / 节点 / 分片 / 未分配) 然后 `build_report.py` 会渲染带有自动标记 **P1/P2/HIGH/LOW** 发现的带样式 HTML,`render_pdf.sh` 会将其转换为 PDF(按 chromium → wkhtmltopdf → weasyprint → libreoffice 顺序,使用第一个可用的引擎;如果都没有则发送 HTML),`send_mail.py` 负责发送邮件。 Indexer/管理员密码是从 manager 上的 `wazuh-install-files.tar` 读取的,**仅在进程内使用** —— 绝不打印,绝不提交。 ## 运行 **方式 A(远程):** ``` cp .env.example .env && $EDITOR .env # host, ssh user/key, SMTP source ./run.sh # recipient from config ./run.sh soc@example.com # override recipient ``` **方式 B(在 manager 上,以 root 身份):** ``` cp .env.local.example .env && $EDITOR .env # WAZUH_INSTALL_FILES, SMTP_ENV cp smtp.env.example smtp.env && $EDITOR smtp.env && chmod 600 smtp.env sudo ./run_local.sh ``` ## 计划任务 systemd timer,每周**日 18:00**(`Persistent=true`)。模板位于 [`systemd/`](systemd/):方式 A 使用 `*.service`/`*.timer`,方式 B 使用 `*-local.service`/`*-local.timer`。步骤详见 [INSTALL.md](INSTALL.md)。 ## 文件 | 文件 | 作用 | |------|------| | `run.sh` | 方式 A 编排器(远程/SSH) | | `run_local.sh` | 方式 B 编排器(在 manager 上,无 SSH) | | `collect_remote.py` | 在 manager 上运行(以 root 身份),输出周报 JSON | | `build_report.py` | JSON → 带有自动标记发现的带样式 HTML | | `render_pdf.sh` | HTML → PDF,通过第一个可用的引擎(HTML 回退) | | `send_mail.py` | 使用 `.env` 中的 SMTP 凭据通过电子邮件发送 PDF/HTML | | `systemd/` | service + timer 模板(包含两种方式) | | `.env.example` | 方式 A 配置模板 | | `.env.local.example` | 方式 B 配置模板 | | `smtp.env.example` | 方式 B SMTP 凭据模板 |
标签:PB级数据处理, Wazuh, 安全告警, 安全运维, 应用安全, 自动化报告, 逆向工具