使用 Zabbix 監控網站 SSL/TLS 證書過期

Jacki

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 證書到期日期。

  1. 轉到配置 -> 主機並使用網站名稱添加新主機;
  2. 創建一個新的主機組或選擇一個現有的主機組;
  3. 指定模板Zabbix agent 2 的網站證書;
  4. 在中指定Zabbix代理的IP地址或名稱介面部分(在我們的示例中,127.0.0.1);
  5. 然後前往選項卡並單擊繼承宏和宿主宏;
  6. {$CERT.WEBSITE.HOSTNAME}宏,指定要檢查其證書的網站的 DNS 名稱;
  7. 默認情況下,SSL 證書即將到期的警告將在到期日期前 7 天顯示。您可以使用宏來增加該值{$CERT.EXPIRY.WARN};
  8. 如果網站使用 443 以外的 TLS/SSL 端口,您可以使用宏指定它{$CERT.WEBSITE.PORT};
  9. 保存設置。

現在,當站點的證書即將過期時,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 證書需要盡快續訂,您可以啟用電子郵件或消息通知。