SNMP概述

SNMP是標準的簡單網路管理協定,已經被無數的設備用來作為監控協定,並且工作地非常可靠。監控專家就是透過SNMP來幫助您遠端監控伺服器效能。

監控專家對於SNMP的身份驗證支援v2c和v3。我們提供了多項安全設定建議,包括v3的加密身份驗證以及防火牆的保護。只需要您按照我們的指引來設定SNMP,您完全可以放心的使用SNMP。

為保證順利安全的進行伺服器效能監控,請在建立監控項目前安裝設定好SNMP。下面舉例說明SNMP在不同伺服器中的安裝設定方法,請根據您使用的伺服器選擇查看的內容:

在Linux伺服器(SUSE10)中安裝設定SNMP代理

在Linux伺服器(CentOS)中安裝設定SNMP代理

在Linux伺服器(Ubuntu)中安裝設定SNMP代理

在Windows伺服器(Windows Server 2003)中安裝設定SNMP代理


在Linux伺服器(SUSE10)中安裝設定SNMP代理

本部分以SUSE10 Linux環境為例,介紹Linux伺服器中SNMP的安裝設定方法。

1、安裝Net-SNMP

1)首先需要下載Net-SNMP的原始程式碼,選擇一個版本,比如5.7.1,位址如下:

http://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.1/

2)下載原始程式碼後,透過如下命令解壓縮安裝包:

tar xzvf net-snmp-5.7.1.tar.gz

3)透過configure來產生編譯規則,命令如下:

cd net-snmp-5.7.1./configure --prefix=/usr/local/snmp --with-mib-modules=ucd-snmp/diskio

上述命令中的“--with-mib-modules=ucd-snmp/diskio”選項,可以讓伺服器支援磁碟I/O監控。

4)透過如下命令編譯和安裝Net-SNMP:

make
make install

5)至此,我們已經完成了SNMP代理的安裝,它位於/usr/local/snmp/sbin/snmpd下。

2、設定Net-SNMP

在啟動Net-SNMP前,還需要進行一些必要的安全設定。因為將SNMP代理程序洩漏給網路上的所有主機是很危險的,為了防止其它主機訪問您的SNMP代理程序,需要在SNMP代理程序上加入身份驗證機制。

不同的SNMP協定版本支援不同的驗證機制,監控專家目前支援v2c和v3兩個版本。其中v2c版本的驗證機制比較簡單,它基於明碼密碼和授權IP來進行身份驗證,而v3版本則透過帳號名稱和密碼的加密傳輸來實現身份驗證。

我們建議使用v3,當然,只要按照以下的介紹進行設定,不論是v2c版本還是v3版本,都可以保證一定的安全性,用戶可以根據情況來選擇。

注意一點,SNMP協定版本和SNMP代理程序版本是兩回事,剛才說的v2c和v3是指SNMP協定的版本,而Net-SNMP是用來實現SNMP協定的程序套件。

1)設定v2c版本的SNMP代理

預設情況下snmpd的設定檔案是不存在的,需要手動建立,命令如下:

vi /usr/local/snmp/share/snmp/snmpd.conf

在snmpd.conf中新增以下內容來建立一個唯讀帳號,也就是read-only community:

rocommunity cloudeye 60.250.234.116
# 如果您使用的是採集器,此處的IP應該是安裝採集器的伺服器的IP

注意:新增用戶時,請確保snmp服務沒有執行,否則無法新增。

說明:

  • Rocommunity:表示這是一個唯讀的訪問權限,監控專家只可以從您的伺服器上獲取資訊,而不能對伺服器進行任何設定。

  • cloudeye:相當於密碼,很多平臺喜歡使用“public”這個預設字串。這裡只是舉個例子,您可以設定其它字串作為密碼。

  • 60.250.234.116:代表指定的監控點IP,這些IP位址是監控專家專用的監控點,這意味著只有監控專家有權限來訪問你的SNMP代理程序。

注意:如果您使用的是採集器,IP位址應該是安裝採集器的伺服器的IP。

所以,以上這段設定中,只有“cloudeye”是需要您進行修改的,同時在監控專家中建立伺服器監控時,需要提供這個字串。

2)設定v3版本的SNMP代理

我們建議用戶使用v3版本來進行身份驗證。對於一些早期版本的Linux分發版,其內置的SNMP代理程序可能並不支援v3,所以我們建議您按照前面介紹的方法,編譯和安裝最新的Net-Snmp。

v3支援另一種驗證方式,設定過程如下:

① 建立一個v3的帳號,我們同樣修改以下設定檔案:

vi /usr/local/snmp/share/snmp/snmpd.conf

② 新增一個唯讀帳號,命令如下:

rouser cloudeye auth

