Мониторинг истечения срока SSL сертификатов в Zabbix

SSL (TLS) сертификаты стали важным компонентов современной инфраструктуры, поэтому администраторам нужно следить за тем, чтобы они не истекали и вовремя их обновлять. В этой статье мы покажем, как отслеживать срок действия SSL сертификатов на ваших сайтах с помощью системы мониторинга Zabbix.

В ранних версиях Zabbix для мониторинга SSL сертификатов приходилось использовать консольные скрипты, которые передают значения в Zabbix через UserParameter . В Zabbix Agent 2 появись возможность получения информации о сертификате с помощью встроенного плагина WebCertificate . В этой статье мы рассмотрим оба способа мониторинга срока действия SSL.

Zabbix: проверка срока действия SSL сертификата сайта с помощью плагина WebCertificate

Плагин WebCertificate, который позволяет получать информацию о сертификатах сайтах, доступен в Zabbix Agent 2. Проверьте, что на хосте установлена эта версия агента:

$ zabbix_agent2 -V

С помощью утилиты zabbix-get вы можете прямо из консоли воспользоваться плагином WebCertificate для получения информации о сертификате сайта:

$ zabbix_get -s 127.0.0.1 -k web.certificate.get[remontka.com,443]

Команда должна вернуть JSON с атрибутами сертификата указанного сайта.

В современных версиях Zabbix доступен встроенный шаблон “Website certificate by Zabbix agent 2”. Вы можете использовать его для отслеживания сроков действия TLS/SSL сертификатов (или получения другой информации).

  1. Перейдите в раздел Configuration -> Hosts и добавьте новый хост с именем сайта;
  2. Создайте группу хостов или выберите существующую;
  3. Назначьте шаблон Website certificate by Zabbix agent 2 ;
  4. В разделе Interface укажите IP адрес или имя агента Zabbix (в нашем примере 127.0.0.1 );
  5. Затем перейдите на вкладку Macros и нажмите Inherited and host macros mode ;
  6. Укажите в макросе {$CERT.WEBSITE.HOSTNAME} DNS имя хоста, сертификат которого нужно проверить;
  7. По умолчанию предупреждение об окончании срока действия SSL сертификата будет появляться за 7 дней до истечения. Вы можете увеличить это значение с помощью макроса {$CERT.EXPIRY.WARN} ;
  8. Если используется TLS/SSL порт, отличный от 443, можно указать его с помощью макроса {$CERT.WEBSITE.PORT} ;
  9. Сохраните настройки.

Теперь Zabbix будет оповещать вас, если срок сертификата сайта истекает.

Отслеживание срока действия SSL сертификата с помощью скрипта в Zabbix

В предыдущих версиях Zabbix вы можете использовать внешние скрипты для получения информации о сертификатах. Для получения данных сертификата сайта можно использовать утилиты openssl.

Создайте файл /usr/lib/zabbix/externalscripts/sslcert_expiration.sh со следующим кодом:

#!/bin/bash_x000D_data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`_x000D_ssldate=`date -d "${data}" '+%s'`_x000D_nowdate=`date '+%s'`_x000D_diff="$((${ssldate}-${nowdate}))"_x000D_echo $((${diff}/24/3600))

Разрешите запуск файла:

$ sudo chmod +x /usr/lib/zabbix/externalscripts/sslcert_expiration.sh

Этот скрипт возвращает количество дней, которые остались до окончания срока действия сертификата. Проверьте, что скрипт работает корректно.

$ /usr/lib/zabbix/externalscripts/sslcert_expiration.sh remontka.com 443

Скрипт вернул, что сертификат сайта действителен еще 43 дня.

Теперь с помощью параметра UserParameter нужно разрешить запуск этого пользовательского скрипта агентом Zabbix.

$ sudo mcedit /etc/zabbix/zabbix_agent2.conf

Добавьте строку:

UserParameter=sslcertexpire[*],/usr/lib/zabbix/externalscripts/sslcert_expiration.sh $1 $2

Также вы можете использовать скрипт в UserParameter для отслеживания срока делегирования (освобождения) доменов с помощью Zabbix .

Теперь вы можете выполнить ваш скрипт через агента Zabbix. Для вызова этого скрипта из Zabbix нужно использовать sslcertexpire.

Перезапустите агента:

$ sudo service zabbix-agent2 restart

Проверьте, что агент zabbix может получить данные через новый параметр. Для тестирования агента используется утилита zabbix-get:

$ zabbix_get -s 127.0.0.1 -p 10050 -k sslcertexpire[remontka.com,443]

Теперь добавьте новый шаблон CheckSSLCertExpiration для мониторинга срока действия сертификата в Zabbix.

На вкладке items добавьте параметр

  • Имя: Оставшийся срок действия SSL сертификата {$DOMAINNAME}
  • Type: Zabbix Agent
  • Key: sslcertexpire[{$DOMAINNAME},{$SSL_PORT}]
  • Type of information: Numeric (unsigned)
  • Update Interval: 1d
  • History: 90d
  • Trenfd: 365d

Теперь добавьте новый триггер

  • Name: Срок действия SSL сертификата для {$DOMAINNAME} заканчивается
  • Expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])<20
  • Severity: High

Такой триггер буде срабатывать, если до окончания срока действия SSL сертификата осталось менее 20 дней.

Можно сразу добавить параметр для триггера восстановления:

Recovery expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])>20

Теперь добавьте в Zabbix новый хост для вашего сайта с типом интерфейса Agent.

На вкладке Macros нужно добавить два параметра: имя сервера и порт, на котором нужно проверять SSL сертификит:

  • Macro: {$DOMAINNAME}
  • Value: remontka.com

и

  • Macro: {$SSL_PORT}
  • Value: 443

Назначьте хосту ранее созданный шаблон CheckSSLCertExpiration.

Теперь проверьте Latest Data. Zabbix показывает, что SSL сертификат сайте истечет через 43 дня.

Можете дополнительно настроить отправку оповещений на email или в Telegram ответственных лиц, о том, что скоро нужно обновить или продлить SSL сертификат.

Если вы используете на своих HTTPS сайтах бесплатные SSL сертификаты от Let’s Encrypt , имейте в виду что они выдаются всего на три месяца. Если по каким-то причинам автоматическое продление сертификата Let’s Encrypt не сработало, вы можете в определенный момент столкнуться с тем, что пользователи не смогут открыть ваш HTTPS сайт. В этом случае мониторинг сертификата через Zabbix поможет вам своевременно обнаружить проблему.
admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

3 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

3 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

3 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

3 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

3 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

3 месяца ago