AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 554038
Accepted
elekgeek
elekgeek
Asked: 2019-11-26 05:02:34 +0800 CST2019-11-26 05:02:34 +0800 CST 2019-11-26 05:02:34 +0800 CST

Zabbix 中的 SNMPv3 陷阱

  • 772

我的问题是关于使用 SNMPv3 的 zabbix 陷阱和使用zabbix_trap_receiver.pl的 snmptrapd 服务。我有一个仅启用了 SNMPv3 的交换机,因此该交换机没有配置 SNMPv1/2c rw或ro社区,并且在修改现有 SNMPv2 模板的漫长旅程之后,我能够将其添加为 zabbix 上的主机。在snmptrapd.conf的zabbix 文档中,添加了如下所示的几行以启用 SNMP 陷阱:

authCommunity execute public
perl do "/usr/bin/zabbix_trap_receiver.pl";

我的问题:

  • 是什么意思authCommunity execute public
  • 我没有配置公共社区,snmptrapd 服务是否能够解密 SNMPv3 陷阱,因为在 wireshark 上我必须定义 SNMPv3 凭据才能显示陷阱数据包内容?
  • 如果没有,我如何在snmptrapd.conf中配置它,以便 perl 脚本可以从 SNMPv3 读取这些陷阱?
  • 在wireshark上,为什么说SNMPv2c陷阱,虽然它被加密为SNMPv3,但我在这里迷路了?
  • 请向我解释启用 SNMPv2 和启用 SNMPv3 时陷阱如何工作?

编辑 我也尝试了以下

createUser -e <engineid> <user> SHA <key> AES <key>
authUser log,execute <user>
perl do "/usr/bin/zabbix_trap_receiver.pl";

但没有运气

perl trap
  • 1 1 个回答
  • 1029 Views

1 个回答

  • Voted
  1. Best Answer
    elekgeek
    2020-01-24T12:13:38+08:002020-01-24T12:13:38+08:00

    snmptrapd 守护进程与陷阱一起工作的方式不允许在不指定发送设备的 EngineID 的情况下接收任何 SNMPv3 陷阱,即,如果您只是在 /etc/snmp/snmptrapd.conf 中执行以下操作:

    createUser snmpv3USER SHA auth_pass AES priv_pass
    authUser log,execute snmpv3USER
    perl do "/usr/bin/zabbix_trap_receiver.pl";
    

    您将永远不会在 /tmp/zabbix_traps.tmp 中获得任何 SNMPv3 陷阱,因为在 /var/lib/net-snmp/snmptrapd.conf 中创建的 usmUser 不满足实际要求,仅此而已..

    当涉及 SNMPv3 通知时,大多数交换机无法发送它们,因此我们只能使用 SNMPv3 陷阱,而 snmptrapd 的编程方式仅适用于 SNMPv3 陷阱的 EngineID。即使我在 snmptrapd.conf 中使用 disableAuthorization yes,如果没有每个发送设备(即交换机设备)的 EngineID,SNMPv3 陷阱也将无法工作。

    现在,为了接收 SNMPv3 陷阱,您需要获取所有交换机的所有 EngineID,为此我编写了一个 python 脚本,以便使用 SNMPv3 构建 snmptrapd.conf,这是一个很大的解脱。实际文件在显示交换机名称和 IP 地址的每个 createUser 行之前都有一个注释。这个 SNMPv3 陷阱信息实际上在 net-snmp 文档中提到过,但是当我第一次阅读它时我无法理解它,因为它说The difference is that SNMPv3 TRAPs use the engineID of the local application sending the trap rather than the engineID of the remote application当你第一次阅读它时你会感到困惑,但是稍微集中一下变得非常清楚:

    SNMPv3 TRAP 在某些方面有点复杂,但如果您花很长时间考虑它,协议以这种方式工作是有道理的。不同之处在于 SNMPv3 TRAP 使用发送陷阱的本地应用程序的引擎 ID,而不是远程应用程序的引擎 ID。这意味着您必须更加小心地在远程用户数据库中创建用户,并且需要为您希望从中发送陷阱的每个 engineID 创建一个。这意味着如果您想让 100 个 snmp 代理向您的陷阱接收器发送 snmpv3 陷阱,您需要在 /var/net-snmp/snmptrapd.conf 文件中添加 100 个 createUser 指令。

    /etc/snmp/snmptrapd.conf 文件如下所示:

    createUser -e 0x800007c703609c9f1eff01 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c703cc4e24e4c6c3 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c703d4c19e743e86 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c70378a6e10ca715 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c70378a6e10c46f0 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c70378a6e121bacd snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c70378a6e121b7d8 snmpv3USER SHA auth_pass AES priv_pass
    createUser -e 0x800007c703609c9f5136f4 snmpv3USER SHA auth_pass AES priv_pass
    
    authUser log,execute snmpv3USER
    perl do "/usr/bin/zabbix_trap_receiver.pl";
    

    该文件比这长得多,但现在我可以从所有交换机接收所有陷阱。我在 stackoverflow 上看到有人在不使用 EngineID 的情况下成功使用 DES,但这是真正的废话,无论是对于 DES 还是对于没有 EngineID 的 AES,它都对我不起作用。这只是在其他监控软件的后台完成的事情,这些软件确实记录了所有设备的引擎ID,用于陷阱接收任务。

    我还注意到来自核心交换机的陷阱是从zabbix所在的vlan的虚拟接口接收的,所以我不得不修改zabbix_trap_receiver.pl脚本如下:

    use NetSNMP::TrapReceiver; # should be added in order to get the script to work, otherwise it fails -- elekgeek 2nd DEC 2019
    # get the host name
            $pdu_info{'receivedfrom'} =~ s/192.168.168.254/192.168.168.1/ig; # I added this line to get the core switch IP instead of zabbix's VLAN SVI IP, otherwise trap is not added to the CORE trap.fallback -- elekgeek 2nd DEC 2019
            my $hostname = $pdu_info{'receivedfrom'} || 'unknown';
            if ($hostname ne 'unknown')
    

    在处理陷阱时,我必须将它们视为历史记录,因此我将 SNMP 陷阱(回退)项从 Type of information=Log 更改为 Type of information=Text in template Template Module Generic SNMPv3。

    祝zabbixing好运!

    • 1

相关问题

  • zabbix_sender 错误

  • cpanm 与 apt 升级

  • 匹配 CSV 文件中的可逆对

  • Perl:可以使用变量替换吗?

  • 如果总和小于特定值,则计算每 2 行的总和并用另一个值替换它们

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve