使用 Zabbix 監控網站 SSL/TLS 證書過期
SSL (TLS) 證書是現代基礎設施的關鍵部分,因此管理員必須確保它們不會過期並按時續訂。本文向您展示如何使用 Zabbix 監控您的網站是否有過期的 SSL 證書。
在 Zabbix 的早期版本中,要監視 SSL 證書的過期情況,您必須使用控制台腳本,通過以下方式將值傳遞給 Zabbix:用戶參數.Zabbix Agent 2允許您使用內置的檢查證書上的信息網絡證書插件。本文將介紹在 Zabbix 中監控 SSL 證書過期的兩種方法。
內容:
在 Zabbix 上使用 WebCertificate 插件檢查 SSL 證書過期
Zabbix代理2包含一個內置的 WebCertificate 插件,可讓您檢查網站證書信息。檢查主機上是否安裝了該版本的代理:
$ zabbix_agent2 -V

您可以使用 WebCertificate 插件直接從控制台獲取有關站點證書的信息zabbix-get命令:
$ zabbix_get -s 127.0.0.1 -k web.certificate.get[woshub.com,443]
該命令應返回一個 JSON 對象,其中包含指定網站的證書屬性。


Zabbix 中提供了內置模板“Zabbix agent 2 的網站證書”。用它來檢查 TLS/SSL 證書到期日期。
- 轉到配置 -> 主機並使用網站名稱添加新主機;
- 創建一個新的主機組或選擇一個現有的主機組;
- 指定模板Zabbix agent 2 的網站證書;
- 在中指定Zabbix代理的IP地址或名稱介面部分(在我們的示例中,
127.0.0.1);

- 然後前往宏選項卡並單擊繼承宏和宿主宏;
- 在
{$CERT.WEBSITE.HOSTNAME}宏,指定要檢查其證書的網站的 DNS 名稱;

- 默認情況下,SSL 證書即將到期的警告將在到期日期前 7 天顯示。您可以使用宏來增加該值
{$CERT.EXPIRY.WARN}; - 如果網站使用 443 以外的 TLS/SSL 端口,您可以使用宏指定它
{$CERT.WEBSITE.PORT}; - 保存設置。
現在,當站點的證書即將過期時,Zabbix 會向您發出警告。
在 Zabbix 中使用腳本監控 HTTPS 證書過期
您可以使用外部腳本來檢索以前版本的 Zabbix 中的證書到期信息。 openssl 命令行工具允許您提取網站證書信息。
參見:什麼是 SSL 證書?
創建 bash 腳本文件/usr/lib/zabbix/externalscripts/sslcert_expiration.sh使用以下代碼::
#!/bin/bash
data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`
ssldate=`date -d "${data}" '+%s'`
nowdate=`date '+%s'`
diff="$((${ssldate}-${nowdate}))"
echo $((${diff}/24/3600))
允許腳本運行:
$ sudo chmod +x /usr/lib/zabbix/externalscripts/sslcert_expiration.sh
此腳本返回證書到期前剩餘的天數。檢查腳本是否正常工作。
$ /usr/lib/zabbix/externalscripts/sslcert_expiration.sh woshub.com 443


該腳本返回該站點的證書在接下來的 79 天內有效。
現在您必須允許 Zabbix Agent 使用以下命令運行此自定義 bash 腳本用戶參數範圍。
$ sudo mcedit /etc/zabbix/zabbix_agent2.conf
添加:
UserParameter=sslcertexpire[*],/usr/lib/zabbix/externalscripts/sslcert_expiration.sh $1 $2


使用 UserParameter 中的腳本,您還可以檢查 Zabbix 中域的過期日期。
重新啟動代理:
$ sudo service zabbix-agent2 restart
檢查Zabbix代理是否可以通過新參數接收數據。您可以使用zabbix-get用於測試代理響應的命令:
$ zabbix_get -s 127.0.0.1 -p 10050 -k sslcertexpire[woshub.com,443]
現在添加一個新模板檢查SSL證書有效期監控 Zabbix 中 HTTPS 證書的過期情況。
在 Items 選項卡中,添加一個參數
- 名稱:SSL 證書剩餘有效期
{$DOMAINNAME} - 類型:Zabbix代理
- 鑰匙:
sslcertexpire[{$DOMAINNAME},{$SSL_PORT}] - 信息類型:數字(無符號)
- 更新間隔:1d
- 病史:90天
- 趨勢:365d


然後添加一個新的觸發器:
- 名稱:SSL 證書
{$DOMAINNAME}即將到期 - 表達:
last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])<20 - 嚴重性:高
如果 SSL 證書到期時間不足 20 天,此觸發器將生成警報。
您可以添加恢復觸發參數:
Recovery expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])>20


現在為您的站點添加一個新主機到 Zabbix代理人接口類型。
在宏選項卡中,添加兩個參數:服務器名稱和要檢查 SSL 證書的端口:
- 宏:
{$DOMAINNAME} - 價值:
woshub.com
和
- 宏:
{$SSL_PORT} - 價值:
443


將之前創建的 CheckSSLCertExpiration 模板分配給主機。
現在檢查最新數據。 Zabbix 顯示該站點的 SSL 證書將在 79 天后過期。


要通知管理員 SSL 證書需要盡快續訂,您可以啟用電子郵件或消息通知。
