centos 編譯安裝net-snmp 5.6.2

來源:互聯網
上載者:User

標籤:blog   http   使用   os   io   檔案   資料   for   

1、準備環境
yum -y install make gcc gcc-c++ gcc-g77 openssl openssl-devel

常用lib安裝可參照本文

2、編譯和安裝
首先我們需要下載Net-SNMP的原始碼,
官方地址:
http://sourceforge.net/projects/net-snmp/files/net-snmp/

下載net-snmp-5.6.2

:http://pan.baidu.com/s/1gd5TLT5

接下來對下載的原始碼包進行解壓縮,
tar xzvf net-snmp-5.6.2.1.tar.gz

然後通過configure來產生編譯規則,

cd net-snmp-5.6.2.1

./configure \
--prefix=/server/snmp \
--with-mib-modules=ucd-snmp/diskio \
--with-default-snmp-version="3" \
--with-sys-contact=yjken \
--with-sys-location="shanghai" \
--with-logfile="/server/snmp/log/snmpd.log" \
--with-persistent-directory="/var/net-snmp"

注意,以上的

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

選項,可以讓伺服器支援磁碟I/O監控。
斷行符號出現下面問題,可以直接斷行符號而不用回答,系統會採用預設資訊,其中記錄檔預設安裝在/var/log/snmpd.log.資料存貯目錄預設存放在/var/net-snmp下。

配置預設snmp協議版本(1,2c,3),配置為v3版的話,支援登入驗證功能,相對來說更安全了
--with-default-snmp-version="3"

配置該裝置的連絡人資訊,也可以是郵箱地址
--with-sys-contact=yjken

配置該系統裝置的地理位置
--with-sys-location="shanghai"

配置記錄檔位置
--with-logfile="/server/snmp/log/snmpd.log"

配置資料存放區目錄
--with-persistent-directory="/var/net-snmp"

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

make && make install

到現在為止,我們已經有了可以啟動並執行SNMP代理程式,它位於/server/snmp/sbin/snmpd,在啟動它之前,我們還要進行一些必要的設定。

3、設定安全的驗證方式
將SNMP代理程式暴露給網路上的所有主機是很危險的,為了防止其它主機訪問你的SNMP代理程式,我們需要在SNMP代理程式上加入身分識別驗證機制。SNMP支援不同的驗證機制,這取決於不同的SNMP協議版本,v2c版本的驗證機制比較簡單,它基於純文字密碼和授權IP來進行身分識別驗證,而v3版本則通過使用者名稱和密碼的加密傳輸來實現身分識別驗證,我們建議使用v3,當然,只要按照以下的介紹進行配置,不論是v2c版本還是v3版本,都可以保證一定的安全性,你可以根據情況來選擇。
注意一點,SNMP協議版本和SNMP代理程式版本是兩回事,剛才說的v2c和v3是指SNMP協議的版本,而Net-SNMP是用來實現SNMP協議的程式套件。

v2c

先來看如何配置v2c版本的SNMP代理,我們來建立snmpd的設定檔,預設情況下它是不存在的,我們來建立它,如下:

vi /server/snmp/share/snmp/snmpd.conf

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

rocommunity yjken 127.0.0.1
rocommunity yjken 192.168.0.230

注意:添加使用者時,請確保snmp服務沒有運行,否則無法添加。
注意,這裡的"rocommunity"表示這是一個唯讀存取權限,其它用戶端只能從你的伺服器上擷取資訊,而不能對伺服器進行任何設定。
緊接著的"yjken"相當於密碼,很多平台喜歡使用"public"這個預設字串。這裡的"yjken"只是一個例子,你可以設定其它字串作為密碼。
最右邊的"127.0.0.1,192.168.0.230"代表指定的監控點IP,這意味著只有IP為"127.0.0.1" 或 "192.168.0.230"的機器有許可權來訪問你的SNMP代理程式。
所以,以上這段配置中,只有"yjken"是需要你進行修改的,從用戶端訪問時,需要提供這個字串。

v3

當然,我們建議您使用v3版本來進行身分識別驗證。對於一些早期版本的Linux分發版,其內建的SNMP代理程式可能並不支援v3,所以我們建議您按照前邊介紹的方法,編譯和安裝最新的Net-Snmp。
v3支援另一種驗證方式,需要建立一個v3的帳號,我們同樣修改以下設定檔(預設情況下它是不存在的,我們來建立它。):

注意:我曾經安裝的v2版協議,卻用了預設的設定檔,總是報錯,快漰潰了,就是因為預設的設定檔是v3格式的配置文法,v3版協議配置文法與v2版的不同了!

vi /server/snmp/share/snmp/snmpd.conf

然後添加一個唯讀帳號,

rouser yjken auth

注意:添加使用者時,請確保snmp服務沒有運行,否則無法添加。
可以看到,在v3中,"rouser"用於表示唯讀帳號類型,隨後的"yjken"是指定的使用者名稱,後邊的"auth"指明需要驗證。
接下來,需要先運行一下:

/server/snmp/sbin/snmpd -c /server/snmp/share/snmp/snmpd.conf &

