Web 控制台
通过浏览器管理 SIREN 远程模式
Web 控制台是 SIREN Server 的浏览器入口。它覆盖日常远程操作:Project 工作区、客户端列表、浏览器 Shell、Agentic IR、调查任务、文件管理、Artifacts 和 Dossier。需要在控制主机终端里直接操作时,可以改用 服务端 REPL。
启动与访问
启用 webui.enabled 时,Web 控制台会随 siren_server 启动。默认监听 0.0.0.0:8080:
./siren_server启动后访问:
http://<SIREN Server IP>:8080端口统一
Web 控制台和 MCP 服务 共用 webui.listen / webui.port。浏览器访问根路径,MCP 客户端访问 /mcp。两者的启停开关相互独立,分别是 webui.enabled 和 mcp.enabled。
账号鉴权
Web 控制台使用 Session Cookie 鉴权。账号密码存储在 SQLite 数据库中,密码会先做 bcrypt 哈希,默认数据库路径是 data/users.db。
安全注意
用户数据库不存在,或数据库里没有任何用户时,Web 控制台会关闭鉴权并允许匿名访问。部署到公网前必须先创建至少一个用户。
管理用户账号
数据库路径一致性
data/users.db 默认相对当前工作目录解析。如果 siren_server user add 和 siren_server 在不同目录执行,可能会读写两份数据库。建议在 server_config.yaml 中配置绝对路径:
webui:
userDBPath: /opt/siren/data/users.db或者在 systemd unit 中设置 WorkingDirectory。
功能页面
Projects
Clients
Shells
Agentic IR
Investigations
Files
Artifacts
Dossier
Projects
Project 是应急响应工作区,用于把客户端、Artifacts 目录和操作目标放到同一个上下文中。每个 Project 创建时会固定一个服务端目录,例如 /opt/siren/my-project。
Projects 页面支持:
- 创建 Project,并可指定目录名。目录名只能是 basename,最终目录必须位于
webui.projectsBaseDir下。 - 复制 Project 目录路径,便于在控制主机上查看或归档。
- 重命名 Project。重命名只修改显示名,不移动目录。
- 删除 Project。删除只移除元数据并解除客户端归属,目录和文件会保留。
- 在 Global 视图和 Project 视图之间切换。Project 视图只显示当前 Project 的客户端和取证目录。
客户端最多归属到一个 Project。未归属客户端只在 Global 视图中出现;进入 Project 视图后,Clients、Shells、Agentic IR、Files 和 Investigations 都只允许选择当前 Project 的客户端。
部署归属
在 Project 视图下通过 Web 控制台单机或批量部署 SIREN 客户端时,唯一匹配到本次 Allow IP 的新客户端会自动归属到当前 Project。批量部署填写的 Note 只会写入尚无备注的客户端,已有备注会保留并显示 warning。服务端 REPL 部署不带 Project 上下文,仍保持全局行为。
Clients
Clients 页面对应服务端 REPL 的 ls、note、allow、deploy 和 clean。每行展示一个在线客户端,支持:
- 按 ID、系统、地址、备注或 Project 筛选,并按主要字段排序。
- 多选客户端后批量分配 Project 或执行清理。
- 编辑备注。备注绑定到客户端稳定身份,客户端重连后会自动恢复。
- 分配 Project。Global 视图中可以把客户端分配到某个 Project,或移回未归属状态。
- 打开快捷入口。从客户端行可直接进入 Files 或 Process Analysis。
- 执行 SOAR 操作,包括
allow放行、单机部署、批量部署。 - 查看近期部署任务。页面刷新后仍可恢复当前进度和最近结果,进行中的任务每 2 秒更新一次。
- 清理客户端。单个或批量清理都会要求输入确认短语后再执行 Clean & Terminate。
批量部署规则
点击 Batch deploy 会打开独立的批量部署窗口,支持同一 UID 下的 2-20 台 ECS。每行输入 instanceId、instanceId,publicIp 或 instanceId,publicIp,note;只填写备注时可写成 instanceId,,note。默认并发 3 台,单台失败不会中断其他目标。提交后窗口会关闭,可在近期部署列表继续查看进度。success 表示客户端已经连接,并显示实际 Client ID;playbook 完成后最多等待 30 秒,未连接的目标记为 timed_out。安装或启动命令失败时会立即显示其输出,不再继续等待客户端上线。
部署结果分为 success、partial 和 failed。只有所有目标均已连接且没有 warning 时才会清空输入;部分成功、失败或超时会保留原输入,便于核对和修正。近期列表最多显示 20 次部署,可以完全收起;终态记录最长保留 30 分钟。这些记录只存在于当前服务端进程,服务端重启后不会恢复。
需要手工确认客户端
多个进行中的部署目标共享同一个出口 IP 时,SIREN 会停止自动关联,不会把本次 Project 或 Note 写入无法确认的客户端。部署会显示 manual_required,请在 Clients 列表中核对主机后手工设置;页面不会提供自动重试,以免重复部署。
Shells
Shells 页面提供浏览器内的交互式终端,每个客户端可以打开多个终端标签。切换到其他页面时,已打开的 Shell 会话仍会保持运行;回到 Shells 页后可以继续输入。
Project 视图下,Shell 只能连接当前 Project 的客户端。切换 Project 或切回 Global 时,Web 控制台会关闭不属于新视图的活动 Shell,避免继续操作错误项目中的主机。
Agentic IR
Agentic IR 页面在浏览器内嵌终端中运行 Claude Code、Codex 或 Qoder,用于完成 Agentic 应急响应。页面支持选择 Provider、新建会话,或恢复当前视图工作目录对应的历史会话。
新建会话可选以下入口模式:
- Manual,不带 SIREN 上下文的裸 CLI 终端,适合临时通用操作。
- Custom,选择客户端并输入应急响应指令。
- Event,选择客户端并输入阿里云 UID 和云安全中心告警 ID,由服务端拉取告警详情。
也可以切换到 Resume 模式,搜索并选择当前视图工作目录对应的历史会话,用原 session ID 在终端中继续该会话。
左侧的 Running 会显示任务、客户端、Provider、状态和启动时间;History 会显示首个任务、最近一条可见对话、分支和更新时间,便于在恢复前确认会话内容。
恢复范围
Resume 只读取当前视图工作目录对应的 Provider history,不会跨 Project 列出其他目录的历史会话,也不会向浏览器暴露本机 JSONL 文件路径。
会话托管在服务端。刷新浏览器或切换页面后,可以重新接入并回放此前输出,进程不会因为页面离开而中断。除 Manual 外,会话会使用 SIREN MCP,因此需要启用 MCP 服务。Project 视图下的工作目录、历史恢复和 MCP 作用域规则见 Agentic 应急响应。
Investigations
Investigations 页面汇总需要等待结果的调查工具,目前包含 AccessKey 调查、客户端 Recon 和进程分析。
- AccessKey,输入阿里云 UID、AccessKey ID 和可选 Region,生成 Markdown 调查报告。Region 留空时默认
cn-hangzhou。AccessKey 调查不绑定客户端,报告写入 Global Artifacts。 - Recon,选择在线客户端并下发信息收集命令。页面展示服务端从客户端日志中解析出的阶段,例如
Recon.Basic、Recon.User、Recon.Process和Save report to Artifacts。 - Process Analysis,选择 Linux 客户端后,按 PID、监听端口或进程名查询进程详情。按名称匹配到多个进程时,页面会列出候选项,点击候选 PID 后继续分析。
- 报告入口,调查结束后会显示 Open Artifacts 按钮。Recon 报告跟随客户端 Project 归属保存;已归属客户端写入 Project 目录,未归属客户端写入 Global Artifacts。
进度展示原则
Web 控制台只展示服务端能真实观测到的阶段。AccessKey 调查只显示 playbook 运行状态;Recon 阶段来自客户端实际回传日志;Process Analysis 是一次同步查询,完成后直接展示结果或错误。
Files
Files 页面用于浏览在线客户端的本机文件系统。可以从左侧导航进入后选择客户端,也可以在 Clients 列表中点击某个客户端行的 Files 快捷入口。Project 视图下只能选择当前 Project 的客户端。
常用操作:
- 选择客户端,或从 Clients 页面跳转后自动选中对应客户端。
- 打开路径。Linux/macOS 默认从
/打开,Windows 默认从C:\打开,也可以在 Path 输入框中输入指定路径。 - 预览文本文件。二进制文件会显示不可预览提示。
- 下载文件或目录。目录会打包为
tar.gz。 - 点击 Upload 选择一个或多个文件,或把多个文件拖到页面任意位置,上传到顶部 Target 显示的当前目标目录。文件会按顺序上传,单文件上限 100 MiB;目标文件已存在时会逐个要求覆盖或跳过。拖拽不支持上传目录。
远程文件操作
Files 页面读写的是客户端主机上的真实文件系统,上传和覆盖操作会直接修改远端文件。执行前请确认目标客户端与上传目录。
Artifacts
Artifacts 页面管理服务端取证目录。Global 视图使用 siren_server 工作目录;Project 视图使用当前 Project 创建时固定的目录。常见场景是查看 Recon、AIR 和 AccessKey 调查生成的 Markdown 报告,或管理从客户端拉取到服务端的取证文件。
支持的操作:
- 预览文本文件。
.md和.markdown会渲染为 Markdown;包含多个标题时会显示目录。 - 预览 PNG、JPEG、GIF 和 WebP 图片。图片默认适应预览区,也可以切换到 100% 或在 25%-400% 范围内缩放查看细节。
- 下载文件或目录。目录会打包为
tar.gz,并自动排除点号开头的文件和子目录。 - 点击 Upload 选择一个或多个文件,或把多个文件拖到页面任意位置,上传到顶部 Target 显示的当前目标目录。文件会按顺序上传,单文件上限 100 MiB;目标文件已存在时会逐个要求覆盖或跳过。拖拽不支持上传目录。
- 新建目录、重命名和删除文件或目录。删除非空目录会递归删除其中内容。
- 从
.md报告进入 Dossier 编辑。.markdown可以预览,但不会显示 Dossier 编辑按钮。 - 保护隐藏路径。
.env、.ssh等点号开头的文件或目录不会列出,也不允许直接访问。
Artifacts 删除操作
Artifacts 操作的是服务端真实文件。删除目录会递归删除其中内容,无法从 Web 控制台撤销;执行前请确认当前视图和目标路径。
Dossier
Dossier 是独立的 Markdown 报告编辑器,有两种打开方式:
- 从左侧导航点击 Dossier,打开
webui.dossierDir/report.md。即使当前处于 Project 视图,也不会自动切换到 Project 目录下的report.md。 - 在 Artifacts 中选中
.md报告后,点击 Dossier 按钮编辑该报告。如果当前是 Project 视图,报告文件和粘贴资源会保留在 Project 目录内。
Dossier 未部署、路径配置错误或默认 report.md 缺失时,Web 控制台会显示错误提示,但不影响其他功能。
详细部署、配置、语法和编辑流程见 Dossier 文档。
常见问题
- 点击 Dossier 后提示不可用:通常是 Dossier 编辑器文件未部署,或
webui.dossierDir指向了错误目录。 - 点击 Dossier 后提示默认报告不可用:确认
webui.dossierDir/report.md存在。webui.dossierDir可以使用绝对路径,也可以放在siren_server工作目录外。 - Artifacts 中没有 Dossier 按钮:只有
.md报告支持在 Dossier 中编辑。 - 旧 HTML 报告无法直接预览:Artifacts 不再内置 HTML 预览,可下载后查看;新的应急报告建议使用 Markdown。
配置
在 server_config.yaml 的 webui 段落配置:
webui:
enabled: true # 是否启用 Web 控制台
listen: 0.0.0.0 # 共享 HTTP 监听地址
port: 8080 # 监听端口(与 MCP 共享)
userDBPath: /opt/siren/data/users.db # 可选:用户数据库绝对路径
dossierDir: /opt/siren/dossier # 可选:Dossier 编辑器文件目录
projectsBaseDir: /opt/siren/projects # 可选:Project 目录创建基准路径
mcp:
enabled: true # 是否启用 MCP 服务Web 控制台与 MCP 共用监听地址和端口,但启停开关相互独立。完整配置项见 配置文件。
生产部署建议
公网暴露场景
Web 控制台本身使用 HTTP。Session Cookie 虽然是 HttpOnly 和 SameSite=Lax,但公网明文传输仍有风险。建议:
- 将
webui.listen改为绑定127.0.0.1(默认0.0.0.0),前置 Nginx / Caddy 做 TLS 终止和反向代理 - 或至少通过 iptables / 安全组限制访问 IP
- 部署前必须创建至少一个用户账号,否则 Web 控制台不会启用鉴权