注意:新增用戶時,請確保snmp服務沒有執行,否則無法新增。

在v3中,“rouser”表示唯讀帳號類型,“cloudeye”是指定的帳號名稱,“auth”表示需要驗證。

③ 新增“cloudeye”這個用戶,這就是v3中的特殊機制,打開以下設定檔案:

vi /var/net-snmp/snmpd.conf

這個檔案會在snmpd啟動的時候被自動調用,我們需要在它裡邊新增建立用戶的指令,如下:

createUser cloudeye MD5 mypassword

這行設定的意思是建立一個名為“cloudeye”的用戶,密碼為“mypassword”,並且用MD5進行加密傳輸。這裡的帳號名稱、密碼和加密方式,在監控專家中建立伺服器監控時需要提供。

這裡要提醒的是:密碼至少要有8個位元組,這是SNMP協定的規定,如果小於8個位元組,通信將無法進行。

需要注意的是,一旦啟動snmpd,出於安全考慮,以上這行設定會被snmpd自動刪除。當然,snmpd會將這些設定以密文的形式記錄在其它檔案中,重新啟動snmpd是不需要再次新增這些設定的,除非你希望建立新的用戶。

3、啟動SNMP代理程序

SNMP代理程序的服務名稱為snmpd,設定完成後啟動SNMP代理程序,直接啟動snmpd即可,命令如下:

/usr/local/snmp/sbin/snmpd

如果要關閉SNMP代理程序,則可以直接kill這個程序,命令如下:

Killall-9 snmpd

4、增強的安全機制

有了以上的驗證機制,就可以放心的使用SNMP代理了。但是,如果您的SNMP代理程序版本較低,可能會有別有用心的破壞者利用一些固有的弱點進行破壞,比如發送較長的數據導致SNMP代理程序記憶體洩漏或者拒絕服務等。為此,您還可以使用防火牆(iptables)來增強安全過濾。

在Linux中,我們用iptables來實現防火牆。一般情況下,除了流入指定通訊埠的數據封包以外,我們應該將其它流入的IP數據封包拋棄。您可能已經設定了一定的防火牆規則,那麼只要增加針對SNMP的規則即可。

SNMP代理程序預設監控在udp161通訊埠,為iptables增加以下規則:

iptables -A INPUT -i eth0 -p udp -s 60.250.234.116 --dport 161 -j ACCEPT
# 如果您使用的是採集器,此處的IP應該是安裝採集器的伺服器的IP

以上設定中假設伺服器外網網卡是eth0,您可以根據實際情況來修改。

這樣一來,只有監控專家的專用監控器可以發送UDP數據封包到您伺服器的161通訊埠,與SNMP代理程序進行通信。


在Linux伺服器(CentOS)中安裝設定SNMP代理

本部分以CentOS環境為例,介紹Linux伺服器中SNMP的安裝設定方法。

1、安裝Net-SNMP

CentOS及其它RedHat系列產品提供了net-snmp的二進制包,我們可以直接從源裡安裝,命令如下:

shell> yum install net-snmp net-snmp-devel net-snmp-utils

說明:net-snmp-devel是為了使用net-snmp-config,net-snmp-utils是為了使用snmpwalk。

2、設定Net-SNMP

在啟動Net-SNMP前,為了防止其它主機訪問您的SNMP代理程序,需要在SNMP代理程序上加入身份驗證機制。

1)V2c驗證方法

這裡需要修改一個設定檔案,首先需要清空snmpd.conf這個檔案,接著需要寫入設定資訊,命令如下:

shell>> /etc/snmp/snmpd.conf
shell>> vim/etc/snmp/snmpd.conf
rocommunity public 127.0.0.1
rocommunity public 192.168.1.1
rocommunity public 192.168.1.2
# 如果您使用的是採集器,以下IP應該是安裝採集器的伺服器的IP
rocommunity public 60.250.234.116

注意:請將192.168.1.1 替換為被監控伺服器的IP,public可替換為您希望的字串。

需說明的是,預設的設定檔案裡會有一些權限控制的設定,如果您有這個需求,請自行參考CentOS的man檔案。

2)V3驗證方法

有些CentOS環境下的net-snmp無法在selinux環境下正常使用v3。如果您想使用snmp v3,請先停用selinux。

使用如下命令建立一個snmpv3用戶(權限為唯讀,加密方式為MD5,帳號名稱為cloudeye,密碼為snmp@cloudeye):

shell> net-snmp-config --create-snmpv3-user -ro -A snmp@cloudeye -a MD5 cloudeye

執行之前請先停用net-snmp服務,否則無法新增,命令如下:

shell> service snmpd stop

3、執行Net-SNMP

執行 Net-SNMP 服務的方法比較簡單,Net-SNMP服務名為snmpd,直接啟動snmpd即可,命令如下:

