简单网络管理协议(SNMP)是常见的一种监控手段,目前snmp定义了三个版本的网络管理协议:SNMP v1,SNMP v2,SNMP v3。SNMP v1,v2有很多共同的特征,SNMP v3 在先前的版本基础上增加了安全和远程配置能力 。
为了解决不同版本的兼容性问题,RFC3584定义了共存策略。目前大多数厂商普遍支持的版本是SNMPv1和v2,但从安全鉴别机制来看,二者表现较差。而SNMPv3采用了新的SNMP扩展框架,安全性较好,所以比较推荐 RFC 2271定义的SNMPv3体系结构,体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点
l)适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求。
2)扩充性好:可以根据需要增加模块。
3)安全性好:具有多种安全处理模块。
SNMPv3主要有三个模块:信息处理和控制模块、本地处理模块和用户安全模块。
(1)信息处理和控制模块
信息处理和控制模块(Message Processing And Control Model)在RFC 2272中定义,它负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。在信息产生过程中,该模块接收来自调度器(Dispatcher)的PDU,然后由用户安全模块在信息头中加入安全参数。在分析接收的信息时,先由用户安全模块处理信息头中的安全参数,然后将解包后的PDU送给调度器处理。
(2)本地处理模块
本地处理模块(Local Processing Model)的功能主要是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息使不同的管理站的管理进程在访问代理时具有不同的权限,它在PDU这一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理的MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语使用来灵活地确定访问控制方式。
(3)用户安全模块
与SNMPv1和SNMPv2相比,SNMPv3增加了三个新的安全机制:身份验证,加密和访问控制。其中,本地处理模块完成访问控制功能,而用户安全模块(User Security Model)则提供身份验证和数据保密服务。身份验证是指代理(管理站)接到信息时首先必须确认信息是否来自有权的管理站(代理)并且信息在传输过程中未被改变的过程。实现这个功能要求管理站和代理必须共享同一密钥。管理站使用密钥计算验证码(它是信息的函数),然后将其加入信息中,而代理则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。
下面简要介绍身份验证和加密的数学工具。SNMPv3使用私钥(privKey)和验证密钥(authKey)来实现这两种功能。
身份验证:RFC2104中定义了HMAC,这是一种使用安全哈希函数和密钥来产生信息验证码的有效工具,在互联网中得到了广泛的应用。
SNMP使用的HMAC可以分为两种:HMAC-MD5-96和HMAC-SHA-96。前者的哈希函数是MD5,使用128位authKey作为输入。后者的哈希函数是SHA-1,使用160位authKey作为输入。
加密:采用数据加密标准(DES)的密码组链接(CBC)码,使用128位的privKey 作为输入。
snmp v3安全级别
snmp v3安全级别有三种,分别为noAuthNoPriv(不认证也不加密)、authNoPriv(认证但是不加密)、authPriv(既认证又加密)
CentOS7下如何配置v3版本snmpd服务
1、CentOS7下配置snmpd服务
可以参考之前的文章CentOS7下安装SNMP服务
代码语言:javascript复制yum install net-snmp net-snmp-utils
systemctl enable snmpd.service
systemctl start snmpd.service
netstat -anp | grep 161
systemctl status snmpd.service
snmpwalk -v 2c -c public 192.168.31.80
2、使用net-snmp-create-v3-user进行snmp v3配置
1)先停止snmpd服务
代码语言:javascript复制systemctl stop snmpd.service
2)使用net-snmp-create-v3-user命令进行snmp v3配置
代码语言:javascript复制
[root@VM_Server ~]# net-snmp-create-v3-user
Enter a SNMPv3 user name to create:
snmpuser
Enter authentication pass-phrase:
snmpv3@2020md5
Enter encryption pass-phrase:
[press return to reuse the authentication pass-phrase]
snmpv3@2020des
adding the following line to /var/lib/net-snmp/snmpd.conf:
createUser snmpuser MD5 "snmpv3@2020md5" DES snmpv3@2020des
adding the following line to /etc/snmp/snmpd.conf:
rwuser snmpuser
[root@VM_Server ~]#
按上面的输出提示可以查看如下两个配置中新增行
代码语言:javascript复制/etc/snmp/snmpd.conf
/var/lib/net-snmp/snmpd.conf
3)启动snmpd服务
代码语言:javascript复制systemctl restart snmpd.service
4)snmpwalk命令验证
代码语言:javascript复制snmpwalk -v3 -usnmpuser -lauth -aMD5 -A"snmpv3@2020md5" -X"snmpv3@2020des" 192.168.31.80
或者用其它snmp客户端工具测试