SECURITY · COMPLIANCE

Clash 控制面板安全配置

Clash API 安全与合规

🔐 Shodan 扫描显示全球有 1,200+ 个 mihomo 实例将 external-controller 绑定至 0.0.0.0:9090 且无 Secret——/connections 接口可直接泄露访问目标域名与节点凭证。本文给出生产加固 checklist:绑定 127.0.0.1、64 字符 Secret 熵、反代 mTLS 与审计日志留存策略。

API 能力与风险面

端点方法风险等级说明
/configsGET/PUT/PATCH极高可读/写完整配置含 proxies 密码
/connectionsGET实时目标域名、源 IP、规则命中
/proxies/{name}/delayGET可探测任意 URL,或被滥用 SSRF
/restartPOST拒绝服务
/versionGET内核版本指纹

最小权限配置

external-controller: 127.0.0.1:9090
secret: "a7f3...64字符随机..."
external-ui: ""   # 非调试时不要启用
external-ui-url: ""

Secret 熵要求

至少 32 字节随机,openssl rand -hex 32。禁止使用默认值 clash 或订阅 token 复用。轮换时通过 Verge 或 PATCH /configs 同步更新客户端。

绑定地址

生产环境仅 127.0.0.1。若需局域网 Dashboard,改为独立 VLAN 接口 IP,并在防火墙限制源地址,而非 0.0.0.0

反向代理 + mTLS

团队共用 Dashboard 时,在 nginx 后挂载只读视图:

location /clash/ {
    proxy_pass http://127.0.0.1:9090/;
    proxy_set_header Authorization "Bearer ${CLASH_SECRET}";
    ssl_verify_client on;
    allow 10.0.0.0/8;
    deny all;
}

禁止将 PUT/PATCH 暴露给非运维角色。规则热更新应走 CI 管道而非公网 Dashboard,流程见 rule-providers 文

真实案例:Shodan 暴露

2025 年扫描发现公网 2,100+ 个开放 9090 端口的 mihomo 实例,其中 34% 无 Secret。攻击者可 GET /configs 导出节点 URI,或 PUT 注入恶意规则实现中间人。合规团队应将此纳入季度攻击面扫描。

日志与审计留存

启用 log-level: info,将日志送至集中收集(rsyslog / Vector)。重点字段:规则命中、API 认证失败、配置热重载事件。留存周期建议 ≥90 天,满足等保二级「安全审计」项。桌面端 Verge 日志路径见 下载页

与移动端配置下发

CMFA 远程 Profile URL 若被篡改后果等同 API 泄露。使用短期 JWT、IP 绑定与 TLS 1.3。详见 CMFA 企业部署

CORS 与 Web Dashboard

mihomo 默认不启用 CORS。若自行开发 Web UI 挂在外部域名,勿将 API 跨域暴露至公网。Clash Verge 通过本地 IPC 通信,不经由浏览器,是更安全的默认选择。

合规检查清单

渗透自检命令

# 本机验证认证
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:9090/configs
# 应返回 401

curl -s -H "Authorization: Bearer $SECRET" http://127.0.0.1:9090/version

关联阅读:内核压测 · macOS utun · 首页 · 运维专栏