官方博文 | Zabbix通过SNMPv3协议监控网络设备

2021-01-29 17:27:03 浏览数 (1)

何 星

Zabbix 4.0 高级认证专家(ZCP)(点击查看如何认证?)

5年Linux运维经验,4年Zabbix使用经验,活跃的Zabbix在线课程讲师。获得国内第一批Zabbix4.0 ZCS和ZCP认证,同时也是Zabbix培训师候选人。

Zabbix系统中SNMP是最常用的一种监控网络设备的协议,也是一种一体化解决方案,用于监控大量静态(变化缓慢)网络环境中的设备。较早协议版本SNMPv1和SNMPv2有安全漏洞,会被攻击并导致数据泄露。

为了保护敏感数据,我们应该使用SNMPv3协议。我将为您说明:

  1. 如何在Zabbix环境中配置SNMPv3监控网络设备;
  2. 如何创建正确的模板;
  3. 在大型网络环境中搭建一套分布式告警系统后能收获些什么。

一、关于SNMPv3

SNMP协议常用于监控网络设备,以及发送些简单的命令给这些设备,例如:重启设备,启动或禁用网络设备端口。SNMPv3协议和之前版本的区别主要在于安全级别 [1-3]:

  • 认证:判断请求是否可信赖;
  • 加密:如果数据在传输时被拦截,阻止第三方读取数据;
  • 完整:保证数据在传输时没有被篡改。

SNMPv3协议使用安全模型,能够为不同的用户和用户组分配不同的认证策略。当Server向监控设备发起请求时,之前版本的SNMP协议只需要检查团体名,团体名以明文方式传输,可视作密码。

SNMPv3协议引入安全级别用于定义可接受的安全设备设置以及SNMP客户端行为。安全模式和特定级别的组合决定哪一种安全机制将被用于处理SNMP数据包[4]。

SNMPv3 协议中安全模式和级别的组合

级别

认证

加密

说明

不认证不加密

Username

No

仅验证用户名,不推荐使用

认证不加密

Message Digest Algorithm 5 (MD5) or Secure Hash Algorithm (SHA)

No

基于HMAC-MD5或HMAC-SHA方式认证

既认证又加密

MD5 or SHA

Data Encryption Standard (DES) or Advanced Encryption Standard (AES)

基于HMAC-MD5或HMAC-SHA方式认证,并且基于DES或AES(最佳)方式加密

二、如何做

当监控网络设备时,首先在Server和被监控设备上都设置SNMPv3。

01

设置网络设备

通过CLI配置Cisco网络设备

  • 1.为SNMPv3用户定义一个组(snmpv3group),设置权限,有权限访问MIB树的某些分支。
代码语言:javascript复制
snmp-server group snmpv3group v3 priv read snmpv3name
  • 2.定义用户(snmpv3user)、用户组(snmpv3group),和基于MD5的认证方式(设置密码为md5v3v3v3),基于DES的加密方式(设置密码为des56v3v3v3)。
代码语言:javascript复制
snmp-server user snmpv3user snmpv3group v3 auth md5 md5v3v3v3 priv des des56v3v3v3

注意!AES相较于DES加密方式更优,这里只是用于举例。

注意!当定义用户时,访问控制列表(Access Control List )可以仅添加监控该设备的特定Servers的IP地址。

  • 3.为MIB树的某些分支定义代号(snmpv3name),以便用户组(snmpv3group)对其有访问权限。允许用户组(snmpv3group)有权限访问被监控设备的所有MIB对象,而不只是某个单独的分支。
代码语言:javascript复制
snmp-server view snmpv3name iso included

通过CLI配置华为网络设备

代码语言:javascript复制
snmp-agent mib-view included snmpv3name iso
 
snmp-agent group v3 snmpv3group privacy read-view snmpv3name
 
snmp-agent usm-user v3 snmpv3user group snmpv3group
 
