SNMPv3的安全報頭採用用戶安全模式(USM),其提供具備機密性和完整性的網絡管理通訊。機密性經過採用數據加密標準(DES)來提供。儘管 這一算法以脆弱性著稱(因爲它採用的是40位的密鑰),但與明文community strings相比,它具備顯著的優勢。即便象DES這樣的脆弱算法仍要協同攻擊才能攻破,所以你至少能夠防範偶然的偷聽者。linux
完整性服務通 過散列信息認證碼算法與安全散列功能: MD5 或安全散列算法(SHA-1)之一相結合提供。採用hashes保證了SNMP設備能夠知道信息在傳輸中沒有被更改(或是因爲偶然或者是被惡意更改)。需 要記住的是,仍然有一些懷有惡意的人能夠經過改變暗記文破壞加密通訊的完整性和有效性,使得不能正確地解密。散列完整性提供了一種檢測這種活動的方法。ios
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網絡
1、安裝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學習
2、配置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: net-snmp-coders@lists.sourceforge.net
利用默認的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」指明須要驗證。)加密
3、增長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個字節,通訊將沒法進行。).net
4、運行snmp
# service snmpd start
Starting snmpd: [ OK ]
# chkconfig snmpd on #設置成開機自動運行code
5、檢查服務器運行狀態
# 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裏面添加這臺機器監控她的數據了。
6、以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
7、可能出現問題:頭部顯示SNMP error SNMP Information SNMP error 解決方法: # service snmpd stop # vi /var/net-snmp/snmpd.conf 從新加入: createUser user MD5 mypassword F5刷新一下cacti或者稍等一下