執行後會產生/var/net-snmp/snmpd.conf設定檔,再使用命令結束這個進程:

killall -9 snmpd

接著我們還要添加"yjken"這個使用者到設定檔中,這就是v3中的特殊機制,我們開啟設定檔:
net-snmp版本為5.6.2的可以寫入/var/net-snmp/snmpd.conf這個檔案,而版本為5.6.2.1的,則須要寫入/server/snmp/share/snmp/snmpd.conf 這個檔案中

#5.6.2
vi /var/net-snmp/snmpd.conf
這個檔案會在snmpd啟動的時候被自動調用,我們需要在它裡邊添加建立使用者的指令
#Only "createUser" tokens should be placed here by snmpd administrators
createUser yjken MD5 mypassword

#5.6.2.1
vi /server/snmp/share/snmp/snmpd.conf
這個檔案會在snmpd啟動的時候被自動調用,我們需要在它裡邊添加建立使用者的指令
createUser yjken MD5 mypassword

#執行一下命令
/server/snmp/sbin/snmpd -c /server/snmp/share/snmp/snmpd.conf &

這行配置的意思是建立一個名為"yjken"的使用者,密碼為"mypassword",並且用MD5進行加密傳輸。這裡要提醒的是:
密碼至少要有8個位元組
這是SNMP協議的規定,如果小於8個位元組,通訊將無法進行。
值得注意的是,一旦snmpd啟動後,出於安全考慮,以上這行配置會被snmpd自動刪除,當然,snmpd會將這些配置以密文的形式記錄在其它檔案中,重新啟動snmpd是不需要再次添加這些配置的,除非你希望建立新的使用者。

4、啟動SNMP代理程式
經過配置後,現在可以啟動snmpd,

/server/snmp/sbin/snmpd -c /var/net-snmp/snmpd.conf &

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

killall -9 snmpd

5、將snmpd加入開機啟動
進入源碼目錄,如/root/net-snmp-5.6.2目錄,將啟動設定檔範例複製到/etc/init.d/目錄:

cp /root/net-snmp-5.6.2/dist/snmpd-init.d /etc/init.d/snmpd

修改/etc/init.d/snmpd檔案
將其中的
vi /etc/init.d/snmpd

prog="/usr/local/sbin/snmpd"

修改為

prog="/server/snmp/sbin/snmpd"

將其中的

[ -x $prog -a -f /usr/local/share/snmp/snmpd.conf ] || exit 0

修改為

[ -x $prog -a -f /var/net-snmp/snmpd.conf ] || exit 0

如果不修改/etc/init.d/snmpd檔案,則建立軟串連
ln -fs /server/snmp/sbin/snmpd /usr/local/sbin/snmpd

ln -fs /var/net-snmp/snmpd.conf /usr/local/share/snmp/snmpd.conf
or
ln -fs /server/snmp/share/snmp/snmpd.conf /usr/local/share/snmp/snmpd.conf

加入系統啟動項
echo "/etc/init.d/snmpd start" >> /etc/rc.local

服務控制:
設定好上面的內容就可以用下列命令控制服務了。
啟動:

/etc/init.d/snmpd start

停止:

/etc/init.d/snmpd stop

重新啟動:

/etc/init.d/snmpd restart

服務狀態:

/etc/init.d/snmpd status

6、增強安全機制
有了以上的驗證機制,你就可以放心的使用SNMP代理了。但是,如果你的SNMP代理程式版本較低,可能會有一些別有用心的破壞者利用一些固有的漏洞進行破壞,比如發送較長的資料導致SNMP代理程式記憶體流失或者拒絕服務等,為此,你還可以使用防火牆(iptables)來進行增強安全過濾。
在Linux中,我們用iptables來實現防火牆,一般情況下,除了流入指定連接埠的資料包以外,我們應該將其它流入的IP資料包拋棄。你可能已經配置了一定的防火牆規則,那麼只要增加針對SNMP的規則即可。
SNMP代理程式預設監控在udp161連接埠,為你的iptables增加以下規則:

如果192.168.0.230不是該監控機IP的話,需要設定防火牆
iptables -A INPUT -i eth0 -p udp -s 192.168.0.230 --dport 161 -j ACCEPT

以上設定中假設伺服器外網網卡是eth0,你可以根據實際情況來修改。
這樣一來,192.168.0.230這台機器可以發送UDP資料包到你的伺服器的161連接埠,與SNMP代理程式進行通訊。

7、測試:
ln -fs /server/snmp/bin/* /usr/local/bin/

v2 輸入 snmpget -v2c -cyjken localhost .1.3.6.1.2.1.1.1.0
v3 輸入 snmpget -v3 -cyjken -uyjken -lauthNoPriv -aMD5 -Amypassword localhost .1.3.6.1.2.1.1.1.0
snmpwalk -v3 -cyjken -uyjken -lauthNoPriv -aMD5 -Amypassword localhost .1.3.6.1.2.1.1.1.0
如果能夠得到資料則表明安裝已經成功

附Security Levels in SNMPv3安全文檔:
http://www.webnms.com/simulator/help/sim_network/netsim_conf_snmpv3.html#security_levels

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.