SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信。机密性通过采用数据加密标准(DES)来提供。尽管 这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文community strings相比,它具有显著的优点。即使象DES这样的脆弱算法仍要协同攻击才能攻破,因此你至少可以防范偶然的偷听者。
完整性服务通过散列信息认证码算法与安全散列功能: MD5 或安全散列算法(SHA-1)之一相结合提供。采用hashes保证了SNMP设备可以知道信息在传输中没有被更改(或是由于偶然或者是被恶意更改)。需 要记住的是,仍然有一些怀有恶意的人可以通过改变暗记文破坏加密通信的完整性和有效性,使得不能正确地解密。散列完整性提供了一种检测这种活动的方法。
SNMPv3的USM还允许基于用户的认证和接入控制。与以往SNMP采用两级“读”和“写”community string不同,管理员可以为每一个SNMP用户建立特别帐号,并根据这些用户帐号授予权限。例如,你可以给操作员监视设备状态的权限,但是将修改的权 限保留给网络工程师。由于增加了用户行为的可靠性从而对系统的安全产生了重要的影响。它同时简化了将一个用户排除于系统之外的过程,而不需要再重新配置所 有的SNMP设备。
但是,不是所有的网络设备都支持SNMPv3。如果你使用一些较老的设备,不支持这些安全功能,你可以采取以下两步。首先,联系供货商。在现有的售 后支持合同中你可能可以得到支持SNMPv3的软件或固件升级。此外,如果你不能利用SNMPv3内置的安全功能,寻找一些其它的提供相似安全功能的附加 软件。例如,你可以采用IPSec或其它加密技术以保证在设备之间的SNMP通信的安全性。在不支持SNMPv3的设备上很难(可能是不可能的)实现所有 的SNMPv3的功能,但是有加密总会好些。
下面是介绍snmpv3在通过net-snmp在linux下的配置方法,希望对大家的工作学习有所帮助。
系统版本:
#
uname -a
Linux linux01 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:23:01 EDT 2011 i686 i686 i386 GNU/Linux
一、安装snmp
#
yum install -y net-snmp net-snmp-utils
通过网络安装则自动下载并安装以下的4个包,如果不连接外网,可以挂在linux光盘,设置本地源安装。
Total download size: 2.6 M
Downloading Packages:
(1/4): net-snmp-utils-5.3.2.2-9.el5_5.1.i386.rpm | 186 kB 00:00
(2/4): lm_sensors-2.10.7-9.el5.i386.rpm | 511 kB 00:00
(3/4): net-snmp-5.3.2.2-9.el5_5.1.i386.rpm | 697 kB 00:00
(4/4): net-snmp-libs-5.3.2.2-9.el5_5.1.i386.rpm | 1.3 MB 00:00
二、配置snmp
#
rpm -qa net-snmp #查看安装包
net-snmp-5.3.2.2-9.el5_5.1
#
rpm -ql net-snmp #查看安装路径
/etc/logrotate.d/snmpd
/etc/rc.d/init.d/snmpd
/etc/rc.d/init.d/snmptrapd
/etc/snmp
/etc/snmp/snmpd.conf
/etc/sysconfig/snmpd.options
/etc/sysconfig/snmptrapd.options
...
...
#
snmpd -v #查看版本
NET-SNMP version: 5.1.2
Web: http://www.net-snmp.org/
Email:
[email protected]
利用默认的snmp.conf配置文档做简要修改:(非主流)
#
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
#
vi /etc/snmp/snmpd.conf
输入:
rouser user auth
保存退出
(v3c的验证方式,添加一个只读帐号,如下:rouser user auth 上面 添加帐号的意思是:在v3c中,“rouser”用于表示只读帐号类型,随后的“user”是指定的用户名,后边的“auth”指明需要验证。)
三、增加snmp用户
需要创建user这个用户,我们需要这个文件:/var/net-snmp/snmpd.conf,这个文件会在snmpd启动的时候被自动调用, 由于此时我们还没有运行snmp,所以手动创建这个文件,命令如下:
# mkdir /var/net-snmp
# touch /var/net-snmp/snmpd.conf
#
vi /var/net-snmp/snmpd.conf
输入:
createUser user MD5 mypassword
保存退出
(这行配置的意思是创建一个名为 “user”的用户,密码为“mypassword”,并且用MD5进行加密传输。这里要提醒的是,密码至少要有8个字节,这是SNMP协 议的规定,如果小于8个字节,通信将无法进行。)
四、运行snmp
#
service snmpd start
Starting snmpd: [ OK ]
#
chkconfig snmpd on #设置成开机自动运行
五、检查服务器运行状态
#
service snmpd status
snmpd (pid 4167) is running...
#
netstat -anup | grep 161 #161是snmp服务端口。
udp 0 0 0.0.0.0:161 0.0.0.0:* 4167/snmpd
现在我们可以在cacti或者nagios里面添加这台机器监控她的数据了。
六、以cacti为例,需要填入资料
SNMP Version:version3
SNMP Username (v3):user
SNMP Password (v3):mypassword
SNMP Auth Protocol (v3):md5
SNMP Privacy Passphrase (v3):留空
SNMP Privacy Protocol (v3):none
七、可能出现问题:头部显示SNMP error
SNMP Information
SNMP error
解决方法:
#
service snmpd stop
#
vi /var/net-snmp/snmpd.conf
重新加入:
createUser user MD5 mypassword
F5刷新一下cacti或者稍等一下