snmp-agent usm-user v3 snmpv3user authentication-mode md5
 
md5v3v3v3
 
snmp-agent usm-user v3 snmpv3user privacy-mode des56
 
des56v3v3v3

02

设置访问权限

配置好网络设备后,执行snmpwalk命令验证Server是否可以通过SNMPv3方式访问。

代码语言:javascript复制
snmpwalk -v 3 -u snmpv3user -l authPriv -A md5v3v3v3 -a md5 -x des -X des56v3v3v3 10.10.10.252

可以执行snmpget命令获取特定的对象信息,输出信息更加简洁,snmpget命令依赖于MIB文件。

03

配置SNMPv3类型监控项

在Zabbix模板上配置一个标准的SNMPv3类型监控项,最简单的方式是使用数字形式的OID。

数据元素

用户宏可用于监控项配置中。如果所有的网络设备监控项有相同的SNMPv3参数,那么在模板中定义用户宏,否则在主机级别定义。

模板

注意!用户和密码仅用于认证和加密。用户组和MIB对象访问权限在每台被监控设备上定义。

04

Zabbix数据采集模板

推荐数据采集模板尽可能的详细全面。

数据采集模板

05

配置触发器

Triggers

如果触发器名称中包含{HOST.CONN}系统宏,Dashboard中的告警信息不仅显示设备名称还会显示IP地址。除了用于常规请求,SNMP也可以用于判断设备的可用性。有时一台设备只能响应ICMP请求,可能意味着由于防火墙或SNMP设置的原因,不同的设备有相同的IP地址。如果仅通过ICMP检测设备可用性,那么可能不用获取所有的监控数据排查一条网络事件。

06

网络设备端口自动发现

网络设备端口自动发现是网络设备监控中最重要的一个功能。一台网络设备可能有上百个端口,必须过滤掉不需要的端口,防止数据散乱堆放在数据库中,避免影响数据可视化。标准的SNMP自动发现功能支持多个可发现的参数,提供更加弹性的过滤配置。

代码语言:javascript复制
discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7]

自动发现规则(LLD)

通过网络设备端口的类型、用户描述以及管理状态自动发现端口,并通过这些信息进行过滤。

Filters

正则表达式

所以,未包含的端口类型如下:

  • 端口被手动禁用(adminstatus<>1),IFADMINSTATUS不匹配;
  • 端口没有文本描述信息,IFALIAS不匹配;
  • 文本描述信息包含*字符,IFALIAS不匹配;
  • 服务型或技术型端口,IFDESCR不匹配(在自动发现中应用正则表达式,alias这个正则表达式将检查IFALIASIFDESCR)。

三、监控结果

查看已经获取的网络设备列表:

网络设备列表

为不同系列的网络设备创建模板,在分析监控结果时会更方便,查看信息时根据以下系列分组:

  • 最新的软件;
  • 系列号;
  • 服务器机房看管人的存在(表示较低的运行时长百分比)

网络环境中,不同的模板可以给与不同的视图,例如:

硬件设备序列模板

根据不同级别触发器显示主机问题的Dashboard

如果您为网络环境中的每台网络设备创建了模板,监控系统就能成为预测故障信息的工具,当然您需要有足够的传感器和指标。Zabbix是一款好的网络设备、硬件设备和服务基础设施的解决方案,利用Zabbix维护网络设备证明了该系统的能力。

参考来源:

  1. Hucaby D. CCNP Routing and Switching SWITCH 300-115 Official Cert Guide. Cisco Press, 2014. pp. 325-329.
  2. RFC 3410. https://tools.ietf.org/html/rfc3410
  3. RFC 3415. https://tools.ietf.org/html/rfc3415
  4. SNMP Configuration Guide, Cisco IOS XE Release 3SE. Chapter: SNMP Version 3. https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/snmp/configuration/xe-3se/3850/snmp-xe-3se-3850-book/nm-snmp-snmpv3.html

0 人点赞