Web 控制台
通过浏览器管理 SIREN 远程模式
Web 控制台是 SIREN Server 的浏览器入口。它覆盖日常远程操作:Project 工作区、客户端列表、浏览器 Shell、Agentic IR、调查任务、文件管理、Artifacts、服务端日志、Dossier 和全局设置。需要在控制主机终端里直接操作时,可以改用 服务端 REPL。
启动与访问
启用 webui.enabled 时,Web 控制台会随 siren_server 启动,并与远程客户端和 MCP 共用主 TLS 监听端口(默认 0.0.0.0:443):
./siren_server启动后访问:
https://<SIREN Server hostname>端口统一
Web 控制台、WebSocket、MCP 服务和远程客户端共用顶层 listen / port。浏览器访问根路径,MCP 客户端访问 /mcp。WebUI 与 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。
功能页面
左侧导航按用途分为四组:Respond(Clients、Agentic IR)、Tools(Shells、Files、Investigations)、Evidence(Artifacts、Dossier)和 System(Logs)。每个页面都有自己的 URL,例如 #/investigations/recon 或 #/artifacts/<路径>?project=<id>;刷新、浏览器前进后退和分享链接都会回到同一页面、同一工具标签、同一 AIR 会话或同一选中文件,浏览器标签页标题也随页面变化。
Projects
Clients
Shells
Agentic IR
Investigations
Files
Artifacts
Logs
Dossier
Settings
Projects
Project 是应急响应工作区,用于把客户端、Artifacts 目录和操作目标放到同一个上下文中。每个 Project 创建时会固定一个服务端目录,例如 /opt/siren/my-project。
Projects 页面不在左侧导航里:点击侧边栏顶部的 Project scope,在弹出的范围菜单中选择 Manage projects 进入。同一个菜单用于在 Global 视图和各 Project 视图之间切换。
Projects 页面支持:
- 创建 Project,并可指定目录名;未指定时会从 Project 名称中的文字和数字自动生成。目录名只能是 basename,最终目录必须位于
webui.projectsBaseDir下。每个 Project 会自动获得稳定的辨识颜色,并统一显示在 Projects、侧边栏范围和 Clients 归属标记中。 - 复制 Project 目录路径,便于在控制主机上查看或归档。
- 重命名 Project。重命名只修改显示名,不移动目录。
- 删除 Project。删除只移除元数据并解除客户端归属,目录和文件会保留。
- 在 Global 视图和 Project 视图之间切换。Project 视图只显示当前 Project 的客户端和取证目录。
客户端最多归属到一个 Project。未归属客户端只在 Global 视图中出现;进入 Project 视图后,Clients、Shells、Agentic IR、Files 和 Investigations 都只允许选择当前 Project 的客户端。
部署归属
在 Project 视图下通过 Web 控制台单机或批量部署 SIREN 客户端时,SIREN 会同时核对活动部署目标、来源 IP 和客户端稳定身份;多台主机共享同一个出口 IP 时也能分别归属到当前 Project。无论从 Web 控制台、服务端 REPL 还是 MCP 发起部署,未填写 Note 时都不会自动用 ECS Instance ID 填充备注;批量部署显式填写 Note 时,会在自动关联成功且客户端尚无备注时保存该内容。已有备注始终保留,显式填写 Note 而客户端已有备注时会显示 warning。服务端 REPL 部署不带 Project 上下文,仍保持全局行为。
Clients
Clients 页面对应服务端 REPL 的 ls、note、allow、deploy 和 clean。每行展示一个在线客户端,支持:
- 查看 ID、系统、Instance ID、Private IP、Project 和备注列;悬停或聚焦 Instance ID 单元格会展开主机卡片,显示主机名、连接地址和完整内网 IP 列表,可直接从卡片中复制;同时展示客户端版本。旧客户端未上报版本时显示 Not reported。
- 按 ID、Instance ID、IP、主机名、Project 或备注筛选,并按主要字段排序。
- 多选客户端后批量分配 Project 或执行清理。
- 编辑备注。备注绑定到客户端稳定身份,客户端重连后会自动恢复。
- 客户端选择器优先显示备注;没有备注时显示 Instance ID,再回退到主机名。
- 分配 Project。Global 视图中可以把客户端分配到某个 Project,或移回未归属状态。
- 打开快捷入口。从客户端行可直接进入 Files 或 Process Analysis。
- 没有在线客户端时,页面会显示三步引导:部署客户端、等待连接、从客户端行开始排查。
- 在页内 Provisioning 中执行 Allow access、Configure egress、Restore egress 或 Deploy SIREN,每次输入 1–20 个目标。
- 列表按设置的频率自动刷新,单机或批量部署结束后也会立即刷新一次。
- 查看近期部署任务。页面刷新后仍可恢复当前进度和最近结果,进行中的任务每 2 秒更新一次。
- 行操作菜单依次为 Files → Recon → Process analysis → Clean & terminate。Recon 会打开 Investigations 的 Recon 标签并选中该客户端,仍需选择 Profile 后手动执行。
- 清理客户端。单个或批量清理都会要求输入确认短语后再执行 Clean & Terminate。下方 Recent activity 展示近期结果:等待回报、文件已清理、延迟删除、失败或未收到回报。记录在客户端下线后仍保留,刷新页面可恢复;最多保留全服务端最近 20 条,按发起时的 Project 过滤,服务端重启后清空。
配置 SIREN 出方向
对出方向默认拒绝的阿里云 ECS,可填写 UID 和 Instance ID 后点击 Configure egress。页内会展示即将应用的出方向规则,默认包括:47.111.170.208/32 TCP 443 用于连接 SIREN 服务端,47.79.65.205/32 TCP 443 用于下载客户端,100.100.0.0/16 全流量用于访问阿里云基础服务。执行后会创建或复用独立的 SIREN 安全组并挂载到实例,不会移除已有安全组;页面会显示 SOAR 进度以及最终的安全组 ID 和地域。已有宽泛放行规则不会自动收回;使用自定义服务端监听端口时,应同步调整服务端的出方向规则配置。
恢复出站规则
在 Restore egress 中选择服务端保存的记录,每次最多恢复 20 个实例。恢复会撤销本次新增的关联和规则,还原调整过的 Drop 优先级;本次创建的专用组仅在空闲且未被修改时删除。原有配置及后续人工修改不会被整份覆盖;检测到冲突会保留记录并说明原因。
多实例共用的 Drop 规则等最后一个依赖实例结束后才恢复。在此之前显示 Waiting for shared rules。恢复记录不依赖客户端在线,页面刷新或服务端重启后仍保留;未解决记录持续保留,已恢复记录保留最近 20 条。旧操作没有恢复记录时不支持自动还原。
恢复可能切断客户端回连,需要清理客户端时先执行 Clean,再手动恢复。Clean 回报文件已清理或已安排删除后,页面会为匹配的恢复记录提供快捷入口,不自动执行。Verify 用于核对执行是否结束及当前放行状态;SOAR 执行尚未结束或提交结果不明时禁止重复修改。恢复依据不完整时保留资源并提示人工检查。
Provisioning 输入与结果
Allow access 每行填写一个客户端公网 IPv4 地址;Configure egress 和 Deploy SIREN 使用同一个 Alibaba Cloud UID,每行填写一个 Instance ID。部署可附带出口公网 IP 和备注,例如 i-a、i-b,203.0.113.10、i-c,,web-1 或 i-d,203.0.113.11,db-1。相同目标自动去重,同一实例的公网 IP 或备注冲突时需先修正。Allow access 和 Configure egress 逐项执行;部署默认并发 3 台,单个目标失败不会中断其他目标。
未填写出口 IP 时,部署先获取实例基本信息,再安装、启动客户端并执行一次最长 4 秒的连接探测。随后等待云防火墙日志,只有唯一确认公网出口后,才为该地址的 /32 和 SIREN 服务端口添加入方向规则。界面依次显示安装与探测、等待日志、放行和等待连接;日志一旦唯一匹配就立即放行,不等待固定窗口结束;日志迟迟未到时会超时失败。WebUI、REPL 和 MCP 使用同一流程。
目标主机仍须能够下载客户端并向服务端发起连接。部署不会自动修改客户出方向策略。日志缺失、多个来源匹配、探测失败或身份校验失败时停止自动流程,失败信息会说明已经确认的安装状态。可填写经核对的出口 IPv4 重试,跳过自动发现。Windows 原生采集不可用的系统也应使用手填出口 IP,不需要安装第三方抓包驱动。
动态出口
单次探测只确认该次连接的出口。如果后续连接改用其他公网地址,客户端仍可能无法上线;SIREN 不会据此放行整个出口池。每次自动重试都会重新探测,不复用上次任务的证据。
操作结果逐项展示,重试只提交失败目标。部署成功以客户端实际连接为准;连接未确认或中途丢失部署结果时,先在 Recent activity 中核对,再决定是否重新部署。部署失败信息明确提示出口问题时,可以直接为相关目标 Configure egress。
执行期间请保持浏览器页面打开。部署记录可在刷新页面后恢复;Allow access 的逐项结果仅保留在当前页面;Configure egress 和 Restore egress 的恢复记录保存于服务端,云端操作启动后不因浏览器断开而取消。Recent activity 合并展示近期部署和清理记录,进行中的记录优先排列;部署记录可展开查看日志。近期部署最多保留 20 次,终态记录最长保留 30 分钟,服务端重启后清空。
需要手工确认客户端
客户端稳定身份缺失、冲突或与目标来源 IP 不一致时,SIREN 不会回退为按 IP 猜测,也不会写入无法确认的 Project 或 Note。部署会显示 manual_required,请在 Clients 列表中核对主机后手工设置;页面不会提供自动重试,以免重复部署。
Shells
Shell 共用服务端主 TLS 端口(默认 TCP 443),无需开放临时端口。服务端和客户端需同时升级到 v2.30.5 或更新版本。Shells 页面提供浏览器内的交互式终端,每个客户端可以打开多个终端标签。切换到其他页面时,已打开的 Shell 会话仍会保持运行;回到 Shells 页后可以继续输入。
Project 视图下,Shell 只能连接当前 Project 的客户端。切换 Project 或切回 Global 时,Web 控制台会关闭不属于新视图的活动 Shell,避免继续操作错误项目中的主机。
Agentic IR
Agentic IR 页面通过 Claude Code、Codex、Qoder 或 Pi 完成 Agentic 应急响应。所有新会话默认使用结构化 GUI 时间线,也可以在启动前选择 Terminal,使用 Provider 的真实 TUI、斜杠命令和自定义 statusline。
新建会话可选以下入口模式:
- Manual,不带客户端或种子 prompt 的空白会话,适合临时通用操作;仍会注入当前范围的 SIREN MCP。
- Custom,选择客户端并输入应急响应指令。
- Event,选择客户端并输入阿里云 UID,再选择事件目标:告警 ID(Event)、ECS 实例 ID(ECS)或资产 UUID(Asset)。实例或资产目标可展开 Time range 限定告警时间范围。
也可以切换到 Resume 模式,搜索并选择当前视图工作目录对应的历史会话。历史先以只读时间线打开,只有点击 Continue session 后才会启动 Provider,并用原 session ID 继续。
左侧的 Running 会显示任务、客户端、Provider、状态和启动时间;History 默认收起在侧栏底部,展开后显示首个任务、最近一条可见对话、分支和更新时间,便于在恢复前确认会话内容。
恢复范围
Resume 只读取当前视图工作目录对应的 Provider history,不会跨 Project 列出其他目录的历史会话,也不会向浏览器暴露本机 JSONL 文件路径。
GUI 以时间线交错展示 Agent 回复原文与聚合折叠的操作记录,计划、审批和提问出现在对应位置;输入框下方的状态条显示模型、上下文占用和 Provider 额度。支持模型切换的 Provider 可在空闲时点击状态条中的模型名称选择模型;Codex 还可调整当前模型支持的推理强度。Pi 列出服务器已配置的模型,新会话沿用操作者的思考默认设置,恢复会话保留之前的模型和思考等级。时间线支持 Cmd/Ctrl+F 检索与过滤,并可从状态条把当前会话导出为 Markdown。Agent 运行时仍可发送补充要求调整后续方向,也可以单独停止当前工作;调整方向不会撤销已经完成的命令、文件修改或远程操作。GUI 与 Terminal 都支持直接粘贴 PNG、JPEG、WebP 和 GIF 图片,单张最多 8 MiB、一次最多 4 张;SIREN 负责把图片转交给 Provider,具体模型能否识别由 Provider 和模型决定。Terminal 保留原有 PTY 行为。两种会话都托管在服务端,刷新浏览器或切换页面后可以重新接入并回放,进程不会因为页面离开而中断。所有入口都会使用 SIREN MCP,因此需要启用 MCP 服务。Project 视图使用项目级 MCP,Global 视图使用全局 MCP;工作目录、历史恢复和 MCP 作用域规则见 Agentic 应急响应。
Investigations
Investigations 页面汇总需要等待结果的调查工具,目前包含 AccessKey 调查、客户端 Recon 和进程分析。
- AccessKey,输入阿里云 UID、AccessKey ID 和可选 Region,生成 Markdown 调查报告。Region 留空时默认
cn-hangzhou。AccessKey 调查不绑定客户端,报告写入 Global Artifacts。 - Recon,选择在线客户端及其实际公布的 Profile 后下发信息收集命令;旧客户端只提供 Legacy default。页面显示实际 Profile 和本次 operation 的阶段。partial 快照会显示简短警告;同一客户端已有 Recon 运行时会直接提示冲突,客户端错误、断连或超时也会结束当前状态。
- Process Analysis,选择 Linux 客户端后,按 PID、监听端口或进程名查询进程详情。按名称匹配到多个进程时,页面会列出候选项,点击候选 PID 后继续分析。
- 报告入口,Recon 完成后只显示 Open Report,打开派生 Markdown。权威 JSONL 可在 Artifacts 中查看或下载;两份文件都跟随客户端 Project 归属保存。
进度展示原则
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 的权威 *.recon.jsonl 与派生 *.md 会同时出现;也可以管理 AIR、AccessKey 报告和从客户端拉取的取证文件。
支持的操作:
- 预览文本文件。
.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 控制台撤销;执行前请确认当前视图和目标路径。
Logs
Logs 页面显示服务端运行日志,内容与启动 siren_server 的终端完全一致。远程通过浏览器操作时,不必再登录控制主机翻日志,就能看到客户端接入失败、登录失败、AIR 与 MCP 报错等事件。
页面提供:
- 关键词搜索。匹配日志正文和所有结构化字段值,例如直接搜索客户端 ID、IP 或事件名。
- 级别过滤。Debug、Info、Warning、Error 可多选;不选表示全部。
- 组件过滤。下拉选项来自当前缓冲区中实际出现过的组件,例如
server、webui、client、mcp。 - Live / Pause。Live 时约每 3 秒追加新日志,已滚动到底部会自动跟随;向上翻阅时不会被打断。Pause 后停止拉取,恢复 Live 会从暂停位置继续。
- 复制和下载当前列表内容,便于附到工单或报告中。
- 点击任意一行展开该条日志的完整结构化内容。
日志按 logging.level 过滤后才进入页面,因此页面看到的与终端一致;需要更详细的内容时调整 logging.level。
MCP run 会写入共享 audit_id 的 mcp.run.requested 和 mcp.run.finished 记录。选择 mcp 组件后,可以直接搜索完整命令、客户端返回的 50 KiB 内权威结果、客户端 ID、outcome 或 audit_id;Agent 收到长结果预览不会改变日志中的权威结果。策略拦截、目标拒绝、发送失败、取消、超时和远端执行失败也会留下完成记录。
内存缓冲,重启即清空
日志保留在内存中,条数由 logging.bufferSize 控制(默认 5000)。服务重启后历史清空;缓冲区写满后最早的记录会被淘汰,页面会显式提示已丢弃的条数,不会静默截断。需要长期留存请按 日志输出的说明由 systemd 或容器运行时采集。
访问范围
Logs 页面不区分角色:任何已登录用户都能查看服务端日志,其中包含来访 IP、用户名、客户端地址,以及 MCP run 的完整命令和有界返回结果等敏感信息。日志与 Project 无关,始终显示全局内容。大量远程命令输出也会增加内存占用;可按操作量调低 logging.bufferSize,设为 0 则完全关闭该页面。
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 中创建或选择实际的
.md报告,再从该文件进入 Dossier;左侧入口的默认模板不能被覆盖。 - Artifacts 中没有 Dossier 按钮:只有
.md报告支持在 Dossier 中编辑。 - 旧 HTML 报告无法直接预览:Artifacts 不再内置 HTML 预览,可下载后查看;新的应急报告建议使用 Markdown。
Settings
Settings 不在左侧导航里,从左下角的账号入口打开。同一个菜单还提供 Docs、Feedback、退出登录和当前版本号。
页面分两部分:
- Preferences:偏好只保存在当前浏览器,不跟随账号,也不会同步到其他设备。
- 启动时的 Project 范围:沿用上次使用的范围,或每次都从 Global 开始。
- Agentic IR 默认 Provider:沿用上次使用的 Provider,或固定 Codex / Claude / Qoder / Pi。固定期间仍可为单次会话临时切换;所选 Provider 不可用时会自动使用可用的 Provider。
- Agentic IR 默认界面:沿用上次使用的界面,或固定 GUI / Terminal。固定期间上次使用的记录会被保留,改回"沿用上次使用"时恢复的仍是你真正用过的界面。当前 Provider 不支持所选界面时,仍会临时使用可用的那个。
- Clients 列表刷新频率:5 秒到 1 分钟。标签页切到后台时轮询会自动暂停。
- Server:只读信息,包括版本号、鉴权状态与当前用户、Dossier 目录,以及每个 Agentic IR Provider 实际可用的界面。Provider 不可用或只能用其中一种界面时,这里会直接给出原因,不用等到启动会话失败才发现。
配置
在 server_config.yaml 的 webui 段落配置:
webui:
enabled: true # 是否启用 Web 控制台
publicURL: https://siren.example.com # WebUI AIR 使用的 HTTPS Origin
userDBPath: /opt/siren/data/users.db # 可选:用户数据库绝对路径
dossierDir: /opt/siren/dossier # 可选:Dossier 编辑器文件目录
projectsBaseDir: /opt/siren/projects # 可选:Project 目录创建基准路径
mcp:
enabled: true # 是否启用 MCP 服务
runOutputMode: auto # run 长结果默认返回可恢复首尾预览服务端顶层 listen / port 决定 Web 控制台、MCP 和远程客户端共用的 TLS 监听地址。webui.publicURL 只用于 WebUI AIR 注入 MCP 地址;它必须是证书覆盖的 HTTPS Origin,服务端本机应将该域名解析到本机的非 loopback 内网地址,不能指向 127.0.0.1 或 ::1。完整配置项见 配置文件。
生产部署建议
公网暴露场景
Web 控制台使用服务端主 TLS 端口。部署到公网时:
- 使用浏览器信任、且覆盖访问域名的证书
- 通过防火墙、安全组、VPN 或 ACL 限制主 TLS 端口的访问来源;
/mcp使用独立 Bearer 凭证,不使用 WebUI Session 鉴权 - 部署前必须创建至少一个用户账号,否则 Web 控制台不会启用鉴权