iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
1
Security

突破困境:資安開源工具應用系列 第 22

開源網路裝置服務監控系統:LibreNMS (二)

https://ithelp.ithome.com.tw/upload/images/20191003/20118848uPpyLa684E.png

前一篇的內容是以 LibreNMS 搭配 SNMP 取得裝置的詳細資訊,儘管豐富但仍然不夠全面。

LibreNMS 的功力當然不僅於此,所以本篇將介紹如何更進一步的取得更多裝置其它資訊,讓 LibreNMS 可以看到更多有用的資訊。


IPMI/BMC

IPMI 是伺服器主機板上提供的管理功能,可以提供硬體上許多的管理能力與詳細硬體資訊。在 LibreNMS 中要使用它,請進入已經加入 LibreNMS 監控的裝置中,點選右方功能表的齒輪圖示,再點選 [Edit] 進入設定頁,接著切換至 [IPMI] 頁籤,並於此處輸入該主機的 IPMI 相關帳密資訊即可完成。

https://ithelp.ithome.com.tw/upload/images/20191003/20118848snvEHDmgrl.png
設定 IPMI 整合

經過這樣設定之後,下一次的輪詢就會結合 IPMI 的結果加以顯示,該裝置就可以有更完整的資訊輸出。

https://ithelp.ithome.com.tw/upload/images/20191003/20118848QYSjQvCNIs.png
顯示 IPMI 資訊

如上圖的範例,就是顯示由 IPMI 中取得的詳細風扇轉速、電壓等使用資訊。

在其中一次的客戶案例就是經由監測溫度值看到問題,該主機平常的 CPU 運作溫度大約都在 45~55 度之間徘徊,但有一天夜裡開始,溫度持續維持在 85 度以上,有時甚至飆到 99 度後當機。

經過了解,是因為該主機運作已久,原本 CPU 與散熱片之間的散熱膏已經完全損耗,使得導熱能力大幅下降所致,經過停機檢修把散熱膏重新塗佈以後,該伺服器即恢復正常運作。


發行版本

某些 Linux 發行版本不會在 SNMP 中可以取得詳細與正確的資訊,最多只能取得 Linux 核心版本號,這對於想要掌握已安裝的版本較為不便。

我們可以透過 LibreNMS 提供的 Distro 工具,搭配 SNMP 輸出讓 LibreNMS 可以取到更完整且正確的資訊。

在需要被監測的主機上執行以下動作:

下載 Distro 指令碼

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

在 SNMP 中 Distro 回應值 (/etc/snmp/snmpd.conf)

# 請在最後一行加入
extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro

# 完成後存檔離開並重啟服務
systemctl restart snmpd

經過設定,就可以在 LibreNMS 看到完整的發行版本資訊,除了 Linux,FreeBSD 也同樣受惠。

https://ithelp.ithome.com.tw/upload/images/20191003/20118848bRZOw4LmTb.png
https://ithelp.ithome.com.tw/upload/images/20191003/20118848aUVm64M3nq.png
取得發行版本資訊


代理程式

接著還可以透過 LibreNMS 整合的代理程式機制,取得更多的詳細資訊。

在這個部份 LibreNMS 是藉由整合另一個套件 Check_MK 來增強能力,安裝的方法在官方網站上已有提供,以 Ubuntu 安裝為例:

安裝與設定 Check_MK

cd /opt/
git clone https://github.com/librenms/librenms-agent.git
cd librenms-agent
cp check_mk_agent /usr/bin/check_mk_agent
chmod +x /usr/bin/check_mk_agent
cp check_mk@.service check_mk.socket /etc/systemd/system
mkdir -p /usr/lib/check_mk_agent/plugins /usr/lib/check_mk_agent/local
cp agent-local/* /usr/lib/check_mk_agent/local/
chmod +x /usr/lib/check_mk_agent/local/$script
systemctl enable check_mk.socket && systemctl start check_mk.socket

安裝完成後,Check_MK 就會固定監聽 6556/TCP 這個連接埠。

開啟連接 Check_MK

回到 LibreNMS 的 Device 設定頁面,[Device] -> [Edit] -> [Modules],捲至下方將 unix-agent 開關切成 ON,即可在下一次輪詢時經由 Check_MK 取得詳細資訊。

https://ithelp.ithome.com.tw/upload/images/20191003/201188481yD8Mfn7QW.png
經由代理程式取得資訊

從上圖可以看到使用 Check_MK 後,我們可以看到這台伺服器的型號、序號,以其頁籤上多出了Processes、Pkgs 這兩個,分別顯示目前運作中的處理程序、該主機已安裝過的套件以及版本。

目前 LibreNMS 支援連接 Linux、FreeBSD 上運作的 Check_MK,Windows 上雖然也有 Check_MK 可以安裝,但是 LibreNMS 並無法從 Windows 版的 Check_MK 將資訊取回,這是目前較為可惜之處。


更新狀況

對於惡意程式層出不窮的今日,能否儘快安裝更新檔是對抗漏洞攻擊的關鍵之一,LibreNMS 支援我們檢查 Device 上的作業系統是否已將安裝至最新版本,或是仍有更新檔尚未安裝。

這個功能屬於 Application 層面, 可以參考官方的步驟進行,請在要監視的裝置上操作:

下載最新版 OS Update 程式

wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/osupdate -O /etc/snmp/osupdate
chmod +x /etc/snmp/osupdate

設定 OS Update 至 SNMP (/etc/snmp/snmpd.conf)

# 在最後一行加入
extend osupdate /etc/snmp/osupdate
# 編輯完成後存檔退出並重新啟動服務
service snmpd restart

完成以後,LibreNMS 就可以取得還有多少套件尚未更新。除了觀看圖表,也可以把這些更新數字經過設定後做為警報發送。

https://ithelp.ithome.com.tw/upload/images/20191003/20118848PJBhQN20TH.png
未安裝更新數量圖

目前 Application 支援以下應用的監視:

  • Apache
  • Asterisk
  • BIND9/named
  • C.H.I.P
  • Ceph
  • DHCP Stats
  • Entropy
  • EXIM Stats
  • Fail2ban
  • FreeBSD NFS Client
  • FreeBSD NFS Server
  • FreeRADIUS
  • FreeSwitch
  • GPSD
  • Mailscanner
  • Memcached
  • Munin
  • MySQL/MariaDB
  • NGINX
  • NFS Server
  • NTP Client
  • NTP Server/NTPD
  • Nvidia GPU
  • OS Updates
  • PHP-FPM
  • Pi-hole
  • Postfix
  • Postgres
  • PowerDNS
  • Proxmox
  • Raspberry PI
  • SDFS Info
  • SMART
  • Squid
  • TinyDNS/djbdns
  • Unbound
  • UPS-nut
  • UPS-apcups
  • ZFS

小結

在 LibreNMS 所提供的多種功能裡,不僅 SNMP 重要,其它輔助的 Check_MK、Applications 等進階的應用方式,都能夠強化我們對目標裝置的掌握性,資訊取得越多,越能夠從資訊裡取得有用警訊,更可以從圖表中快速了解可疑的關鍵點,早做處理。

LibreNMS 能做的事還不僅於此。下一篇,我將介紹更多資安檢測有關的實用功能,可以協助 IT 管理者解決更多困擾。


參考資料


上一篇
開源網路裝置服務監控系統:LibreNMS (一)
下一篇
開源網路裝置服務監控系統:LibreNMS (三)
系列文
突破困境:資安開源工具應用33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言