linux 安裝開啟SNMP協議,最下面是yum安裝


Linux SNMP

以下的示例采用SUSE10 Linux環境,但它同樣適用於其它Linux發行版。

編譯和安裝

首先我們需要下載Net-SNMP的源代碼,選擇一個版本,比如5.7.1,地址如下:

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

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

suse10:~ # tar xzvf net-snmp-5.7.1.tar.gz

然后通過configure來生成編譯規則,如下:

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

注意,以上的

--with-mib-modules=ucd-snmp/diskio

選項,可以讓服務器支持磁盤I/O監控。

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

suse10:~ # make
suse10:~ # make install

到現在為止,我們已經有了可以運行的SNMP代理程序,它位於/usr/local/snmp/sbin/snmpd,在啟動它之前,我們還要進行一些必要的設置。

設置安全的驗證方式

將SNMP代理程序暴露給網絡上的所有主機是很危險的,為了防止其它主機訪問你的SNMP代理程序,我們需要在SNMP代理程序上加入身份驗證機制。SNMP支持不同的驗證機制,這取決於不同的SNMP協議版本,監控寶目前支持v2c和v3兩個版本,其中v2c版本的驗證機制比較簡單,它基於明文密碼和授權IP來進行身份驗證,而v3版本則通過用戶名和密碼的加密傳輸來實現身份驗證,我們建議使用v3,當然,只要按照以下的介紹進行配置,不論是v2c版本還是v3版本,都可以保證一定的安全性,你可以根據情況來選擇。

注意一點,SNMP協議版本和SNMP代理程序版本是兩回事,剛才說的v2c和v3是指SNMP協議的版本,而Net-SNMP是用來實現SNMP協議的程序套件,目前它的最新版本是剛才提到的5.4.2.1。

v2c

先來看如何配置v2c版本的SNMP代理,我們來創建snmpd的配置文件,默認情況下它是不存在的,我們來創建它,如下:

suse10:~ # vi /usr/local/snmp/share/snmp/snmpd.conf

然后我們需要創建一個只讀帳號,也就是read-only community,在snmpd.conf中添加以下內容:

# rocommunity jiankongbao 60.195.249.83 自2012年2月21日起,此ip不再使用
rocommunity jiankongbao 60.195.252.107
rocommunity jiankongbao 60.195.252.110
# 如果您使用的是插件 此處的ip 應該安裝采集器的機器的ip

注意:添加用戶時,請確保snmp服務沒有運行,否則無法添加。

注意,這里的“rocommunity”表示這是一個只讀的訪問權限,監控寶只可以從你的服務器上獲取信息,而不能對服務器進行任何設置。

緊接着的“jiankongbao”相當於密碼,很多平台喜歡使用“public”這個默認字符串。這里的“jiankongbao”只是一個例子,你可以設置其它字符串作為密碼。

最右邊的“60.195.249.83,60.195.252.107,60.195.252.110”代表指定的監控點IP,這些IP地址是監控寶專用的監控點,這意味着只有監控寶有權限來訪問你的SNMP代理程序。

所以,以上這段配置中,只有“jiankongbao”是需要你進行修改的,同時在監控寶上添加服務器的時候,需要提供這個字符串。

v3

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

v3支持另一種驗證方式,需要創建一個v3的帳號,我們同樣修改以下配置文件:

suse10:~ # vi /usr/local/snmp/share/snmp/snmpd.conf

然后添加一個只讀帳號,如下:

rouser jiankongbao auth

注意:添加用戶時,請確保snmp服務沒有運行,否則無法添加。

可以看到,在v3中,“rouser”用於表示只讀帳號類型,隨后的“jiankongbao”是指定的用戶名,后邊的“auth”指明需要驗證。

接下來,我們還要添加“jiankongbao”這個用戶,這就是v3中的特殊機制,我們打開以下配置文件:

suse10:~ # vi /var/net-snmp/snmpd.conf

這個文件會在snmpd啟動的時候被自動調用,我們需要在它里邊添加創建用戶的指令,如下:

createUser jiankongbao MD5 mypassword

這行配置的意思是創建一個名為“jiankongbao”的用戶,密碼為“mypassword”,並且用MD5進行加密傳輸。這里要提醒的是:

密碼至少要有8個字節

這是SNMP協議的規定,如果小於8個字節,通信將無法進行。

值得注意的是,一旦snmpd啟動后,出於安全考慮,以上這行配置會被snmpd自動刪除,當然,snmpd會將這些配置以密文的形式記錄在其它文件中,重新啟動snmpd是不需要再次添加這些配置的,除非你希望創建新的用戶。

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

啟動SNMP代理程序

經過配置后,現在可以啟動snmpd,如下:

/usr/local/snmp/sbin/snmpd

如果要關閉,則可以直接kill這個進程,如下:

killall -9 snmpd

增強的安全機制

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

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

SNMP代理程序默認監控在udp161端口,為你的iptables增加以下規則:

# iptables -A INPUT -i eth0 -p udp -s 60.195.249.83 --dport 161 -j ACCEPT 自2012年2月21日起,不再使用
iptables -A INPUT -i eth0 -p udp -s 60.195.252.107 --dport 161 -j ACCEPT iptables -A INPUT -i eth0 -p udp -s 60.195.252.110 --dport 161 -j ACCEPT

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

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

CentOS SNMP

 

安裝 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。

配置 Net-SNMP

在筆者的試驗環境下,CentOS下的net-snmp無法在selinux環境下正常使用v3。 如果您想使用snmp v3,請先禁用selinux。

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

以上命令,創建一個snmpv3用戶,只讀,使用MD5,用戶名為jiankongbao,密碼為snmp@jiankongbao。

注意:運行之前請先停用net-snmp服務。

shell> service snmpd stop

運行 Net-SNMP

運行 Net-SNMP 服務的方法比較簡單,不過Net-SNMP服務的名字是snmpd。

shell> service snmpd start

您可能需要把它加入開機自動運行服務列表。

shell> chkconfig snmpd on

檢測 Net-SNMP

我們可以使用 snmpwalk 來檢測snmp服務是否正常開啟。

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

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

配置 防火牆

Net-SNMP 使用 udp 協議,161端口。 同時,我們會從以下三個IP訪問您的服務器。

  • 60.195.249.83 自2012年2月21日起,不再使用
  • 60.195.252.107
  •   60.195.252.110

一個可能的配置文件是:

## -I INPUT -p udp -s 60.195.249.83 --dport 161 -j ACCEPT
-I INPUT -p udp -s 60.195.252.107 --dport 161 -j ACCEPT
-I INPUT -p udp -s 60.195.252.110 --dport 161 -j ACCEPT

說明:以上只是一個可能的配置。請您在寫之前明白每一句話的含義,而不是直接復制。要不然如果這里異常的出現

-I INPUT -j DROP

時,您就只能哭着罵我了,嘻嘻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM