跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何配置Prometheus的TLS与Basic Auth双重鉴权机制加固内网监控物理安全边界

Prometheus需分层配置TLS与Basic Auth双重鉴权:先用OpenSSL生成证书并配置web-config.yml启用TLS加密传输,再通过htpasswd生成密码哈希添加basic_auth_users实现身份认证,同时加固Node Exporter等采集端,并配合物理网络隔离与ACL策略确保内网监控系统安全。

直接配置Prometheus的TLS与Basic Auth双重鉴权,不是叠加两个开关,而是分层落实:TLS保障传输通道加密,Basic Auth控制访问身份。两者配合,能有效守住内网监控系统的物理与逻辑边界,尤其适合隔离区、DMZ或带物理接入限制的机房环境。

一、先启用TLS服务端加密(防窃听与中间人)

在Prometheus自身启动前,必须完成证书准备和web服务层加密配置:用OpenSSL生成自签名证书(生产建议用内网CA签发):openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout prom.key -out prom.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=IT-OPS/CN=prom.internal"将prom.crt和prom.key放入Prometheus配置目录(如/etc/prometheus/)

创建web-config.yml

,声明TLS服务端配置:

tls_server_config:cert_file: /etc/prometheus/prom.crtkey_file: /etc/prometheus/prom.key

启动时显式指定该文件:

--web.config.file=/etc/prometheus/web-config.yml

二、再配置Basic Auth用户认证(防未授权访问)

Basic Auth不替代TLS,而是叠加在已加密的HTTPS连接之上,用于校验操作者身份:用htpasswd或Python bcrypt生成强哈希密码:htpasswd -nBC 12 admin | tr -d ':\n'(输入密码后输出类似$2y$12$...

)

在同一web-config.yml

中追加用户段:

basic_auth_users:admin: $2y$12$...

确保Prometheus版本≥2.24,否则basic_auth_users字段无效重启后,所有HTTP API与Web UI均强制走HTTPS + 用户名/密码校验

三、同步加固采集链路(防指标端点反向渗透)

仅保护Prometheus Server不够——若被监控目标(如Node Exporter)也暴露在内网平面,需同步加固其出口:为Node Exporter启用Basic Auth:启动参数加--web.config.file=node-web.yml,其中含basic_auth_users更新Prometheus的prometheus.yml,在对应job中声明认证方式:basic_auth:username: adminpassword: your_plain_password(注意:此处明文密码仅用于Prometheus主动拉取,不暴露给终端用户)

如目标支持HTTPS,优先改用scheme: https并配置tls_config,与Server端TLS形成端到端可信链

四、物理边界协同建议(非软件配置但关键)

在机房或边缘节点部署时,软件鉴权需与物理策略对齐:Prometheus服务器禁用公网网卡,仅保留内网管理口(如bond0)和专用监控网段(如172.16.100.0/24)

交换机ACL限制:只允许运维跳板机IP、Grafana服务器IP、备份系统IP访问Prometheus 9090端口若使用物理KVM或iDRAC,确保其管理网络与监控网络隔离,避免通过带外通道绕过TLS+Auth定期轮换web-config.yml中的密码哈希值,并记录变更时间戳(可结合Ansible Vault实现自动化)

相关文章