【免费下载链接】traefik-manager
A clean, self-hosted web UI for managing your Traefik reverse proxy.
Traefik Manager 是一个自托管的 Web UI,用于管理 Traefik 反向代理(路由、中间件、证书、日志)。把它部署到公网后,安全加固就成了必修课:本文用一份清单带你完成 Traefik 安全加固——响应 CVE 告警、封堵下划线头部欺骗、强化 ForwardAuth,以及让日志和防火墙规则真正拿到代理链背后的真实客户端 IP。
内置安全:先认识它已经帮你做了什么
在动手之前,先了解 Traefik Manager 默认就提供的防线(详见 docs/security.md):
| 防线 | 说明 |
|---|---|
| 密码存储 | bcrypt cost 12 哈希,明文不落盘 |
| 登录限流 | 每 IP 每分钟 5 次,防暴力破解 |
| 双因素认证 | TOTP 2FA,密钥经 Fernet 加密存储 |
| CSRF 防护 | 所有状态变更接口必须携带 token |
| SSRF 防护 | 出站请求拒绝访问169.254.169.254等云元数据地址 |
记住三条原则:别把 5000 端口直接暴露公网、HTTPS 下设置COOKIE_SECURE=true、开启 2FA。登录与会话的安全设置都在 Settings → Authentication 中完成。
处理 CVE 告警:升级是唯一的解法
Traefik Manager 内置了 Traefik CVE 告警检查:它会把你正在运行的 Traefik 版本与已知安全公告比对,命中时弹出警告;如果检测到配置中正在使用 ForwardAuth 中间件,警告会额外提示"高优先级",因为认证旁路正是攻击者最想打的洞(实现见 static/js/settings.js)。
当前最值得关注的是CVE-2026-39858(CVSS 7.8):攻击者可以用下划线别名转发头(如X_Forwarded_Proto)完全绕过 ForwardAuth 认证。它无法靠配置修复,只能升级 Traefik 到2.11.43 / 3.6.14 / 3.7.0-rc.2 或更新版本。
💡 提示:导航栏的 update-available 徽标会告诉你有新版本 Traefik 可用。看到 CVE 告警,先升级,再谈其他加固。
封堵下划线头部欺骗:Static Config 一键开启
Go(以及 Traefik)把X-Auth-User和X_Auth_User当作两个不同的头。ForwardAuth 中间件只管横杠写法,攻击者塞进来的下划线版本会原样透传;而 PHP、Python WSGI 等后端会把两者合并成同一个变量——认证就这样被绕过了。
修复方式是在入口点设置underscoreHeadersStrategy(需要 Traefik 3.6.20 / 3.7.6+):
| 策略 | 行为 | 建议 |
|---|---|---|
keep | 原样透传下划线头 | 默认值,不建议 |
delete | 静默剥离所有含下划线的请求头 | ✅ 推荐 |
reject | 直接返回400 Bad Request | 最严格 |
操作路径:Settings → Static Config → Entry Points,编辑处理外部 HTTPS 流量的入口点(如websecure),把Underscore Headers设为Delete。改动会合并进现有配置并自动备份,保存后按提示一键重启 Traefik(完整用法见 docs/static.md)。
ForwardAuth 再加固两项:编码字符与响应体限制
如果你的路由上还挂了 ForwardAuth(Authentik、Authelia、Gatekeeper 等),还有两件事要做:
- Encoded Characters 中间件(Traefik 3.7+):拒绝路径中
%2F、%2E这类模糊编码字符,防止绕过基于路径的路由或访问控制。在 Add Middleware 中选择Encoded Characters模板,挂到敏感路由即可。 - ForwardAuth 响应体上限:同样 3.7+,给 ForwardAuth 中间件设置
maxResponseBodySize(几 KB 足够),防止异常认证服务器返回超大响应体。
这两项的详细说明见 docs/hardening.md。
拿回真实客户端 IP:Trusted IPs 助手
网站套了 Cloudflare 之后,最常见的"假故障"是:日志、CrowdSec 封禁、IP 白名单里看到的客户端 IP 全是代理 IP,而不是真实访客。原因是 Traefik 只信任入口点forwardedHeaders.trustedIPs中列出的来源发来的X-Forwarded-For——不配置,真实 IP 就丢了。
Traefik Manager 的 Static Config 头部有一个Trusted IPs引导助手(模板见 templates/modals/trusted_ips_modal.html),四步搞定:
- 选择目标入口点(如
websecure),已配置的信任范围会先展示出来; - 勾选来源:Cloudflare 边缘网段(内置、发布时刷新)、私有网段(
10.0.0.0/8等),或逐行填写自己的代理 IP; - 点Preview change预览将新增的范围(合并是去重且只增不改);
- 点Apply & Save保存并重启 Traefik。
⚠️ 两个要点:
- 每个被信任的网段都能伪造客户端 IP,所以只添加你自己控制的代理;
trustedIPs属于静态配置,全局生效且必须重启 Traefik。
改完别忘了验证:导航栏的network 图标会打开只读的Client IP Diagnostic,展示"应用看到的客户端 IP / 原始 TCP 对端 / 信任跳数 / 原始转发头"。如果你期望公网客户端,却看到私有或回环地址,说明信任配置还有问题(详见 docs/tab-logs.md)。
另外,Traefik Manager 自身的登录限流和审计日志也读X-Forwarded-For:前面每多一层你控制的代理,就把环境变量PROXY_FIX_HOPS加 1(例如 Cloudflare → Traefik → 应用时设为2)。参考 docs/env-vars.md,并记住:只数你实际控制的跳数,设多了等于允许访客伪造来源 IP。
IP 白名单中间件:匹配真实访客而非代理
trustedIPs配置好后,IP Allow List 中间件才谈得上"白名单真实用户"。在 IP Allow List 向导里,Client IP source提供三种模式(模板见 templates/modals/mw_modal.html):
- Direct connection:Traefik 直接暴露时使用;
- trusted hop depth:设置
ipStrategy.depth,等于 Traefik 前面代理的数量; - exclude proxy IPs:设置
ipStrategy.excludedIPs,适合代理自身 IP 会变化的场景。
depth 与 excludedIPs 互斥,二者只能选其一。中间件管理界面与向导说明见 docs/tab-middlewares.md。
安全加固清单:一页速查
| # | 事项 | 位置 |
|---|---|---|
| 1 | Traefik 升级到无 CVE 告警的版本(当前关注 CVE-2026-39858) | 导航栏告警 |
| 2 | 入口点underscoreHeadersStrategy: delete | Settings → Static Config |
| 3 | ForwardAuth 加maxResponseBodySize,敏感路由加 Encoded Characters | 中间件向导 |
| 4 | forwardedHeaders.trustedIPs只加受控代理 | Trusted IPs 助手 |
| 5 | 用 Client IP Diagnostic 验证真实 IP | 导航栏 network 图标 |
| 6 | 代理链每加一层,PROXY_FIX_HOPS加 1 | 环境变量 |
| 7 | 登录开 2FA、HTTPS 下COOKIE_SECURE=true | Settings → Authentication |
| 8 | 启用 git 备份,配置随时可回滚 | Settings → Backups |
按这份清单走完,你的 Traefik Manager 就完成了从"能用"到"经得起扫描"的蜕变。更多细节参考 docs/hardening.md 与 docs/security.md。
【免费下载链接】traefik-manager
A clean, self-hosted web UI for managing your Traefik reverse proxy.
相关推荐
docker-mailserver 反向代理部署指南:基于 Traefik + PROXY Protocol 保留客户端真实 IP
docker mailserver 反向代理部署指南:基于 Traefik + PROXY Protocol 保留客户端真实 IP 导读 将 docker ma
后端通信云原生N_m3u8DL-RE 上手指南:一条命令下载、解密并合并 m3u8 与 mpd 流
N_m3u8DL RE 上手指南:一条命令下载、解密并合并 m3u8 与 mpd 流 N_m3u8DL RE 是一款跨平台的流媒体下载工具,支持 HLS(m3u
CLI音视频Java 安全指南实战:从 Android 客户端到 Web 后台的代码安全编码规范
Java 安全指南实战:从 Android 客户端到 Web 后台的代码安全编码规范 本指南源自开源仓库 代码安全指南 https://link.gitcode
文档应用安全DevSecOps
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考