数字化技能提升教程,数字化时代生存宝典

监控系统上线前安全加固指南

浏览:35

Prometheus、Grafana以及各类Exporter组件能够帮助运维人员实时监控服务器状态、分析系统性能,但同时也会暴露部分服务器、应用及容器运行信息。

在测试环境中,为方便调试和截图展示,部分服务可能会临时开放端口;但在正式生产环境上线前,必须对监控系统进行安全加固,限制访问范围,避免因监控接口暴露导致服务器信息泄露或安全风险。

本文整理Prometheus、Grafana及相关Exporter组件上线前的安全检查项,帮助确保监控系统安全稳定运行。


一、加固目标

监控系统涉及多个服务组件,包括:

  • Prometheus
  • Grafana
  • Node Exporter
  • Blackbox Exporter
  • Nginx Exporter
  • cAdvisor
  • MySQL Exporter
  • Alertmanager

这些组件默认会开放HTTP访问接口,其中部分页面会直接展示服务器资源、服务状态、容器信息等敏感数据。

例如 Prometheus Targets 页面会展示当前监控目标及内部服务信息:

Prometheus Targets

image

因此,生产环境中不建议直接将Prometheus及Exporter服务暴露到公网。

上线前需要重点检查:

  • 服务监听地址是否合理;
  • 公网访问权限是否限制;
  • 登录认证是否完善;
  • 敏感信息是否可能泄露;
  • 配置文件及Dashboard是否完成备份。


二、当前涉及端口

当前监控系统涉及端口如下:

服务 端口
Grafana 3000
Prometheus 9090
Node Exporter 9100
Blackbox Exporter 9115
Nginx Exporter 9113
cAdvisor 18081
MySQL Exporter 9104
Alertmanager 9093

其中:

  • Grafana主要用于数据展示;
  • Prometheus负责指标采集与存储;
  • Exporter负责采集服务器、应用及数据库指标。

生产环境建议根据实际需求开放访问权限,不要默认开放所有端口。


三、Grafana安全加固

Grafana登录页面:

Grafana 登录页

image

上线前需要检查:

  • 默认管理员密码是否修改;
  • 是否关闭匿名访问;
  • 是否限制公网访问来源;
  • 是否配置HTTPS;
  • Dashboard是否完成备份。

建议配置:

  • 使用高强度管理员密码;
  • 限制登录来源IP;
  • 通过Nginx反向代理访问;
  • 配置HTTPS证书;
  • 定期备份Dashboard JSON文件。


四、Prometheus安全加固

Prometheus默认情况下没有完善的身份认证机制,因此不建议直接暴露公网。

建议:

  • 仅监听本机或内网地址;
  • 通过SSH隧道进行临时访问;
  • 或通过带认证机制的反向代理访问。

生产环境中建议:

公网用户
   ↓
Nginx反向代理(认证)
   ↓
Prometheus

避免直接访问:

公网 → Prometheus:9090


五、Exporter安全加固

Exporter的metrics接口会返回大量系统信息,例如:

  • CPU使用率;
  • 内存状态;
  • 磁盘信息;
  • 网络状态;
  • 数据库运行状态;
  • 容器信息。

以下端口不建议直接暴露公网:

Exporter 端口
Node Exporter 9100
Nginx Exporter 9113
Blackbox Exporter 9115
MySQL Exporter 9104
cAdvisor 18081

建议:

仅允许Prometheus服务器访问Exporter:

Prometheus服务器 → Exporter

禁止:

公网 → Exporter


六、Nginx状态页安全

Nginx stub_status状态页会暴露连接数、请求量等运行信息。

建议仅监听本机:

listen 127.0.0.1:8080;

allow 127.0.0.1;
deny all;

不要直接将Nginx状态页暴露到公网。


七、Docker安全

Docker daemon不要开放未认证TCP API。

避免:

tcp://0.0.0.0:2375

直接暴露Docker管理接口。

同时,cAdvisor拥有较高权限,可以读取:

  • 容器运行状态;
  • 容器资源使用情况;
  • 部分宿主机信息。

建议:

  • 限制cAdvisor访问来源;
  • 不允许公网直接访问。

Docker Dashboard:

Docker Dashboard

image


八、MySQL安全

MySQL Exporter建议使用最小权限账号,避免使用root账号采集数据。

示例:

GRANT PROCESS, REPLICATION CLIENT, SELECT 
ON *.* 
TO 'prometheus'@'localhost';

本次配置使用socket认证方式,没有在文章中记录数据库密码。

MySQL Dashboard:

MySQL Dashboard

image


九、Alertmanager安全

Alertmanager后续接入通知渠道时,会涉及敏感信息,例如:

  • Webhook地址;
  • 机器人Token;
  • 邮箱密码;
  • 企业微信密钥;
  • 钉钉密钥。

注意:

  • 不要截图展示密钥;
  • 不要将密钥写入公开文档;
  • 配置文件设置最小权限;
  • 定期更换Token。


十、上线前备份清单

正式上线前建议完成以下备份:

/etc/prometheus/prometheus.yml

/etc/prometheus/rules/

/etc/grafana/provisioning/datasources/

/etc/default/prometheus-*

Grafana Dashboard JSON

安装脚本及配置脚本

确保出现异常时可以快速恢复。

相关文章
猜你喜欢