Welcome 微信登录

首页 / 操作系统 / Linux / 如何在Ubuntu ,CentOS和Cisco系统中配置SNMPv3 ?

简单网络管理协议(SNMP)是一种广泛使用的协议,用于收集设备内部正在进行中的信息。比如说,CPU和RAM的使用率,服务器的负载率,网络接口的流量状态,和的设备的很多其他性能都可以用SNMP来查询。当前,SNMP有3个版本:v1, v2c and v3。SNMP v1和v2c,可方便地进行配置,这在以前的文章中讨论过。SNMPv3增加了一些额外的功能,包括身份验证和加密方案(例如,MD5,SHA,AES和DES)。这使得我们在Internet上运行SNMP查询时,SNMPv3的更安全,更可取的。同SNMP v1或v2c 相比,SNMPv3的配置有一点不同。下面详细解释了配置是如何进行的。

在Ubuntu和Debian配置SNMPv3

使用net-snmp-config tool工具进行配置。下面的例子中创建了一个只读权限的SNMPv3账户,用户名为“snmpv3user”密码为“snmpv3pass”。 默认身份验证方法是MD5加密,默认DES使用。这些设定也可根据需要改变。root@server:~# apt-get install snmp snmpd
root@server:~# service snmpd stop
root@server:~# net-snmp-config --create-snmpv3-user -ro -A snmpv3pass snmpv3user## OUTPUT ##adding the following line to /var/lib/snmp/snmpd.conf:  createUser snmpv3user MD5 "snmpv3pass" DESadding the following line to /usr/share/snmp/snmpd.conf:  rouser snmpv3userroot@server:~# service snmpd start

SNMPv3测试

使用snmpwalk测试SNMP的配置。成功的测试结果应当有大量的输出数据。下面的例子使用上文建立的V3账户演示了snmpwalk 的使用。Ubuntu和Debian的本地服务器IP地址192.168.1.1。### SAMPLE OUTPUT ### iso.3.6.1.2.1.1.1.0 = STRING: "Linux server 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64"iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10iso.3.6.1.2.1.1.3.0 = Timeticks: (68028) 0:11:20.28iso.3.6.1.2.1.1.7.0 = INTEGER: 72iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.2.1.49iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.4iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.6.3.16.2.2.1iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB."iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB for Message Processing and Dispatching."iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The management information definitions for the SNMP User-based Security Model."iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities"iso.3.6.1.2.1.1.9.1.3.5 = STRING: "The MIB module for managing TCP implementations"iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing IP and ICMP implementations"iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing UDP implementations"iso.3.6.1.2.1.1.9.1.3.8 = STRING: "View-based Access Control Model for SNMP."iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00### And the walk goes on and on ###

删除SNMPv3账户

当net-snmp-config tool 运行过程中,该账户的有关信息会存储在var/lib/snmp/snmpd.conf 和/usr/share/snmp/snmpd.conf.两个文件之中。删除账户即删除这个文件中的信息即可。root@server:~# service snmpd stop
root@server:~# vim /var/lib/snmp/snmpd.conf## there should be a similar encrypted line that contains information on the user #### this line is removed ##usmUser 1 3 0x80001f8880056e06573a1e895100000000 0x736e6d7076337573657200 0x736e6d7076337573657200 NULL .1.3.6.1.6.3.10.1.1.2 0x945ed3c9708ea5493f53f953b45a4513 .1.3.6.1.6.3.10.1.2.2 0x945ed3c9708ea5493f53f953b45a4513 ""root@server:~# vim /usr/share/snmp/snmpd.conf## The following line is removed ## rouser snmpv3user之后不要忘记重启snmpdroot@server:~# service snmpd start

在CentOS或者RHEL中配置SNMPv3

相比Ubuntu,在 CentOS 和 RHEL中配置SNMP v3用户的过程有点不同,但基本是相同的。首先,使用yum安装必要的软件[root@server ~]# yum install net-snmp-utils net-snmp-devel安装完成之后, 先停止snmpd,再创建具有只读属性的SNMP 账户。 .[root@server ~]# service snmpd stop[root@server ~]# net-snmp-create-v3-user -ro -A snmpv3pass -a MD5 -x DES snmpv3user## OUTPUT ##adding the following line to /var/lib/net-snmp/snmpd.conf:  createUser snmpv3user MD5 "snmpv3pass" DESadding the following line to /etc/snmp/snmpd.conf:  rouser snmpv3user[root@server ~]# service snmpd start

SNMPv3测试

