LINUX配置SNMP配置

當咱們遇到設備出現故障或須要進行管理時,咱們總要去單獨進入到該設備中去進行操做檢測,這樣既浪費時間又以爲工做量大,snmp協議能夠幫咱們解決這個問題,在衆多的設備和服務器等組成的網絡中,咱們能夠經過在一臺主機上搭建nms服務器經過其餘設備或主機上的agent機制利用snmp協議來完成對整個網絡中的設備的狀態監控,時時刻刻向nms發送trap信息,trap信息反映各設備的及時事件,它就像交通中心同樣,時刻反映給咱們各個設備的運行狀態,方便咱們去管理網絡。linux

 

關於snmp:vim

目前網絡中用得最普遍的網絡管理協議是 SNMP  (Simple  Network  Management Protocol,簡單網絡管理協議)。SNMP  是被普遍接受並投入使用的工業標準,用於保證管理信息在網絡中任意兩點間傳送,便於網絡管理員在網絡上的任何節點檢索信息、修改信息、定位故障、完成故障診斷、進行容量規劃和生成報告。SNMP 採用輪詢機制,只提供最基本的功能集,特別適合在小型、快速和低價格的環境中使用。SNMP 的實現基於無鏈接的傳輸層協議UDP,所以能夠實現和衆多產品的無障礙鏈接。安全

 

工做機制:服務器

SNMP 分爲 NMS 和Agent 兩部分:NMS  (Network Management Station,網絡管理站)是運行客戶端程序的工做站,目前經常使用的網管平臺有QuidView、Sun NetManager 和 IBM NetView。Agent 是運行在網絡設備上的服務器端軟件。NMS 能夠向Agent 發出GetRequest、GetNextRequest 和 SetRequest 報文,Agent接收到 NMS  的這些請求報文後,根據報文類型進行 Read  或 Write  操做,生成Response 報文,並將報文返回給 NMS。Agent 在設備發生異常狀況或狀態改變時(如設備從新啓動),也會主動向 NMS 發送Trap 報文,向 NMS 彙報所發生的事件網絡

SNMP Agent 支持 SNMP v3 版本,兼容 SNMP v1 版本、SNMP v2C版本ide

SNMP v3 採用用戶名和密碼認證方式。網站

SNMP v一、SNMP v2C 採用團體名(Community Name)認證,非設備承認團體名的SNMP 報文將被丟棄。ui

Trap 是被管理設備不經請求,主動向 NMS 發送的信息,用於報告一些緊急的重要事件加密

 

Linux SNMPspa

如下的示例採用CentOS Linux環境,但它一樣適用於其它Linux發行版。

 

編譯和安裝

請使用root帳號或者使用sudo權限安裝,不然會提示權限錯誤。

首先咱們須要下載Net-SNMP的源代碼,請選擇一個相對比較新的SNMP版本,例如5.7.2(當前最新版本),地址以下:

http://nchc.dl.sourceforge.net/project/net-snmp/net-snmp/5.7.2/net-snmp-5.7.2.tar.gz

 

使用wget下載代碼:

root@snmp~# wget http://nchc.dl.sourceforge.net/project/net-snmp/net-snmp/5.7.2/net-snmp-5.7.2.tar.gz


接下來對下載的源代碼包進行解壓縮,以下:

root@snmp~# tar xzvf net-snmp.tar.gz


而後經過源碼的configure來生成編譯的Makefile規則,以下:

root@snmp~# cd net-snmp-5.7.2
root@snmp~# ./configure --prefix=/usr/local/snmp --with-mib-modules=ucd-snmp/diskio -enable-mfd-rewrites

 

請注意參數:

--prefix=/usr/local/snmp
選項,選擇snmp的安裝路徑。

--with-mib-modules=ucd-snmp/diskio
選項,可讓服務器支持磁盤I/O監控。

–enable-mfd-rewrites


選項,容許用新的MFD重寫mid模塊,這樣編譯的snmp就能支持64位的計數器,能正常採集到流量。

SNMP在安裝時須要選擇使用的協議版本,包含三個選項:1,2(for 2c)和3。咱們強烈推薦用戶選擇 3 版本!爲了安全, 1 版本不能添加snmp監控,因此不推薦使用!其餘選項直接跳過就能夠啦。

 

接下來,開始編譯和安裝:

root@snmp~# make
root@snmp~# make install
到如今爲止,咱們已經擁有了能夠運行的SNMP程序,它位於/usr/local/snmp/sbin/snmpd,在啓動它以前,咱們還要進行一些必要的設置。

 

設置安全的驗證方式

將SNMP代理程序暴露給網絡上的全部主機是很危險的,爲了防止其它您不容許的主機訪問你的SNMP代理程序,咱們須要在SNMP代理程序上加入身份驗證機制。

SNMP支持不一樣的驗證機制,這取決於不一樣的SNMP協議版本。

請注意,SNMP協議版本和SNMP程序版本是兩回事,剛纔說的v2c和v3是指SNMP通用協議的版本,而Net-SNMP是實現SNMP協議進行通訊的程序套件,目前它的最新版本是5.7.2。

 

★ v2c

先來看如何配置v2c版本的SNMP配置,2c版本的SNMP配置有兩種配法,在此咱們只介紹最簡單的配置方式,若是想了解更多,請您自行查找。

若是您是按照咱們剛纔教由你的方式進行的手工編譯的SNMP,首先咱們來建立snmpd的配置文件,若是不存在,請在如下目錄建立它以下所示:

root@snmp~# vim /usr/local/snmp/share/snmp/snmpd.conf


而後咱們須要建立一個只讀賬號,也就是read-only community,在snmpd.conf中添加如下內容:

rocommunity yunjiankong default
注意:添加用戶時,請在添加完成後重啓snmp服務,這樣添加纔會成功。同時因爲雲監控可能會變更監測點的IP,到時候就須要從新設置,還請注意

這裏的「rocommunity」表示這是一個只讀的訪問權限,雲監控只能夠從你的服務器上獲取信息,而不能對服務器進行任何設置。

緊接着的「yunjiankong」叫作community,至關於snmp的密碼,不少平臺喜歡使用「public」這個默認字符串。這裏的「yunjiankong」只是一個樣例,請務必將此字符串設置複雜,請不要使用默認的public,咱們的樣例yunjiankong等字串

最右的「default」表明雲監控能訪問您的服務器的SNMP,目前雲主機監控處於不斷迭×××髮狀態,因此咱們暫時還未最終肯定客戶端的固定IP(目前暫有:101.199.100.150(新加入), 220.181.150.98, 180.153.229.230,220.181.150.125, 103.28.10.223。可是會常常變更,還請關注咱們的官方說明)

 

若是想限定指定IP訪問您的SNMP,只須要將default替換成您想要被訪問的IP,多行須要填寫多個:

rocommunity yunjiankong 101.199.100.150
rocommunity yunjiankong 220.181.150.98
rocommunity yunjiankong 180.153.229.230
# 更多IP請按以上格式填寫


因此,以上這段配置中,只有「yunjiankong」是須要你進行修改的(若是指定IP,會在之後會可能須要修改),同時在雲監控上添加服務器並選擇2c版本時,只須要您提供這個字串做爲密碼便可。

 

★ v3

固然,咱們強烈建議您使用v3版原本進行身份驗證。對於一些早期版本的Linux分發版,其內置的SNMP程序可能並不支持v3,因此咱們建議您按照前邊介紹的方法,編譯和安裝最新的Net-Snmp。

v3使用的是另外一種驗證方式,會比v2c版本複雜一些,咱們須要建立一個v3的賬號,咱們一樣修改如下配置文件:

root@snmp~#  vim /usr/local/snmp/share/snmp/snmpd.conf


而後添加一個只讀賬號,以下:

rouser yunjiankong auth
注意:添加用戶時,請確保snmp服務沒有運行,不然沒法添加。

在v3中,「rouser」用於表示只讀賬號類型,隨後的「yunjiankong」是指定的用戶名,後邊的「auth」指明須要驗證。

 

接下來,咱們還要添加「yunjiankong」這個用戶,這就是v3中的特殊機制,咱們打開如下配置文件:

root@snmp~#  vim /var/net-snmp/snmpd.conf


這個文件會在snmpd啓動的時候被自動調用,咱們須要在它裏邊添加建立用戶的指令,以下:

createUser yunjiankong MD5 mypassword
這行配置的意思是建立一個名爲「yunjiankong」的用戶,密碼爲「mypassword」,而且用MD5進行加密傳輸。這裏要提醒的是:

密碼至少要有8個字節

這是SNMP協議的規定,若是小於8個字節,通訊將沒法進行。

 

值得注意的是,一旦snmpd啓動後,出於安全考慮,以上這行配置會被snmpd自動刪除,固然,snmpd會將這些配置以密文的形式記錄在其它文件中,從新啓動snmpd是不須要再次添加這些配置的,除非你但願建立新的用戶。

以上配置中的用戶名、密碼和加密方式,在雲監控添加服務器的時候須要添加。

 

啓動SNMP代理程序

通過配置後,如今能夠啓動snmpd  (最好使用絕對路徑啓動),以下:

/usr/local/snmp/sbin/snmpd
若是要關閉,則能夠直接kill這個進程,以下:

killall -9 snmpd


加強的安全機制

請注意,此步並非必需要進行的步驟,建議若是您瞭解linux網絡防火牆(iptables)才進行設置,不然可能致使您的網站沒法被訪問到。正常狀況下若是不暴露您的服務器ip的狀況下,snmp是很是安全的。

有了以上的驗證機制,你就能夠放心的使用SNMP代理了。可是,若是你的SNMP代理程序版本較低,可能會有一些別有用心的破壞者利用一些固有的漏洞進行破壞,好比發送較長的數據致使SNMP代理程序內存泄漏或者拒絕服務等,爲此,你還可使用防火牆(iptables)來進行加強的安全過濾。

 

在Linux中,咱們用iptables來實現防火牆,通常狀況下,除了流入指定端口的數據包之外,咱們應該將其它流入的IP數據包拋棄。你可能已經配置了必定的防火牆規則,那麼只要增長針對SNMP的規則便可。

 

SNMP代理程序默認監控在udp161端口,爲你的iptables增長如下規則:

iptables -A INPUT -i eth0 -p udp -s 220.181.150.98 --dport 161 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 180.153.229.230 --dport 161 -j ACCEPT
以上設置中假設服務器外網網卡是eth0,你能夠根據實際狀況來修改。

 

這樣一來,只有專用監控器能夠發送UDP數據包到你的服務器的161端口,與SNMP代理程序進行通訊。

 

可使用自建的監控器來監控服務器運行實時狀況,也能夠藉助第三方監控器來監控。

相關文章
相關標籤/搜索