Мониторинг SSL сертификатов
Подробное руководство по настройке мониторинга и проверке SSL сертификатов в Zabbix для администраторов
- Существенно уменьшено количество файлов. Для работы шаблона достаточно самого шаблона, одного скрипта и одного конфигурационного файла с пользовательскими переменными.
- Механизм crontab больше не используется для получения данных SSL сертификатов.
- Добавлена поддержка SSL сертификатов для FTP серверов.
- Добавлена поддержка SSL сертификатов для SMTP серверов.
- Добавлена поддержка международных доменных имён (IDN). Например, “пример.рф”.
- Добавлена возможность указать номер порта.
- Добавлена возможность указать IP адрес сервера.
- Добавлена возможность указать название SSL сертификата, которое используется в именах триггеров.
- Кроме срока действия сертификата отслеживаются дополнительные данные.
- Все данные сертификата получаются одним запросом, скрипт можно использовать для просмотра данных SSL сертификата из Linux.
- Мониторинг как внешних, так и локальных сертификатов.
- Не стал делать проверку валидности сертификата, это требует дополнительного запроса в скрипте. Да и локальные сертификаты, подписанные корпоративным центром сертификации, проверку всё равно не проходят.
- Тайминги настраиваются в макросах шаблона.
- И самое главное, список проверяемых SSL сертификатов можно менять в самом шаблоне, он больше не хранится на хосте. Для получения данных SSL сертификатов используется низкоуровневое обнаружение.
По каждому SSL сертификату собирается информация о 13 элементах данных:
Плюс 10 триггеров, отслеживающих срок действия SSL сертификата, смену сертификата, изменение удостоверяющего центра.
Один триггер срабатывает в том случае, если элемент перестаёт получать данные.
Установка шаблона
Скачать шаблон zbx5_ssl_check_v3.zip
Добавляем шаблон к хосту Zabbix.
В качестве хоста я использую сам Zabbix сервер, привязываю шаблон к нему.
На хосте устанавливаю необходимые для работы скрипта пакеты openssl
и libidn
:
1 | yum install openssl libidn.x86_64 -y |
Копируем ssl_check.conf
в папку с пользовательскими переменными: /etc/zabbix/zabbix_agentd.conf.d/ssl_check.conf
.
Не забываем про владельца и права:
1 | chown root\: /etc/zabbix/zabbix_agentd.d/ssl_check.conf |
Копируем папку со скриптом в /etc/zabbix/scripts/
. В ней у нас:
- /etc/zabbix/scripts/ssl_check.sh
Не забываем про владельца и права:
1 | chown -R root\: /etc/zabbix/scripts |
Перезапускаем агент и проверяем работу скрипта.
1 | systemctl restart zabbix-agent |
Список проверяемых SSL сертификатов
Находим шаблон в Configuration → Templates
. Я назвал шаблон SSL check
.
Переходим в items
. Здесь всего один элемент данных под названием SSL domain list
. Выбираем вкладку Preprocessing
.
Для каждого проверяемого SSL сертификата указывается:
{#NAME}
— название. Любое название, применяется в именах триггеров. Обязательный параметр.{#DOMAIN}
— домен. Можно в формате IDN, например, на кириллице. Обязательный параметр.{#SERVER}
— сервер. FQDN или IP адрес. FQDN можно указывать в формате IDN, например, на кириллице. Необязательный параметр, если параметр не указан, то вместо него используется{#DOMAIN}
.{#PORT}
— номер порта. Необязательный параметр, если параметр не указан, то используется “443”.{#TYPE}
— тип запроса. Для сертификатов FTP указывается “ftp“, для web-сертификатов указывается “web“. Если для SMTP серверов не получается использовать “web“, то можно попытаться получить сертификат по “smtp“. Необязательный параметр, если параметр не указан или не распознан, то используется “web“.
В макросах шаблона можно отредактировать периодичность опроса данных:
{$SSL_DISCOVERY_PERIOD}
— 1h. Периодичность автообнаружения SSL сертификатов.{$SSL_HISTORY_PERIOD}
— 180d. Срок хранения истории. У меня не работает, берётся значение из Zabbix. Оставил, вдруг в какй-то из версий будет работать.{$SSL_NODATA_PERIOD}
— 1d. Когда поднимать панику, если данных SSL сертификата нет.{$SSL_REQUEST_PERIOD}
— 6h. Периодичность опроса SSL сертификатов.{$SSL_TREND_PERIOD}
— 180d. Срок хранения трендов.
Примечание
- Если приходится часто проверять данные SSL сертификатов, то можно вынести скрипт на отдельный хост.
- Если домены не входят в один JSON, то можно сделать несколько шаблонов с разными именами и разным набором проверяемых SSL сертификатов.
- Данные исключённых из списка SSL сертификатов удаляются через 30 дней согласно правилам низкоуровневого обнаружения LLD.
- Триггеры, отслеживающие срок действия SSL сертификата, настроены на 30, 14, 7, 1, 0- дней.
- Значение
$SSL_NODATA_PERIOD}
должно превышать{$SSL_REQUEST_PERIOD}
, иначе сработает триггер, отслеживающий отсутствие данных SSL сертификата. - Один и тот же SSL сертификат на разных доменах можно обнаружить по одинаковому серийному номеру. Такой сертификат не имеет смысла мониторить несколько раз.