lalalesha4/wzin
GitHub: lalalesha4/wzin
一款运行于 Windows 的独立 Web 面板,通过 SSH 并行将 Wazuh Agent 批量安装到 Linux 服务器。
Stars: 0 | Forks: 0
# Wazuh Agent SSH 安装程序
**独立的 Windows 面板,用于通过 SSH 安全地将 Wazuh Agent 安装到 Linux**
[](https://go.dev/)
[](https://github.com/lalalesha4/wzin/actions/workflows/ci.yml)
[](https://github.com/lalalesha4/wzin/releases/latest)
[](LICENSE)
[项目网站](https://lalalesha4.github.io/wzin/) · [下载 EXE](https://github.com/lalalesha4/wzin/releases/latest) · [GitLab](https://gitlab.com/lalalesha4/wzin)

`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, 内存分配, 安全运维, 日志审计, 特权提升, 程序破解, 自动化部署, 运维工具