lalalesha4/wzin

GitHub: lalalesha4/wzin

一款运行于 Windows 的独立 Web 面板,通过 SSH 并行将 Wazuh Agent 批量安装到 Linux 服务器。

Stars: 0 | Forks: 0

# Wazuh Agent SSH 安装程序 **独立的 Windows 面板,用于通过 SSH 安全地将 Wazuh Agent 安装到 Linux** [![Go](https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go&logoColor=white)](https://go.dev/) [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/lalalesha4/wzin/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/lalalesha4/wzin)](https://github.com/lalalesha4/wzin/releases/latest) [![License](https://img.shields.io/badge/license-MIT-0b3478.svg)](LICENSE) [项目网站](https://lalalesha4.github.io/wzin/) · [下载 EXE](https://github.com/lalalesha4/wzin/releases/latest) · [GitLab](https://gitlab.com/lalalesha4/wzin) ![Wazuh Agent 安装完成](https://static.pigsec.cn/wp-content/uploads/repos/cas/83/83fdb0e5706f0b745f29e7e8f3d21af6a0543d7eeba191a8f3be68e298289d10.png)
`wzin.exe` 是一个独立的本地 Web 面板,用于通过 SSH 并行地将 Wazuh Agent 安装到 Linux 服务器。应用程序仅监听 `127.0.0.1`,自动选择空闲端口并打开浏览器。 在 Windows 服务器上,不需要 Go、Python、Node.js、PowerShell 模块、Electron 或单独的 Web 服务器。只需 `wzin.exe` 和其旁边的 Wazuh 安装包即可工作。 ## 快速启动 放入同一个文件夹: ``` wzin.exe wazuh-agent_4.14.3-1_amd64.deb wazuh-agent-4.14.3-1.x86_64.rpm ``` 包的确切名称不是固定的。支持 `wazuh-agent*.deb` 和 `wazuh-agent*.rpm` 文件。找到的所有变体都会出现在每个服务器卡片的下拉列表中。**自动**模式会选择具有最高版本的合适类型的包,然后选择最新的文件。 双击或从 PowerShell 启动 `wzin.exe`。系统浏览器将打开类似于 `http://127.0.0.1:54321` 的地址。 1. 填写 Linux 服务器的 IP/host、SSH login 和 SSH password。端口留空表示 `22`。 2. 指定你自己的 Wazuh manager 的 IP/hostname。 3. 如果需要,指定现有的 Wazuh groups 并选择特定的本地包,而不是使用 **自动** 模式。 4. 如果 manager 上的 enrollment 受密码保护,请填写 **注册密码** 字段。否则,请将其留空。 5. 如果需要,开启安装后更改 Linux 密码的功能,然后点击 **开始安装**。 6. 首次连接时,验证 SSH host key 的 SHA256 fingerprint 并确认它。信任状态仅保留到程序关闭之前。 7. 观察每个服务器的独立状态和 live-log。 ## 使用密码的 Enrollment WZIN 支持 Wazuh 的标准变量 `WAZUH_REGISTRATION_PASSWORD`。这种保护是可选的:留空该字段将执行不带密码的常规 enrollment。 要在 Wazuh manager 端进行 password-authenticated enrollment,请提前在 `` 部分启用 `yes`,创建包含相同密码的 `/var/ossec/etc/authd.pass` 文件,设置推荐的权限,然后重启 `wazuh-manager`。详情请参阅下方的 Wazuh 官方文档链接。 ## 支持的服务器 - `x86_64`/`amd64` 架构。 - 带有 systemd 和 `systemctl` 命令的 Linux。 - DEB:Debian、Ubuntu、Astra Linux 和其他基于 dpkg 的系统。 - RPM:RHEL、CentOS、Rocky、AlmaLinux、Fedora、Oracle Linux、ALT Linux 和其他基于 rpm 的系统。 - SSH password authentication。 - 远程用户 `root`,或者是具有相同密码且可用 `sudo` 的用户。 如果系统未知,但只能使用 `dpkg` 或 `rpm` 其中之一,则使用该类型。如果两者都可用且无法确定操作系统族,安装将停止并显示明确的错误。 ## 应用程序执行的操作 - 尝试两次 SSH 连接。 - 获取 hostname、`/etc/os-release`、架构、用户、UID 和可用的 package tools。 - 创建唯一的文件夹 `/tmp/wazuh-agent-install-`。 - 通过已建立的 SSH transport 使用 SFTP 上传本地包。 - 使用变量 `WAZUH_MANAGER`、`WAZUH_AGENT_NAME`、可选的 `WAZUH_AGENT_GROUP` 和 `WAZUH_REGISTRATION_PASSWORD` 安装选定或自动匹配的包。 - 执行 `systemctl daemon-reload`、`enable`、`restart`、`is-active` 和 `is-enabled`。 - 显示缩写的 `systemctl status` 和相关的 `ossec.conf` 行。 - 尽最大努力(Best-effort)删除已上传的包和临时文件夹。 - 可选地生成长度为 15-18 个字符的强加密密码,并通过 stdin 将其传递给 `chpasswd`。 最多同时执行五个安装。一个服务器的失败不会停止其他服务器。 ## 安全性 - HTTP bind 仅在 `127.0.0.1` 和一个随机的空闲端口上执行。 - 本地 API 受到随机的 HttpOnly `SameSite=Strict` session cookie、`Host` 和 `Origin` 验证的保护。 - Frontend 内置于 exe 中;没有外部 CDN、遥测或网络发布。 - SSH、sudo 和 enrollment passwords 不会保存到磁盘,也不会记录在日志中。 - Sudo 密码通过 stdin 传递给 `sudo -S -p ''`,而不是在进程参数中。 - Enrollment 密码在通过 stdin 提供的 root script 内部传递,不包含在 SSH command arguments 中。 - 新密码通过 stdin 传递给 `chpasswd`,并且仅出现在 UI 的单独隐藏字段中。 - Redactor 还会在 live-log 中屏蔽已记录的机密信息。 - 已确认的 SSH host keys 仅存储在进程内存中。 Go 不保证垃圾回收器会立即物理擦除字符串的所有副本,但应用程序不会故意保存、序列化或记录机密。 ## 停止 **停止并退出** 按钮将 UI 转换为 `停止中...` 状态,取消队列和当前的 jobs,关闭 SSH/SFTP 连接,停止本地 HTTP 服务器并终止进程。不需要 Windows 管理员权限。 ## 常见错误 ### SSH 不可用或密码错误 检查地址、端口、`sshd` 可用性、防火墙以及允许的 password authentication。应用程序会尝试两次并显示每次的结果。 ### SSH host key 已更改 不要自动确认更改。与服务器管理员或本地输出 `ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub` 核对 fingerprint。 ### 用户不是 root 且 sudo 不可用 检查用户是否在 sudoers 中,密码是否合适,以及 `sudo` 是否不需要单独的交互式 TTY。应用程序不会绕过 sudo policy。 ### 找不到 DEB/RPM 将所需类型的包放在 exe 旁边。例如,DEB 不能替代 RPM。名称必须以 `wazuh-agent` 开头。 ### 不支持的架构或 systemd 当前版本专用于本地的 `amd64/x86_64` Wazuh 包和 systemd。ARM、仅支持 SysV 的系统以及没有 `dpkg`/`rpm` 的系统会在上传包之前被拒绝。 ### Agent 未处于 active/enabled 状态 检查特定的 live-log:其中包含安装代码、缩写的服务状态以及相关的 `/var/ossec/etc/ossec.conf` 行。仅当状态为 `active` 和 `enabled` 时,才认为 Agent 安装成功。 ## 构建 构建仅供开发者使用,终端服务器操作员无需使用。 要求:Go 1.25 或更高版本,以及用于一次性下载两个 Go 模块的互联网连接。 ``` cd C:\path\to\wzin go mod download gofmt -w cmd internal web go vet ./... go test ./... -count=1 New-Item -ItemType Directory -Force dist | Out-Null go build -trimpath -ldflags "-s -w" -o dist\wzin.exe .\cmd\wzin ``` 在私有构建中,可以预先填充 manager 字段而无需更改源代码: ``` go build -trimpath -ldflags "-s -w -X wzin/internal/app.DefaultManager=wazuh.internal.example" -o dist\wzin.exe .\cmd\wzin ``` 对于公开发布的 release,不使用 `-X` 参数:manager 字段保持为空。 运行时依赖项 `golang.org/x/crypto/ssh`、`github.com/pkg/sftp`、backend 和 frontend 被编译到 exe 中。DEB/RPM 特意保留在 exe 旁边,以便它们可以独立更新。 ## 通过 WSL 或 VM 进行测试 使用带有 systemd 和 OpenSSH Server 的单独测试 VM/WSL: 1. 确保测试用户具有 sudo 权限,并且已知 SSH fingerprint。 2. 检查所选端口上从 Windows 到 Linux 的网络可访问性。 3. 将测试用 Wazuh DEB/RPM 放在 `wzin.exe` 旁边。 4. 首先在不更改密码的情况下运行安装。 5. 在 Linux 上检查:`systemctl is-active wazuh-agent`、`systemctl is-enabled wazuh-agent` 和 `/var/ossec/etc/ossec.conf`。 6. 要重新测试,请使用 VM 快照或明确允许重新安装包。 项目的单元/集成风格测试不会连接到实际服务器:installer orchestration 由 fake transport 检查,因此测试运行不会更改 Linux 机器。 ## Wazuh 官方资源 - [在 Linux 端点上部署 Wazuh agents](https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-linux.html) - [适用于 Linux 的 Deployment variables](https://documentation.wazuh.com/current/user-manual/agent/agent-enrollment/deployment-variables/deployment-variables-linux.html) - [为 agent enrollment 使用密码认证](https://documentation.wazuh.com/current/user-manual/agent/agent-enrollment/security-options/using-password-authentication.html)
标签:EVTX分析, Go语言, PB级数据处理, SSH, TCP SYN 扫描, Wazuh, Web UI, 内存分配, 安全运维, 日志审计, 特权提升, 程序破解, 自动化部署, 运维工具