怎么在 HAProxy 前端启用 Basic Auth 认证保护统计页面?

文章导读
在 HAProxy 的 listen 或 frontend 配置段中添加stats auth参数即可启用 Basic Auth 认证,默认统计页面无认证(no authentication),建议配合stats hide-version隐藏版本信息防止漏洞攻击。
📋 目录
  1. A 原因分析
  2. B 解决方案
  3. C 注意事项
  4. D 参考来源
A A

怎么在 HAProxy 前端启用 Basic Auth 认证保护统计页面?

核心结论:在 HAProxy 的 listen 或 frontend 配置段中添加stats auth参数即可启用 Basic Auth 认证,默认统计页面无认证(no authentication),建议配合stats hide-version隐藏版本信息防止漏洞攻击。

原因分析

HAProxy 自带管理页面功能,通过配置可启用统计接口。根据 2018 年 4 月 2 日的技术文档,如果没有额外设定,HAProxy 会使用默认配置:stats uri /haproxy?statsstats 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 前端启用 Basic Auth 认证保护统计页面?

方案三:使用默认参数快速启用

根据 HAProxy 配置详解文档,统计接口启用相关参数可配置在 frontend 配置段里或独立放到 listen 里。默认值如下:

  • stats uri:默认值/haproxy?stats
  • stats realm:默认值HAProxy\ Statistics
  • stats 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 的版本漏洞进行攻击。

怎么在 HAProxy 前端启用 Basic Auth 认证保护统计页面?

4. 多用户配置:根据配置示例,有多个用户就要写多行stats auth,如stats auth sunny:123stats 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 日)