以下配置均在openSUSE 11.2上通過測試:
一. 添加SNMPv3帳號;
1. 首先添加一個擁有讀寫權限的帳號到/etc/snmp/snmpd.conf, 加入一行 rwuser anhonyjiang, 表示是一個擁有讀寫權限的帳號。
2. 修改/var/lib/net-snmp/snmpd.conf文件, 加入一行createUser anthonyjiang SHA aaaaaaaa AES bbbbbbbb。 該文件中的說明
#
# net-snmp (or ucd-snmp) persistent data file.
#
############################################################################
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
#
# **** DO NOT EDIT THIS FILE ****
#
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
############################################################################
#
# DO NOT STORE CONFIGURATION ENTRIES HERE.
# Please save normal configuration tokens for snmpd in SNMPCONFPATH/snmpd.conf.
# Only "createUser" tokens should be placed here by snmpd administrators.
# (Did I mention: do not edit this file?)
注釋中說明了只有createUser語句應該放置在這個地方。 另外, 認證和加密方式默認均需要在8個字符以上, 所以選擇了aa...和bb....
3. service snmpd start;啟動SNMP服務
4. snmpget -v3 -l authPriv -u anthonyjiang -a SHA -A aaaaaaaa -x AES -X bbbbbbbb localhost sysLocation.0
SNMPv2-MIB::sysLocation.0 = STRING: Chengdu
通過snmpget獲取的信息。
如果不想每次都輸入這麼多信息, 可以在$HOME/.snmp/snmp.conf目錄文件中配置默認的帳號、認證方式和加密方式等等, 如下:
pensuse-laptop:~/.snmp # cat $HOME/.snmp/snmp.conf
defVersion 3
defSecurityName anthonyjiang
defSecurityLevel authPriv
defAuthType SHA
defAuthPassphrase aaaaaaaa
defPrivType AES
defPrivPassphrase bbbbbbbb
這樣, 就可以只輸入snmpget localhost sysDescr.0 來獲取結果。
二 訪問控制
1. 添加只有讀權限的帳號
2. 基於視圖的訪問控制
三 其他操作
1. 遠程重新載入配置snmpd.conf和遠程重啟
如果在本機, 可以通過service snmpd reload或者kill -HUP $(cat cat /var/run/snmpd.pid)重新載入配置。 如果不在本機, 可以通過snmpset命令進行,前提是執行該命令的用戶對agent擁有寫權限, 如下:
snmpset localhost UCD-SNMP-MIB::versionUpdateConfig.0 = 1
UCD-SNMP-MIB::versionUpdateConfig.0 = INTEGER: 1
snmpset localhost UCD-SNMP-MIB::versionRestartAgent.0 = 1
UCD-SNMP-MIB::versionRestartAgent.0 = INTEGER: 1