怎么在 HAProxy 前端启用 Basic Auth 认证保护统计页面?
核心结论:在 HAProxy 的 listen 或 frontend 配置段中添加stats auth参数即可启用 Basic Auth 认证,默认统计页面无认证(no authentication),建议配合stats hide-version隐藏版本信息防止漏洞攻击。
原因分析
HAProxy 自带管理页面功能,通过配置可启用统计接口。根据 2018 年 4 月 2 日的技术文档,如果没有额外设定,HAProxy 会使用默认配置:stats uri /haproxy?stats、stats realm "HAProxy Statistics"、stats auth no authentication。这意味着默认情况下统计页面完全开放,任何能访问该端口的用户都可以查看服务器状态、后端健康情况等敏感信息。
HAProxy 统计页面采用 HTTP Basic 认证方式,认证信息明文传输。根据配置详解文档,stats auth <user>:<passwd>为统计报告启用认证功能,只允许被认证的用户访问统计报告页面。建议启用stats hide-version隐藏 HAProxy 统计报告的版本信息,防止骇客通过 HAProxy 的版本漏洞进行攻击。
解决方案
方案一:在 listen 段独立配置统计页面(推荐)
根据 2017 年 11 月 4 日发布的配置实例,将统计页面配置独立到 listen 段,设置独立监听端口:
listen admin
bind :9090
stats enable
stats uri /hastats
stats auth sunny:123
stats auth tracy:123
stats realm Sunny\ HA
stats hide-version
stats refresh 10s
stats admin if TRUE配置说明:stats auth可设置多个用户,每个用户需单独写一行;stats realm设置认证提示信息;stats refresh 10s设定自动刷新时间间隔为 10 秒;stats admin if TRUE启用管理功能(需 HAProxy 1.4.9 以后版本)。
方案二:在 frontend 段嵌入统计配置
根据 2017 年 7 月 17 日的配置示例,可在现有配置末尾添加统计页面配置:
listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /stats
stats realm XingCloud\ Haproxy
stats auth admin:admin
stats auth Frank:Frank
stats hide-version
stats admin if TRUE访问方式:浏览器访问http://192.168.20.11:1080/stats,用户名 admin,密码 admin。
方案三:使用默认参数快速启用
根据 HAProxy 配置详解文档,统计接口启用相关参数可配置在 frontend 配置段里或独立放到 listen 里。默认值如下:
stats uri:默认值/haproxy?statsstats realm:默认值HAProxy\ Statisticsstats auth:默认值no authentication
最小配置示例:
stats enable stats auth admin:secure_password_2024
注意事项
1. 认证信息明文传输:根据 2018 年 4 月 2 日文档,stats auth 的认证方式为 http basic 认证,明文传输。建议在 HTTPS 环境下使用,或限制访问来源 IP。
2. 刷新间隔设置:2017 年 11 月 4 日的测试反馈指出,统计界面默认是静态的,需要加上刷新间隔才会自动刷新,但不建议设置太短,否则页面来不及设置管理操作。推荐设置为 10-30 秒。
3. 版本隐藏:多个来源(2018 年 4 月 2 日、2017 年 11 月 4 日)均建议启用stats hide-version,防止骇客通过 HAProxy 的版本漏洞进行攻击。
4. 多用户配置:根据配置示例,有多个用户就要写多行stats auth,如stats auth sunny:123和stats auth tracy:123,用户名和密码明文存放在配置文件里,需注意配置文件权限保护。
5. 管理功能版本要求:stats admin if TRUE功能需要 HAProxy 1.4.9 以后版本,早期版本不支持手工启动/禁用后端服务器。
参考来源
来源:CSDN 博客 - haproxy 开启统计页面(2017 年 7 月 17 日收录)
来源:博客园 - HAProxy 之 页面管理配置(2017 年 11 月 4 日发布)
来源:AI 写代码 - haproxy 的统计报告功能(2018 年 4 月 2 日)
来源:博客园 - Haproxy 的安装与配置(截至 2026 年 1 月 31 日)