首页 > 编程语言 >node_exporter部署和漏洞修复【非常详细】

node_exporter部署和漏洞修复【非常详细】

时间:2024-12-11 23:32:24浏览次数:11  
标签:node exporter service 漏洞 prometheus yunwei key

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


1. 介绍

  • node_exporter是监控主机所部署的探针程序,需要部署到每台主机上,prometheus端才能对主机进行监控
  • 监控每个应用需要单独安装对应node_exporter,比如node_exporter_mysql是用于监控MySQL指标,本次安装的程序为node_exporter,对主机指标进行监控(cpu、内存之类的)。

2. 安装

  1. 下载Releases · prometheus/node_exporter (github.com)

    在这里插入图片描述

    找到合适的版本下载即可
    下载下来的node_exporter是go语言编译好的可执行程序(类似于Windows系统的.exe文件)可以直接使用,无需再编译安装。

3. 配置为系统服务:

vi /usr/lib/systemd/system/node_exporter.service
---------------------输入内容--------------------------
[Unit]
Description=node_exporter service
[Service]
#User=yunwei
# 默认端口为9100,可以改成其他
ExecStart=/data/node_exporter-1.8.1.linux-amd64/node_exporter --web.listen-address=:9100
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
---------------------输入内容--------------------------

# 启动服务
systemctl start node_exporter.service && systemctl enable node_exporter.service
systemctl status node_exporter.service

4. 开启认证(修复未授权访问问题)

重点来了!!!
在实际生产环境中,使用Prometheus监控必须要考虑安全问题;
有两种方式:

  1. 通过配置主机防火墙,仅允许指定主机的流量通过:临时方案,由于每次增加节点都要调整防火墙配置,过于麻烦!
  2. 开启认证方式:通过账号密码方式加以认证,本文方案

4.1 TLS证书生成

# 执行语句
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout node_exporter.key -out node_exporter.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=Moelove.info/CN=localhost"

——————————————————————————————————————
Generating a RSA private key
...................+++++
.........................................................................................................................................................................................................................................................................+++++
writing new private key to 'node_exporter.key'
——————————————————————————————————————

# 得到node_exporter.crt、node_exporter.key两个文件
ll
——————————————————————————————————————
total 19960
-rw-r----- 1 yunwei yunwei       10 Jul 10  2023 a.sh
drwxrwxrwx 6    201    201     4096 Mar 29  2023 cronolog-1.6.2
-rw-rw-r-- 1 yunwei yunwei   133591 Mar 21  2023 cronolog-1.6.2.tar.gz
-rw-r----- 1 yunwei yunwei       14 Nov 20  2023 g.sh
drwxr-x--- 5 yunwei yunwei      287 May 19  2023 java
-rwxr----x 1 yunwei yunwei 19124796 Jun 18 11:45 node_exporter
drwxr-xr-x 2 yunwei yunwei       56 Nov 30  2022 node_exporter-1.5.0.linux-amd64
-rw-r----- 1 yunwei yunwei     1289 Jul  1 10:37 node_exporter.crt
-rw-r----- 1 yunwei yunwei     1704 Jul  1 10:37 node_exporter.key
drwxr-x--- 3 yunwei yunwei   999424 Oct 23  2023 sgjzfile
-rw-r----- 1 yunwei yunwei       22 Jan 28  2023 ssh.sh
-rw-r--r-- 1 yunwei yunwei     1022 Jun 29  2023 taglib.jsp
——————————————————————————————————————

4.2 basic auth 认证生成

安装 htpasswd 来生成密码 hash

#centos
yum install httpd-tools -y

在 Node_exporter 目录下执行

htpasswd -nBC 12 '' | tr -d ':\n'  


New password: 
# 7T#5pF9!2L
Re-type new password: 
# 7T#5pF9!2L
$2y$12$Yp3MSfhhdCHBpYiK0Yf25unAuCZyiCai.NffOzQLyIuu27EyiZNbq

4.3 编写配置文件

编写配置文件,并保存为 config.yaml (命名随意):

tls_server_config:
  cert_file: /app/yunwei/node_exporter.crt
  key_file: /app/yunwei/node_exporter.key
