• Logstash对接 SNMP v2和 v3


    1.前言

    老版的 logstash不支持 snmp协议,当时只能自己写插件实现,现在官方支持了,故进行验证并熟悉其用法。

    环境信息如下

    ​ SNMP(net-snmp)版本:5.7.2

    ​ Logstash版本:7.13.4

    ​ 操作系统:CentOS Linux release 7.9.2009 (Core)

    这里简单提一下,snmp目前有三个版本的协议:v1,v2c,v3。其中 v3是安全性最高的,支持用户名验证和消息加密。

    2.对接 SNMP v2c

    logstash配置文件如下

    input {
      snmp {
    get => ["1.3.6.1.2.1.1.1.0", "1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]     
    hosts => [{host => "udp:192.168.85.101/161" community => "daphnis"}]
      }
    }
    
    output { 
      stdout { codec => rubydebug }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置文件解释

    • get

      值是一个 oid数组,想要获取目标机器上的相应信息,填入对应的 oid即可

      这里简单介绍下这三个 oid的含义:

      • 1.3.6.1.2.1.1.1.0(SNMPv2-MIB::sysDescr.0)

        描述目标机器的 操作系统名称、版本和 CPU架构等硬件信息

      • 1.3.6.1.2.1.1.3.0(DISMAN-EVENT-MIB::sysUpTimeInstance)

        描述目标系统启动后的运行时间

      • 1.3.6.1.2.1.1.5.0(SNMPv2-MIB::sysName.0)

        描述目标机器的主机名称

    • hosts

      host,值里面的含义分别是 协议名称、snmp所在机器IP、snmp所在机器端口号

      community,对应 snmp v2c里面设置好的 团体名

    运行效果

    {
        "iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance" => 127932,
        "@timestamp" => 2022-11-03T18:27:58.396Z,
        "iso.org.dod.internet.mgmt.mib-2.system.sysName.0" => "host101",
        "iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0" => "Linux host101 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64",
        "@version" => "1",
        "host" => "192.168.85.101"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.对接 SNMP v3

    logstash配置文件如下

    input {
      snmp {
      hosts => [{host => "udp:192.168.85.102/161" version => "3"}]
      get => ["1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]
      security_name => "daphnis"
      auth_protocol => "md5"
      auth_pass => "Abcd1234"
      priv_protocol => "des"
      priv_pass => "Abcd1234"
      security_level => "authPriv"
      type => "snmp"
      }
    }
    
    output { 
      stdout { codec => rubydebug }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    配置文件解释

    get、hosts参考第 2节 v2c,v3不同的是多了一个版本号和一些认证信息。认证信息需要根据 snmp的实际配置进行调整,比如 认证协议类型是 md5还是 sha,加密算法是 des还是 aes。

    这里先给一个验证 snmp v3开启成功的原生命令:

    snmpwalk -v3 -udaphnis -lauthPriv -aMD5 -A"Abcd1234" -x"DES" -X"Abcd1234" 192.168.85.102
    
    • 1
    • security_name

      此参数对应 -u,含义是 用户名

    • auth_protocol

      authentication protocol,此参数对应 -a,含义是 认证协议类型,用于验证用户,可选的有 MD5、SHA

    • auth_pass

      此参数对应 -A,含义是 认证协议密码,相当于用户密码,长度至少 8位

    • priv_protocol

      privacy protocol,此参数对应 -x,含义是 隐私协议类型,用于加密消息,可选的有 DES、AES

    • priv_pass

      此参数对应 -X,含义是 隐私协议密码,相当于加密消息时用的秘钥

    • security_level

      此参数对应 -l,含义是 安全等级,可选的有 noAuthNoPriv(无认证无消息加密)、authNoPriv(有认证无消息加密)、authPriv(有认证有消息加密)

    运行效果

    {
        "type" => "snmp",
        "@timestamp" => 2022-11-03T18:55:40.366Z,
        "iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance" => 158930,
        "iso.org.dod.internet.mgmt.mib-2.system.sysName.0" => "host102",
        "@version" => "1",
        "host" => "192.168.85.102"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.总结

    Logstash-7.13.4官方对 SNMP协议的 v2c和 v3支持度不错,配置也比较简单,可以直接使用。

  • 相关阅读:
    python - 第15章 GUI的最终选择 Tkinter
    SpringBoot 4 SpringBoot 整合 Mybatis
    nvide shortcuts table
    13个学习技巧,让你每天进步一点点
    表达矩阵任意两个基因相关性分析 批量相关性分析 tcga geo 矩阵中相关性强的基因对 基因相关性
    GO语言集成开发工具环境JetBrains GoLand 2022
    php对接飞书机器人
    QGIS 用于GIS中的土地退化评估和SDG监测
    【vulhub】PostGresql高权限命令执行漏洞复现(CVE-2019-9193)
    【论文阅读】时序动作检测系列论文精读(2020年)
  • 原文地址:https://blog.csdn.net/Daphnisz/article/details/127684311