shell> service snmpd start

您可能需要把它加入開機自動執行服務列表,命令如下:

shell> chkconfig snmpd on

4、檢測Net-SNMP

啟動Net-SNMP後,需要檢測snmp服務是否正常開啟。

1)V2c版本檢測

使用如下命令查看161UDP通訊埠是否打開:

shell>netstat –antupl

然後在另外任意一臺機器上執行如下命令(請將commity換成您自己的字串,tartget_ip換為被監控伺服器的IP):

shell>snmpwalk -v2c –ccommity target_ip

如果出現長串數字,則說明mib沒有安裝好。

2)V3版本檢測

我們可以使用snmpwalk來檢測snmp服務是否正常開啟,命令如下:

shell> snmpwalk -v 3 -u cloudeye -a MD5 -A "snmp@cloudeye" -l authNoPriv 127.0.0.1 sysDescr

如果一切正常,就會返回正常結果。有關snmpwalk的參數說明,請參見CentOS的man檔案。

5、設定防火牆

除身份驗證,您還可以使用防火牆(iptables)來增強安全過濾。

1)V2c設定

通常我們使用iptables,請確定iptables對設定檔案中的機器IP沒有做訪問限制,使用如下命令查看:

shell>iptables -L -n

使用如下命令允許UDP的161通訊埠:

shell>iptables -I INPUT -p udp --dport 161 -j ACCEPT

2)V3設定

Net-SNMP使用udp協定的161通訊埠,同時我們會從以下IP訪問您的伺服器:

  • 60.250.234.116

如果您使用的是內網採集器,我們會從安裝採集器的伺服器訪問您的伺服器。

一個可能的設定檔案是:

-I INPUT -p udp -s 60.250.234.116 --dport 161 -j ACCEPT

說明:以上只是一個可能的設定。請您在寫之前明白每一句話的含義,而不是直接複製。


在Linux伺服器(Ubuntu)中安裝設定SNMP代理

本部分以Ubuntu環境為例,介紹Linux伺服器中SNMP的安裝設定方法,主要包括以下四步:

1、安裝SNMP

安裝SNMP時需要安裝snmpd和snmp兩個安裝包,安裝規則如下:

  • snmp,需要安裝在安裝了採集器的伺服器上。

  • snmpd,需要安裝在被監控的伺服器上。

  • 安裝了採集器的伺服器需要監測自己時,兩個安裝包都需要安裝。

安裝之前,需要查看/etc/apt目錄下的sources.list檔案,確認安裝源中是否有multiverse這個欄位,例如:

deb http://hk.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

如果有,直接安裝;如果沒有需要手動新增,更新後再執行安裝,命令如下:

apt-get update
#請根據需要選擇安裝哪個安裝包
apt-get install snmp snmpd

2、設定並重啟SNMP

重啟SNMP前,為了防止其它主機訪問您的SNMP代理程序,需要在SNMP代理程序上加入身份驗證機制。

1)V2c驗證方法

需要修改3個設定檔案,首先分別清空snmp.conf和snmpd.conf這2個檔案,再設定snmpd.conf這個檔案,命令如下:

shell>> /etc/snmp/snmp.conf;> /etc/snmp/snmpd.conf
shell>vim/etc/snmp/snmpd.conf
rocommunity public 127.0.0.1
# 如果您使用的是採集器,以下IP應該是安裝採集器的伺服器的IP
Rocommunity public 60.250.234.116

如果您的/etc/default/snmpd中含有127.0.0.1字樣,需要去掉127.0.0.1。

需說明的是,預設的設定檔案裡會有一些權限控制的設定,如果您有這個需求,請自行參考Ubuntu的man檔案。

2)V3驗證方法

使用如下命令建立一個snmpv3用戶(權限為唯讀,加密方式為MD5,帳號名稱為cloudeye,密碼為snmp@cloudeye):

shell> net-snmp-config --create-snmpv3-user -ro -A snmp@cloudeye -a MD5 cloudeye

3)重啟Net-SNMP

設定完成後需重啟SNMP,命令如下:

shell>/etc/init.d/snmpd restart

3、驗證Net-SNMP

啟動SNMP後,需要檢測snmp服務是否正常開啟。

1)V2c版本檢測

使用如下命令查看161UDP通訊埠是否打開:

shell>netstat –antupl

然後在另外任意一臺機器上執行如下命令(請將commity換成您自己的字串,tartget_ip換成被監控伺服器的IP):

shell>snmpwalk -v2c –ccommity target_ip

如果出現長串數字,則明說mib沒有安裝好。

2)V3版本檢測

我們可以使用snmpwalk來檢測snmp服務是否正常開啟,命令如下:

shell> snmpwalk -v 3 -u cloudeye -a MD5 -A "snmp@cloudeye" -l authNoPriv 127.0.0.1 sysDescr

如果一切正常,就會返回正常結果。有關snmpwalk的參數說明,請參見Ubuntu的man檔案。

4、設定防火牆

除身份驗證,您還可以使用防火牆(iptables)來增強安全過濾。

1)V2c設定

通常我們使用iptables,請確定iptables對設定檔案中的機器IP沒有做訪問限制,使用如下命令查看:

shell>iptables -L -n

使用如下命令允許UDP的161通訊埠:

shell>iptables -I INPUT -p udp --dport 161 -j ACCEPT

2)V3設定

Net-SNMP使用udp協定的161通訊埠,同時我們會從以下IP訪問您的伺服器:

  • 60.250.234.116

如果您使用的是內網採集器,我們會從安裝採集器的伺服器訪問您的伺服器。

一個可能的設定檔案是:

-I INPUT -p udp -s 60.250.234.116 --dport 161 -j ACCEPT

說明:以上只是一個可能的設定。請您在寫之前明白每一句話的含義,而不是直接複製。


在Windows伺服器(Windows Server 2003)中安裝設定SNMP代理

本部分以Windows Server 2003為例,介紹Windows伺服器中SNMP的安裝設定方法。其它Windows伺服器產品的設定方法類似。

SNMP包括服務端和用戶端,安裝規則如下:

  • 安裝了內網採集器的伺服器需要安裝用戶端

  • 被監測的伺服器需要安裝服務端

  • 安裝了內網採集器的伺服器需要監測自己時,需要安裝用戶端和服務端。

1、安裝SNMP服務端

首先您必須確認目前的Windows元件中是否已經安裝了SNMP協定,方法如下:

在控制面板中選擇“新增或移除程式”,在打開的對話框中選擇“新增/移除Windows元件”查看已安裝的Windows元件,如下圖所示。

查看“Management and Monitoring Tools”的詳細資訊,檢查是否安裝“Simple Network Management Protocol(SNMP)”,如下圖所示。

如果沒有安裝,則選取SNMP元件進行安裝,安裝期間您可能需要指定Windows安裝磁碟。

2、設定服務端

SNMP件安裝成功後,在開始選單中選擇“系統管理工具→服務”,如下圖所示。

在打開的對話框中找到SNMP Service,安裝SNMP協定後,SNMP Service會預設啟動,如下圖所示。

需要注意的是,SNMP Trap Service是不需要開啟的,如果它已被開啟,請將其關閉。

雙擊SNMP Service設定其屬性,在打開的對話框中選擇“安全”選項,設定接受的群體名稱並指定接受SNMP數據封包的主機,如下圖所示。

1)設定接受的群體名稱

群體名稱就是前面介紹過的SNMP v2c版本中的密碼字串,public只是一個例子,您可以填寫其它字串。

在監控專家中建立伺服器監控項目時,選擇2c協定後在 Community輸入框中填寫這個群體名稱即可。

2)指定接受SNMP數據封包的主機

選擇“接受來自這些主機的SNMP數據封包”來指定主機。

  • 使用內網採集器收集數據時,新增您的內網採集器所在伺服器的IP位址,採集器需要具有訪問這臺伺服器SNMP的權限。

  • 不使用內網採集器時,新增監控專家的SNMP監控器IP位址: 60.250.234.116。

3、啟動服務端

設定完成後,確認SNMP Service已經開啟即可。如果以後重啟了伺服器,請檢查是否開啟了SNMP Service。當然,如果該服務被關閉,監控專家會在伺服器監控視圖中提醒您。

4、安裝用戶端

安裝了採集器的伺服器需要安裝用戶端,即Net-SNMP,下載位址為:

http://jaist.dl.sourceforge.net/project/net-snmp/net-snmp%20binaries/5.6.1.1-binaries/net-snmp-5.6.1.1-1.x86.exe

如果上面位址失效,請到http://www.net-snmp.org/download.html下自行查找。

1459932004586914.png 預設安裝就可以,請不要改變安裝目錄。

5、驗證是否可以正常獲取數據

在安裝了採集器的伺服器中,打開cmd視窗並執行如下命令:

snmpwalk -v2c -c public target_ip(請將target_ip換成您被監測機器的IP)

能夠正常獲取數據時,顯示如下圖所示的內容。

6、設定防火牆

另外,還要確保您的伺服器已經打開了SNMP Service的通訊埠,預設為UDP161。如果您啟用了系統防火牆,則需要新增這個例外通訊埠。

打開“網路連線(區域連線)→內容→進階→防火牆→例外”,新增通訊埠即可(在安裝測試中,建議先關閉其他的防火牆,以排除干擾因素),如下圖所示。