Linux平臺下snmp服務的安裝和配置

黃三每丘八發表於2018-09-10
snmp是用來監控伺服器執行狀態的一種服務。

部署監控系統的時候需要用到,比如zabbix,當然,也可以直接用ssh來進行驗證監控,但也會有一些安全性的問題。


安裝

yum install net-snmp
snmp版本有v1、v2、v3三個級別可以選擇
一般預設就會使用v1或者v2,不過這兩個安全性較低,只有通過一個共同體名來進行驗證,不過我們可以通過IP來進行限制。
v3級別可以設定使用者名稱和密碼才能進行監控。

v1/v2配置
vim /etc/snmp/snmpd.conf
需要改動的地方一般也就下面四個地方:
1.1)
# sec.name source community
com2sec notConfigUser default public
#sec.name(別名):用在下面配置的組中,用來賦予許可權,是隻讀還是讀寫
#source(來源)是允許哪個地址來連線你的snmp,default預設是允許任何主機來連線。如果寫一個IP是隻允許 192.168.1.110這個地址來連線,如果你需要使用一個網段的話,那麼就可以這麼寫了192.168.1.0/24。
#community是共同體的名稱,你用client連線snmp使用的,相當於密碼

1.2)
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
#定義一個組名(groupName)這裡是 notConfigGroup,及組的安全級別
notConfigUser就是前面定義的使用者別名,把這個使用者加到這個組中。

1.3)
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

snmp預設配置只能檢視.1.3.6.1.2.1.1和.1.3.6.1.2.1.25.1.1節點下的裝置資訊,而主機CPU和記憶體等裝置都不在這些節點下,所以無法獲取這些資料。

定義一個可操作的範圍(view)名, 這裡是 all,範圍是 .1

incl/excl:對下面的MIB子樹是包括還是排除。
subtree:檢視中涉及的MIB子樹。
mask:掩碼

1.4)
# group context sec.model sec.level prefix read write notif
access notConfigGroup “” any noauth exact systemview none none

定義 notConfigUser 這個組在 all 這個 view 範圍內可做的操作,這時定義了 notConfigUser 組的成員可對.1這個範圍做只讀操作。

context:上下文,v1、v2c中始終為空。
sec.model:安全模式,可選值為v1/v2c/usm。
sec.level:安全級別,可選值為auth/noauth/priv,v1、v2c中只能為noauth。
prefix:字首,指定context如何與PDU中的context匹配,v3使用。
read:授權的讀檢視。
write:授權的寫檢視。
notif:授權的trap檢視。

配置範例:

1
2
3
4
5
6
7
8
9
com2sec HAIBING 192.168.0.1 haibingzl4Flf3sfs
 
group notConfigGroup v2 HAIBING
 
view all included .1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
 
access notConfigGroup "" any noauth exact all none none

啟用服務:

1
2
#service snmpd start
#chkcofnig snmpd on

測試:可以到192.168.0.1和其它電腦上進行測試一下:

1
#snmpwalk -v 2c 192.168.0.2 -c haibingzl4Flf3sfs sysName.0

如果能獲取到主機名,就說明配置成功了。

v3級別的設定
先把/etc/snmp/snmpd.conf裡的配置都註釋掉,要不然啟用snmp服務後,v1/v2也啟用了,而且沒有設定任何限制的。

新增一個只讀賬戶(如root),建立一個密碼(如12345678)密碼最少8位,並以MD5加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#service snmpd stop    需先停止服務
#net-snmp-create-v3-user -ro -A 12345678 -a MD5 root
 
執行後會在/etc/snmp/snmpd.conf新增欄位:
rouser root
 
還會在/var/lib/net-snmp/snmpd.conf中新增欄位:
createUser root MD5 "12345678" DES
 
開啟服務:
service snmpd start
 
/var/lib/net-snmp/snmpd.conf裡面的欄位:
createUser root MD5 "12345678" DES   會被轉化為加密狀態
變成為
usmUser .........
 
 
在遠端測試:
#snmpwalk -v 3 -u root -a MD5 -A "12345678" -l authNoPriv 192.168.0.1 sysName.0
 
 
 net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]
                          [-a MD5|SHA] [-x DES|AES] [username]
-a 後的md5和sha是認證方式
-x 後的des和aes是加密方式
兩者不同是-a後的認證方式不可解密逆轉只可用來做認證
-x後的加密可被解密出原來的資料。
v3版本的本身就是更安全的版本所以認證加密是肯定要有的。
 
如果啟用snmp服務的主機有開啟防火牆,需要放行161埠
iptables -I INPUT -p udp --dport 161 -j ACCEPT


相關文章