snmpwalk 是测试SNMP配置和输出出色的工具。成功的测试结果应当有大量的输出数据。[root@server ~]# snmpwalk -u snmpv3user -A snmpv3pass -a MD5 -l authnoPriv 192.168.1.2 -v3### OUTPUT ###SNMPv2-MIB::sysDescr.0 = STRING: Linux server.example.tst 2.6.32-71.el6.i686 #1 SMP Fri Nov 12 04:17:17 GMT 2010 i686SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (28963) 0:04:49.63SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBComplianceSNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBComplianceSNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIBSNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIBSNMPv2-MIB::sysORID.6 = OID: IP-MIB::ipSNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIBSNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroupSNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entitiesSNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementation## and the output continues ##

删除SNMPv3账户

SNMPv3 账户信息被包含在两个文件之中。删除账户即删除这个文件中的信息即可。root@server:~# service snmpd stoproot@server:~# vim /var/lib/net-snmp/snmpd.conf## there should be a similar encrypted line that contains information on the user #### this line is removed ##usmUser 1 3 0x80001f8880056e06573a1e895100000000 0x736e6d7076337573657200 0x736e6d7076337573657200 NULL .1.3.6.1.6.3.10.1.1.2 0x945ed3c9708ea5493f53f953b45a4513 .1.3.6.1.6.3.10.1.2.2 0x945ed3c9708ea5493f53f953b45a4513 ""root@server:~# vim /etc/snmp/snmpd.conf## The following line is removed ##  rouser snmpv3userroot@server:~# service snmpd start

防火墙调节(可选)

下面的例子中的防火墙规则可以被用于限制被允许进行SNMP查询的源IP地址。两个IP地址(例如,192.168.1.100/101)被置于白名单中。root@server:~# iptables -A INPUT -s 192.168.1.100/32 -p udp –dport 161 -j ACCEPT
root@server:~# iptables -A INPUT -s 192.168.1.101/32 -p udp –dport 161 -j ACCEPT
root@server:~# iptables -A INPUT -p udp –dport 161 -j DROP

思科交换机和路由器配置SNMPv3

思科交换机和路由器同样支持SNMPv3。下面的例子将创建一个访问控制列表(ACL)限制允许做SNMP查询的源IP地址。但是,这步被跳过了。

设置访问控制列表(ACL)(可选)

## global config mode ##
ip access-list standard SNMP_ACL
permit 192.168.1.100
permit 192.168.1.100

SNMPv3 配置

下面的配置创建一个名为v3Group与认证AuthNoPriv安全级别v3的组。前面定义的可选访问列表也支持设定。## global config mode ##
## With ACL ##
snmp-server group v3Group v3 auth access SNMP_ACL
 
## Without ACL ##
snmp-server group v3Group v3 auth用户v3user被创建并添加在v3Group下。 MD5的密码和AES加密密钥也被定义。snmp-server user v3user v3Group v3 auth md5 snmpv3pass priv aes 128 snmpv3pass

SNMPv3测试

SNMP用户和相关组可以在Cisco设备中查看### privileged EXEC mode ##
show snmp userUser name: v3userEngine ID: ************************storage-type: nonvolatile        activeAuthentication Protocol: MD5Privacy Protocol: AES128Group-name:  v3Group任何Linux设备中的snmpwalk的都可以用来验证配置和检查输出。snmpwalk -u snmpv3user -A snmpv3pass -a MD5 -l authnoPriv 192.168.1.3 -v3iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS Software”Technical Support: http://www.cisco.com/techsupportCopyright (c) 1986-2012 by Cisco Systems, Inc.iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.1166iso.3.6.1.2.1.1.7.0 = INTEGER: 78iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00iso.3.6.1.2.1.2.1.0 = INTEGER: 54iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3## output truncated ##希望以上的教程对大家有所帮助。在Ubuntu 14.04上配置SNMPv3  http://www.linuxidc.com/Linux/2014-10/108511.htmSNMP实现网络动态分析 http://www.linuxidc.com/Linux/2013-04/83514.htmSNMP实现网络状态监控 http://www.linuxidc.com/Linux/2013-04/83187.htmCentOS 6.3下搭建SNMP测试环境 http://www.linuxidc.com/Linux/2013-02/79233.htmLinux (Ubuntu/CentOS) SNMP配置 http://www.linuxidc.com/Linux/2012-12/76837.htm开启并配置Citrix Xenserver的SNMP服务 http://www.linuxidc.com/Linux/2013-01/78487.htm更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2作者:zaixianliyun 想了解作者请访问linux公社Linux公社原创翻译频道:http://www.linuxidc.com/topicnews.aspx?tid=15本文永久更新链接地址