basic_auth_users:
  # 当前设置的用户名为 prometheus , 可以设置多个
  prometheus: $2y$12$ujLJwPBvmtxElNNTWDUZgOQ8pLjfVkwdH5sKa1VEwp578pGe38OHu

4.4 配置为系统服务

每个节点配置服务:

  • node_exporter.crtnode_exporter.keynode_web_cfg.yaml 三个文件传输到各个主机
[root@x86-wgyunwei-web03 ~]# cat /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter service
After=network.target
After=syslog.target

[Service]
User=yunwei
ExecStart=/app/yunwei/node_exporter --web.config=/app/yunwei/node_web_cfg.yaml
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

4.5 验证

修复效果如下:

# python2
import urllib2
print urllib2.urlopen('http://localhost:9100/metrics').read()

# python3

在这里插入图片描述

前端页面也会显示:Bad Request

4.6 配置到Prometheus

  1. 将前面生成的 node_exporter.crtnode_exporter.key 文件复制到Prometheus路径下

  2. 在Prometheus加入内容

      - job_name: "ng_node_1"  # 任意名字
        scheme: https
        tls_config:
          ca_file: /usr/local/prometheus/node_exporter.crt
          insecure_skip_verify: true
        basic_auth:
          username: prometheus
          password: 7T#5pF9!2L
        static_configs:
          - targets: ["192.168.56.21:9100"]
    
  3. 修改启动参数

    
    
    
    vi /etc/systemd/system/promethues.service
    ------------------------------------------------------
    [Unit]
    Description=promethues
    After=network.target
    
    [Service]
    User=root
    Group=root
    WorkingDirectory=/usr/local/prometheus
    ExecStart=/usr/local/prometheus/prometheus   --web.enable-lifecycle --config.file=/usr/local/prometheus/prometheus.yml
    
    [Install]
    
    ------------------------------------------------------
    
    systemctl daemon-reload
    systemctl restart promethues.service
    systemctl status promethues.service
    
  4. 验证

    status>Target

    在这里插入图片描述

    在这里插入图片描述

    节点状态为up,配置成功

5. pprof漏洞修复

实际上,经过上文步骤4的密码认证加密后,是无法直接访问这个路径,就不会扫描出来这个漏洞。
但现在golang这么火,我们还是学习一下吧!

5.1 漏洞说明

和之前的pprof类似,都是国产的安全工具扫出来的莫名其妙的东西,这次也是报的node-exporter存在这个漏洞,又归我处理。当访问node-exporter的/debug/vars路由时能获取程序的部分运行时信息,如下:

在这里插入图片描述

这是因为在代码中导入了expvar包,只要导入了这个包就会自动的产生 一个/debug/vars路由。

5.2 修复方法

对于node-exporter,本身的代码中是没有引入expvar包的,但是node-exporter引用了github.com/prometheus/client_golang/prometheus包,在prometheus包的expvar_collector.go中有引用expvar包,因此我们要去修改这里。

  1. 下载源码

    node_exporter: Exporter for machine metrics (gitee.com)

    在这里插入图片描述

  2. golang环境配置

    Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)

    选个版本下载.msi文件,安装到指定位置

    在这里插入图片描述

    配置环境变量
    在这里插入图片描述

  3. 下载IDE:liteidex

    下载地址:https://sourceforge.net/projects/liteide/files/X28/

    下载的是最新版 x28二进制包 liteidex28.windows-qt4.zip
    在这里插入图片描述

    解压出来就能用

  4. 编译环境配置

    1. 由于我们用的是win系统进行开发,所以选cross-linux64,交叉编译为linux64执行文件

    在这里插入图片描述

    1. 在工具栏中选择“工具”→“编译当前环境”,初始配置如下:
    #GOBIN=
    GOARCH=amd64
    GOOS=linux
    CGO_ENABLED=0
    
    PATH=%GOROOT%\bin;%PATH%
    
    LITEIDE_GDB=gdb
    LITEIDE_MAKE=mingw32-make
    LITEIDE_TERM=%COMSPEC%
    LITEIDE_TERMARGS=
    LITEIDE_EXEC=%COMSPEC%
    LITEIDE_EXECOPT=/C
    
  5. 删除文件

    文件>打开node_exporter目录

    在这里插入图片描述

    找到并删除expvar_collector.go文件

  6. build

    在这里插入图片描述

  7. 编译成功

    在这里插入图片描述

