prometheus 露漏洞整改
目录
prometheus node-exporter pprof调试信息泄露漏洞整改
背景
项目上突然发了一堆的 Go pprof 调试信息泄露漏洞 的问题给我,让我整改,但是我们都是java程序程序,最后定位发现是node-exporter导致的。百度搜索发现这个并不会泄露什么,但是对方是甲方,我们也只能按照整改。
修复方法
之所以这样,是因为打开 http://{node-exporter-ip}:{port}/debug/pprof 的访问链接会出现pprof的信息,我们需要下载相同版本的node-exporter源码,编译后替换对应的node-exporter 程序重启。
克隆代码
# 我的本地运行的是 node-exporter v1.7.0
# 本地虚拟机如果拉取代码一直超时拉取不到,可以把dns改成 8.8.8.8试试
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
git checkout v1.7.0
vim node_exporter.go
# 删除或者注释 _ "net/http/pprof" 这个包然后编译
make build # 编译需要本地提前安装好go环境
替换node-exporter
到这一步其实就不用说了,mv编译好的node-exporter 到服务器上,把原先的mv 成bak,然后重启exporter就可以了
prometheus node-exporter /debug/vars泄漏信息漏洞
背景
同pprof一样,也是国企扫描出来的漏洞
当访问 http://192.168.40.128:9100/debug/vars 这种路径时,可以看到进程信息。
修复方法
# 拉取代码,如果你之前已经拉取了代码,并改了pprof,这里基于原先的改就行,不需要重新拉取
# 本地虚拟机如果拉取代码一直超时拉取不到,可以把dns改成 8.8.8.8试试
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
git checkout v1.7.0
# 因为node-exporter引用了github.com/prometheus/client_golang/prometheus包,而Prometheus包引用了expvar_collector.go,node-exporter本身是没有引用expvar_collector包的。
# 所以需要执行 go mod vendor,把依赖库拉取到本地,然后删除你电脑上所能找到的所有 expvar_collector.go
go mod vendor
# 下面是我本地 expvar_collector.go的所在位置,你们本地的可以 find / -name "expvar_collector.go"查找下
rm -f /root/node_exporter/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
rm -f /root/node_exporter/vendor/github.com/prometheus/client_golang/prometheus/collectors/expvar_collector.go
rm -f /root/go/pkg/mod/github.com/prometheus/client_golang@v1.17.0/prometheus/collectors/expvar_collector.go
rm -f /root/go/pkg/mod/github.com/prometheus/client_golang@v1.17.0/prometheus/expvar_collector.go
编译
# 删除后,make build 编译node-exporter
make build
验证
# 启动编译好的node_exporter
./node_exporter
# 浏览器访问 http://192.168.40.128:9100/debug/vars 确认不再显示
本文来自博客园,作者:liwenchao1995,转载请注明原文链接:https://www.cnblogs.com/liwenchao1995/p/18805816

浙公网安备 33010602011771号