2019年10月5日 星期六

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



繼昨天的 LibreNMS 使用 IPMI、Check_MK、Applications 強化管理能力之後,今天將要更深入的介紹更多種可以提升資安防護能力的整合套件,讓問題能夠容易的浮現在管理者面前。

註:範例中的 test.com.tw 為示意,請自行更換至您的域名。



Service 機制

在 LibreNMS 裡面提供了一個功能叫做「Service」,這個功能預設是關閉的,需要自行修改設定檔將它開啟。而這個 Service 機制更像是 Plugin 的概念,它其實是承接且絕大部份相容另一個老牌服務監控套件「Nagios」的 Plugin。



Nagios


Nagios Plugin 制定的標準的規範,只要能符合其輸出結果格式的程式或指令碼,都可以納進來支援。換個方式說,您也可以自己開發 Nagios Plugin。

LibreNMS 會將安裝在 Nagios Plugins 資料夾中 Check_ 開頭的程式視為 Service 支援的項目而自動抓進來顯示,即可在 WebUI 上簡單點選與設定。



安裝 Nagios Plugins (Ubuntu 18.04)

apt install nagios-plugins
chmod +x /usr/lib/nagios/plugins/*

啟用 Service (/opt/librenms/config.php)

#新增以下設定
$config['show_services'] = 1;
$config['nagios_plugins'] = "/usr/lib/nagios/plugins";

啟用 Service 排程檢查 (/etc/cron.d/librenms)

#新增以下設定
*/5 * * * * librenms /opt/librenms/services-wrapper.py 1

使用 Service

設定完成以後,最上端的功能表會多出一項 Service 的項目,點選後按下 [Add Service],進入的畫面後選取要檢測的項目、目標裝置及參數即可。









網頁監視

在現代的系統中幾乎大多數都是以 Web 形式提供服務,包含本系列前面所介紹過的套件也不外如是。因此,檢測 Web 服務的正常性就相當重要。



check_http


參數範例:
-S -s "User Login" -t 15

輸出範例:
HTTP OK: HTTP/1.1 200 OK - 48895 bytes in 0.302 second response time


其中的 -S 表示要使用 https 方式連線,若是未加密的 http 連線則不需要此參數。

另外,還可以利用這個 Service 的進一步功能,使用 -s 參數後面加上字串,檢測網頁中是否有指定的關鍵字,可以用來判斷雖然這個 Port 有正在監聽,但網頁運作不正常,或是被惡意置換,以儘速提出預警。

最後的 -t 指的是連接網頁的逾時時間秒數,超過則視為異常。






域名時效

網址是企業與系統不可或缺的重要入口,因此網域的有效性就很重要,曾經聽過有企業因為忘記續約導致域名被惡意註冊走,導致服務停擺不短的時間,例如官網無法進入,應用系統客戶進不來,電子郵件系統停擺無法往來訂單,帶來損失無可估量。



check_domain


參數範例:
-d "test.com.tw" -w 120 -c 30

輸出範例:
OK - Domain test.com.tw will expire in 1992 days (2025-02-24).

第一個 -d 參數用來放置要檢測的域名,它會取出距離域名註冊的到期日還有幾天。

後面的 -w-c 參數,分別用來設定倒數剩下幾天要判定為警告,或是嚴重。

另外若您的域名是 .tw 結尾,您可能需要使用我修改過的版本才能正確取出域名到齊日,這跟不同註冊商的顯示格式有些關係,請至本篇最後的參考資料中下載。

如果查詢仍然出現問題,請加上 -s 參數,強制指定向您註冊的域名商主機詢問到期日,例如 -s whois.twnic.net






憑證效期

與上一項域名效期有異曲同工之妙,現在網站 https 幾乎是標準配備,若某個網站的 https 憑證到期未更新,保證所有使用者都會看到極其驚悚的瀏覽器警告訊息,如此一來會讓使用者對網站的信任感產生極大疑慮,或者是更進一步被瀏覽器直接阻擋不予進入。



check_ssl_cert


參數範例:
--warning 120 --critical 90

輸出範例:
Certificate will not expire
SSL_CERT OK - X.509 certificate for 'subject=OU = Domain Control Validated, CN = *.test.com.tw' from 'issuer=C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2' valid until Nov 7 05:06:50 2020 GMT (expires in 423 days)

這兩個參數分別是用來定義還有幾天到期,警告的天數與嚴重天數。







RBL 檢測

郵件服務是網路時代中企業不可缺少的溝通管道之一,若您是自建伺服器,而伺服器中被入侵或是有帳號被盜用導致大量發送惡及垃圾郵件,將會造成郵件伺服器的 Public IP 被列入黑名單。一旦被列入黑名單,企業的郵件寄出將會被大量的郵件伺服器給退信,尤其是 Google、Microsoft 等大型郵件服務商,除了麻煩,更讓客戶或廠商對您的信任大打折扣,而且就算處理完成申請解鎖,也要 3~30 天不等的日期,相當漫長。



check_rbl


參數範例:
-t 60 -c 1 -s dnsbl.sorbs.net -s spam.dnsbl.sorbs.net -s bl.spamcop.net -s pbl.spamhaus.org -s sbl.spamhaus.org

輸出範例:
CHECK_RBL OK - 123.123.123.123 BLACKLISTED on 0 servers of 5

第一個 -t 參數指定逾時,若詢問的 RBL 對象超過時間無回應則不予等待,第二個 -c 參數則是指定被列在幾個 RBL 名單上要示警,最後的 -s 參數後面接要詢問的 RBL 對象,若有多個可以繼續往下串接,我自己是用了二十幾個。






小結

LibreNMS 在經過 Nagios Plugins 的加持之後,一下子擴展出非常廣大的應用能力,許多與資訊安全相關的定期檢測項目都可以交由 LibreNMS 幫我們執行、記錄結果,之後還可以搭配 LibreNMS 強大的警報機制,快速通知 IT 管理者做出應變,將傷害降至最低。







參考資料