标签:node,exporter,service,漏洞,prometheus,yunwei,key
From: https://blog.csdn.net/youmiqianyue/article/details/144379385

相关文章

  • #渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(7)-Websocket劫持
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。目录背景websocket劫持案例:websocket劫持Websocket劫持......
  • 腾讯大牛亲授 Web 前后端漏洞分析与防御技巧
    C:\Users\Administrator\Desktop\41、腾讯大牛亲授Web前后端漏洞分析与防御技巧\第1章课程介绍1-2Web安全与技巧强化Web安全实战开发实战私密性 不被非法获取和利用可靠性不丢失不损坏不被篡改Web安全代码层面架构层面运维层面安全问题用户身份被盗用用户密码泄露用......
  • CVE-2019-0708 RDP MSF漏洞利用
    CVE-2019-0708RDPMSF漏洞复现漏洞环境使用VMware安装Windows7X64模拟受害机Windows7X64下载链接:链接:https://pan.baidu.com/s/1A_b2PCbzInKx3hMkUz1xUg提取码:fiwx EXPkalimsf攻击准备:1,metasploit-framework,kalimsf 需更新到最新版本,如果正常打开输......
  • Goby AI 2.0 自动化编写 EXP | Mitel MiCollab 企业协作平台 npm-pwg 任意文件读取漏
    漏洞名称:MitelMiCollab企业协作平台npm-pwg任意文件读取漏洞(CVE-2024-41713)EnglishName:MitelMiCollab/npm-pwgFileReadVulnerability(CVE-2024-41713)CVSScore:6.8漏洞描述:MitelMiCollab是加拿大Mitel公司推出的一款企业级协作平台。该漏洞存在于MiCollab......
  • 大华DSS数字监控系统 attachment_downloadAtt.action 任意文件下载漏洞复现
    0x01产品描述:        大华DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。0x02漏洞描述:        大华DSS数字监控系统attachment_downloadAtt.action接口存在任意文件读取漏洞,未经身份......
  • node-serverLess
    serverLess什么是serverLessServerless,即无服务器计算。然而Serverless不是不再需要服务器,而是公司或开发者不用过多考虑服务器的问题,计算资源仅作为一种服务而不再以物理硬件的形式出现。serverLess优势可用性冗余,以便单个机器故障不会导致服务中断冗余副本的地理分布,以......
  • nodejs长字符串RSA加解密解决方法
            为了让项目数据在前后端交互过程中不被拦截破解,在项目中使用RSA对数据进行加解密,同时考虑到交互数据过大情况,于是想到将数据在加密前先进行压缩,解密后在解压的思路。        基于nodejs代码进行测试,得到了验证。constNodeRSA=require('node-rsa')......
  • Node.js版本管理工具之NVM的安装使用教程
    一、NVM介绍在工作中,不同的项目可能需要不同NodeJS版本,所以维护多个版本比较麻烦,因此NVM(node.jsversionmanagement)应运而生,顾名思义它是一个nodejs的版本管理工具,它可以多版本node并存,轻松切换node版本,下面就开始介绍他的安装配置及使用。二、NVM的下载安装1、NVM下载安......
  • 深度剖析零日漏洞:原理、危害与防范策略
    在当今数字化时代,网络安全已成为各个领域关注的焦点。而零日漏洞,作为网络安全领域中极具威胁性的存在,犹如一颗隐藏在暗处的定时炸弹,随时可能引发严重的网络安全危机。零日漏洞,指的是那些被发现后立即被恶意利用,而软件厂商或安全社区还未发布补丁或修复措施的安全漏洞。其产......
  • 解决 Mac(M1/M2)芯片,使用node 14版本
    前言nvm在安装Node.jsv14.21.3时,报错:nvminstall14Downloadingandinstallingnodev14.21.3...Downloadinghttps://nodejs.org/dist/v14.21.3/node-v14.21.3-darwin-arm64.tar.xz...curl:(56)TherequestedURLreturnederror:404Binarydownloadfromhttps:/......