配置文件
了解如何通过配置文件进行自定义设置
SIREN 客户端与服务端启动时都会读取 YAML 配置文件。找不到配置文件时会直接退出,因此建议把客户端配置保存为 config.yaml,服务端配置保存为 server_config.yaml。
查找顺序
启动时,SIREN 会按以下顺序查找配置文件(找到即停止):
-c/--config指定的路径- 当前工作目录下的
config.yaml(客户端)或server_config.yaml(服务端) - 当前工作目录的
config/子目录
部分命令行参数会覆盖对应配置项。客户端远程模式可用 siren client -s/-p 指定服务端地址和端口;服务端可用 siren_server -l/-p --cert --key --webui-dossier-dir --webui-projects-base-dir 覆盖常用启动项。
敏感信息
不要把 AccessKey、API Key 等敏感凭证写入配置文件。OSS 与 SOAR 凭证均通过环境变量读取,详见凭证设置。
客户端配置
server: 127.0.0.1 # 服务端地址
port: 443 # 服务端端口
recon:
commandTimeout: 30 # 命令执行超时时间
user: true # 用户信息收集开关
# ...other modules
oss:
region: cn-hongkong # OSS Bucket Region
bucketName: ir-transfer-station # OSS Bucket 名称
objectPath: tmp/siren_upload # 本地 upload 文件上传路径
docObjectPath: tmp/siren_upload/docs/latest # 本地 recon 文档上传路径前缀
plugins:
marketplace: https://example.com/plugins # 插件市场地址
jdump: true # command 插件开关示例
rules: # 信息收集规则
IPWhitelist: 140\.205\.11\.\d+|8\.147\.237\.0
# ...other rules配置项说明
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
server | string | 127.0.0.1 | 远程模式下连接的服务端地址 |
port | int | 443 | 远程模式下连接的服务端端口 |
recon.commandTimeout | int | 30 | 信息收集和客户端远程命令执行的基础超时时间(秒);MCP / AIR 慢命令建议服务端也设置相同值 |
recon.<module> | bool | 示例配置为 true | 内置信息收集模块或 recon 类型插件的开关(如 user、process、network 等),完整列表见信息收集模块。未设置时不会执行 |
oss.region | string | - | OSS Bucket 所在地域 |
oss.bucketName | string | - | OSS Bucket 名称 |
oss.objectPath | string | tmp/siren_upload | 本地 siren upload 的 OSS 路径前缀 |
oss.docObjectPath | string | tmp/siren_upload/docs/latest | 本地 siren recon 文档上传的 OSS 路径前缀 |
plugins.marketplace | string | - | 插件市场 URL,用于下载和更新插件 |
plugins.<name> | bool | - | 启用或禁用 command 类型插件;recon 类型插件使用 recon.<name> |
rules | map | - | 信息收集规则,值为正则表达式 |
关于 rules
rules 用于在信息收集结果中标记或过滤内容。白名单规则减少已知正常项带来的噪音,黑名单规则高亮可疑项;规则值使用正则表达式。
服务端配置
listen: 0.0.0.0 # 客户端 TLS 服务监听地址
port: 443 # 客户端 TLS 服务监听端口
cert: certs/cert.pem # TLS 证书路径
key: certs/key.pem # TLS 密钥路径
webui: # Web 控制台
enabled: true # 是否启用 WebUI
listen: 0.0.0.0 # 共享 HTTP 监听地址
port: 8080 # 监听端口(WebUI 与 MCP 共享)
userDBPath: data/users.db # 可选:WebUI 用户数据库路径
dossierDir: /opt/siren/dossier # 可选:Dossier 编辑器文件目录
projectsBaseDir: "" # 可选:Project 目录创建基准路径
mcp:
enabled: true # 是否启用 MCP 服务
cmdBlacklist: # MCP run 命令黑名单(正则表达式)
- '(?:^|[;|&\n]\s*)(?:sudo\s+)?rm(?:\s|$)'
- '(?:^|[;|&\n]\s*)(?:sudo\s+)?find(?:\s|$)[^;|&\n]*\s-delete(?:\s|$)'
- '(?:^|[;|&\n]\s*)(?:sudo\s+)?dd(?:\s|$)[^;|&\n]*\bof=/dev/(?:sd|hd|vd|xvd|nvme|mapper|dm-|loop|md|ram)'
- '(?:^|[;|&\n]\s*)(?:sudo\s+)?systemctl\s+(stop|disable|mask|restart|reload)(?:\s|$)'
- '(?:^|[;|&\n]\s*)(?:sudo\s+)?(?:useradd|usermod|userdel|groupadd|groupmod|groupdel)(?:\s|$)'
# ...more destructive-action patterns
air:
# WebUI AIR 与 Agent 终端的默认 Provider;也可逐会话在页面上选择
provider: claude # claude / codex / qoder
maxSessions: 10 # WebUI Agent 终端最大并发会话数;<=0 表示不限制
replayBufferBytes: 4194304 # 每个会话用于断线回放的终端输出上限(字节)
prompt: 启动安全应急响应,UID:%s,... # 告警事件模式的 prompt 模板
customPromptPrefix: 在 SIREN Client %d 上... # 自定义 prompt 模式的前缀
# providers.<name> 用于 WebUI AIR 和 Manual 裸终端;服务端 REPL air 固定使用 Claude
providers:
claude:
cliPath: claude # Claude Code CLI 路径
args: [] # 额外 Claude CLI 参数
codex:
cliPath: codex # Codex CLI 路径
args: [--no-alt-screen] # 保留浏览器终端滚动历史
qoder:
cliPath: qodercli # QoderCLI 路径
args: [] # 额外 QoderCLI 参数配置项说明
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
listen | string | 0.0.0.0 | 客户端 TLS 服务监听地址 |
port | int | 443 | 客户端 TLS 服务监听端口 |
cert | string | certs/cert.pem | TLS 证书文件路径 |
key | string | certs/key.pem | TLS 私钥文件路径 |
webui.enabled | bool | true | 是否启用 Web 控制台。关闭后若 mcp.enabled 仍为 true,/mcp 会继续在共享端口上提供服务 |
webui.listen | string | 0.0.0.0 | WebUI 与 MCP 共享的监听地址;只要 webui.enabled 或 mcp.enabled 有一个启用就会启动监听 |
webui.port | int | 8080 | WebUI 与 MCP 共享的监听端口,MCP 通过 /mcp 子路径暴露 |
webui.userDBPath | string | data/users.db | WebUI 用户 SQLite 数据库路径(相对路径基于启动 CWD) |
webui.dossierDir | string | -(示例配置为 /opt/siren/dossier) | Dossier 编辑器文件目录,可位于服务端工作目录外;左侧 Dossier 入口默认打开该目录下的 report.md。目录留空、不可用或默认报告不可访问时,WebUI 会提示错误。详见 Dossier 配置 |
webui.projectsBaseDir | string | ""(服务端当前工作目录) | WebUI Project 目录创建基准路径。创建 Project 时只允许在该目录下创建一个 basename 子目录;Project 重命名不会移动目录,删除 Project 只删除元数据并保留目录文件 |
mcp.enabled | bool | true | 是否启用 MCP 服务,独立于 webui.enabled |
mcp.cmdBlacklist | list | 见 MCP 集成 | MCP run 工具的命令黑名单,值为正则表达式列表 |
mcp.reconTimeout | int | 300 | recon MCP 工具等待客户端回传报告的最长时间(秒) |
air.provider | string | claude | WebUI AIR 与 Agent 终端默认 Provider,可选 claude、codex 或 qoder;页面中也可在每次启动会话时选择。服务端 REPL 的 air 命令固定使用 Claude Provider 配置 |
air.maxSessions | int | 10 | WebUI Agent 终端最大并发会话数;适用于 AIR 和 Manual 会话,设为 0 或负数表示不限制 |
air.replayBufferBytes | int | 4194304 | 每个 WebUI Agent 终端会话为断线重连保留的原始输出字节数;设为 0 或负数时使用默认的 4 MiB |
air.prompt | string | 见示例配置 | 告警事件模式下的 prompt 模板,依次填入 %s UID、%s 安全中心告警 ID、%d Client ID(告警 ID 即 air 命令的 Security Center Alert ID,详见 Agentic 应急响应) |
air.customPromptPrefix | string | 见示例配置 | 自定义 prompt 模式下的前缀(支持 %d Client ID) |
air.providers.claude.cliPath | string | claude | WebUI Claude Provider 和服务端 REPL air 命令使用的 Claude Code CLI 路径 |
air.providers.claude.args | list | [] | 传递给 Claude CLI 的额外参数 |
air.providers.codex.cliPath | string | codex | WebUI Codex Provider 使用的 Codex CLI 路径 |
air.providers.codex.args | list | [--no-alt-screen] | 传递给 Codex CLI 的额外参数;默认使用 inline TUI 保留浏览器终端滚动历史,自定义时可移除该参数恢复 Codex 的 alternate screen 行为 |
air.providers.qoder.cliPath | string | qodercli | WebUI Qoder Provider 使用的 QoderCLI 路径 |
air.providers.qoder.args | list | [] | 传递给 QoderCLI 的额外参数 |
WebUI 浏览器终端复用
air.providers.<name>。Manual 模式只取cliPath和args;Custom、Event、Resume 模式会额外注入 SIREN MCP、种子 prompt 或恢复会话 ID。它和浏览器 Shell 一样只受 WebUI 全局鉴权保护。
AIR 配置边界
AIR 的 Provider 配置只保留 Provider、prompt、CLI 路径和额外参数;会话并发与重连回放容量分别由 air.maxSessions 和 air.replayBufferBytes 控制。模型、权限、沙箱、普通 Shell 审批等行为由 Claude Code / Codex / Qoder 自身配置决定;Codex Provider 会把 SIREN 注入的 MCP 工具设置为默认允许,Qoder Provider 不会修改全局 Qoder 设置或强制跳过权限确认。旧版 AIR 细分字段和独立的 agentTerminal.* 配置块已移除,残留时不会生效。
v1.x 升级提示
v2.0.0 合并了 MCP 与 WebUI 端口,顶层 mcpPort 字段与 --mcp-port 参数已移除。升级后的配置示例如上,mcpPort 如有残留不会报错但会被忽略。