broxcat/artemis
GitHub: broxcat/artemis
基于 Docker Compose 的 Velociraptor 自托管 homelab,提供 DFIR 与威胁狩猎平台的一键部署和多平台 agent 配置指南。
Stars: 0 | Forks: 0
# Artemis
一个自托管的 [Velociraptor](https://docs.velociraptor.app) homelab,通过 Docker Compose 运行在
带有 HTTPS 的 nginx 反向代理之后。以狩猎女神 Artemis 的名字命名——这对于 DFIR / 威胁
狩猎平台来说非常贴切。
## 前置条件
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
- OpenSSL(用于生成自签名证书)
## 安装说明
1. 克隆仓库:
git clone https://github.com/broxcat/artemis.git
cd artemis
2. 复制示例环境文件并填入你自己的值:
cp .env.sample .env
3. 为 `.env` 中的 `VELOX_PASSWORD` 生成一个强密码:
openssl rand -base64 24
4. 生成 nginx 使用的自签名 TLS 证书:
mkdir -p certs
openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
-keyout certs/key.pem -out certs/cert.pem \
-subj "/CN=localhost"
5. 启动该 stack:
docker compose up -d
6. 访问 **https://localhost** 打开 Velociraptor GUI(接受自签名证书警告),
并使用 `.env` 中的 `VELOX_USER` / `VELOX_PASSWORD` 登录。
### 两个独立的 URL —— 不要混淆它们
- **`VELOX_SERVER_URL`**(默认为 `https://localhost:8000/`)是 Velociraptor **agent** 用来在前端端口(8000)上向服务器回报的 URL。它被直接编译到每个重新打包的 agent 二进制文件中,并且**不**由 nginx 代理。
- **GUI URL**(端口 443 上的 `https://localhost`)是**你**(操作员)浏览访问的地址。它由 nginx 提供服务,nginx 将其反向代理到内部端口 8889 上的 Velociraptor GUI。
这两个 URL 是相互独立的——更改其中一个不会影响另一个。
## 部署 Velociraptor Agent
Agent 二进制文件是在运行中的 `velociraptor` 容器内部直接使用服务器配置重新打包的。重新打包的二进制文件嵌入了服务器的 CA 和连接详情,因此**切勿提交它们**(参见[安全说明](#security-notes))。
### Windows
1. 在容器内部重新打包 Windows 客户端:
docker exec -it velociraptor ./velociraptor config repack \
--exe /opt/velociraptor/windows/velociraptor_client.exe \
client.config.yaml \
clients/windows/agent.exe
2. 将重新打包的二进制文件复制到宿主机:
docker cp velociraptor:/velociraptor/clients/windows/agent.exe ./agent.exe
3. 手动运行它进行测试:
.\agent.exe client -v
4. 将其安装为永久的 Windows 服务(需要**提权**的 PowerShell 提示符):
.\agent.exe service install
### Linux
1. 在容器内部重新打包 Linux 客户端:
docker exec -it velociraptor ./velociraptor config repack \
--exe /opt/velociraptor/linux/velociraptor_client \
client.config.yaml \
clients/linux/agent
2. 将其复制出来并赋予可执行权限:
docker cp velociraptor:/velociraptor/clients/linux/agent ./agent
chmod +x agent
3. 手动运行它进行测试:
./agent client -v
4. 安装为 systemd 服务(Velociraptor 的 `service install` 子命令在 Linux 底层使用 systemd;请以 root 身份运行):
sudo ./agent service install --config client.config.yaml -v
### macOS
1. 在容器内部重新打包 macOS 客户端:
docker exec -it velociraptor ./velociraptor config repack \
--exe /opt/velociraptor/mac/velociraptor_client \
client.config.yaml \
clients/mac/agent
2. 将其复制出来并赋予可执行权限:
docker cp velociraptor:/velociraptor/clients/mac/agent ./agent
chmod +x agent
3. 手动运行它进行测试:
./agent client -v
4. 安装为持久化服务。Velociraptor 的 `service install` 子命令也支持 macOS,它会通过 `launchd` 注册自身——请使用 root 权限运行:
sudo ./agent service install --config client.config.yaml -v
如果这在你的 macOS 版本上没有按预期运行,请查阅官方文档以获取当前基于 launchd 的说明:https://docs.velociraptor.app/docs/deployment/clients/
## 安全说明
- **切勿提交 `.env`、`certs/` 或重新打包的 agent 二进制文件。** 它们包含凭据、私钥以及嵌入的服务器配置/CA 材料。这些文件都已通过 `.gitignore` 排除。
- 上面生成的自签名证书对于本地 homelab 来说没有问题,但浏览器和 agent 默认不会信任它——这是正常的,并非 bug。
- `VELOX_SERVER_URL` 必须是一个每个 agent 操作系统都能实际解析并能在端口 8000 上访问的 hostname 或 IP。使用 `localhost` 仅在 agent 与服务器运行在同一宿主机上时才有效——如果你在其他机器/VM 上部署 agent,请在重新打包客户端之前,将 `VELOX_SERVER_URL` 和 `VELOX_FRONTEND_HOSTNAME` 更改为服务器实际可访问的 IP 或 DNS 名称,否则 agent 将无法签入。
## 致谢
- [Velociraptor 文档](https://docs.velociraptor.app)
- [Velocidex/velociraptor](https://github.com/Velocidex/velociraptor) —— 构建 此 homelab
所基于的官方项目
标签:Docker Compose, Nginx, Velociraptor, 安全测试工具, 库, 应急响应, 版权保护, 用户态调试, 自托管, 请求拦截