繼昨天的 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 管理者做出應變,將傷害降至最低。
參考資料
- Nagios Plugins - LibreNMS Docs
https://docs.librenms.org/Extensions/Services/
- Development Guidelines · Nagios Plugins
http://nagios-plugins.org/doc/guidelines.html
- jasoncheng7115/monitoring-plugin-check_domain
https://github.com/jasoncheng7115/monitoring-plugin-check_domain