Мониторинг истечения срока 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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

1 неделя ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

1 неделя ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

1 неделя ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

1 неделя ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

1 неделя ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

1 неделя ago