9. Веб-мониторинг

9. Веб-мониторинг Сертификаты

Алгоритмы шифрования

Алгоритмы конфигурируются внутри в процессе запуска Zabbix и зависят от крипто библиотеки, в настоящее время алгоритмы нельзя настраивать пользователями.

Настроенные алгоритмы шифрования по типу библитеки с более высокого уровня к низкому уровню:

Алгоритмы шифрования при использовании сертификатов:

Алгоритмы шифрования при использовании PSK:

Компиляция zabbix с поддержкой шифрования

Для поддержки шифрования Zabbix должен быть скомпилировать и связан с по крайней мере одной крипто библиотекой:

  • mbed TLS (ранее PolarSSL)(версия 1.3.9 или более новые 1.3.x). mbed TLS 2.x в настоящее время не поддерживается, это не простая замена ветки 1.3, Zabbix не скомпилируется с mbed TLS 2.x.
  • GnuTLS (с версии 3.1.18)
  • OpenSSL (с версии 1.0.1)

Библиотека выбирается при помощи опции в скрипте “configure”:

  • --with-mbedtls[=DIR]
  • --with-gnutls[=DIR]
  • --with-openssl[=DIR]

Например, чтобы сконфигурировать исходные коды сервера и агента с OpenSSL, вы можете использовать что-то вроде:./configure –enable-server –enable-agent –with-mysql –enable-ipv6 –with-net-snmp –with-libcurl –with-libxml2 –with-openssl

Можно скомпилировать разные компоненты Zabbix с различными крипто библиотеками (например, сервер с OpenSSL, агент с GnuTLS).

Если вы планируете использовать pre-shared ключи (PSK) рассмотрите возможность использования библиотек GnuTLS или mbed TLS с компонентами Zabbix, использующих PSK. Библиотеки GnuTLS и mbed TLS поддерживают наборы шифров PSK с Совершенной прямой секретностью (Perfect forward secrecy).

Настройка аутентификации

Вкладка Аутентификация позволяет вам настроить опции аутентификации сценария.

Параметры аутентификации:

ПараметрОписание
АутентификацияОпции аутентификации.
Пусто – без использования аутентификации.
Простая аутентификация – с использованием простой аутентификации.
NTLM аутентификация – с использованием NTLM (Windows NT LAN Manager) аутентификации.
Выбрав какой-либо метод аутентификации, будут доступны доступны два дополнительных поля для ввода имени пользователя и пароля.
Начиная с Zabbix 2.2, в полях имени пользователя и пароля можно использовать пользовательские макросы.
Проверка SSL узлаОтметьте для верификации SSL сертификата веб-сервера.
Сертификат сервера будет автоматически взят из места центра сертификации (CA) всей системы. Вы можете перезаписать расположение CA файлов, используя параметр конфигурации SSLCALocation в Zabbix сервере и прокси.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYPEER.
Эта опция поддерживается начиная с Zabbix 2.4.
Проверка SSL хостаОтметьте для верификации, что поле Common Name или поле Subject Alternate Name сертификата веб-сервера совпадают.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYHOST.
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL сертификатаИмя файла SSL сертификата для аутентификации клиента. Файл сертификата должен быть в формате PEM1. Если файл сертификата также содержит и приватный ключ, оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл указывается в параметре конфигурации SSLCertLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLCERT.
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL ключаИмя файла приватного SSL ключа, который используется для аутентификации клиента. Файл приватного ключа должен быть в формате PEM1. Папка, содержащая этот файл указывается в параметре конфигурации SSLKeyLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLKEY.
Эта опция поддерживается начиная с Zabbix 2.4.
Пароль к SSL ключуПароль к файлу приватного ключа.
В этом поле можно использовать пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_KEYPASSWD.
Эта опция поддерживается начиная с Zabbix 2.4.

[1] Zabbix поддерживает файлы сертификатов и приватных ключей только в PEM формате. В случае, если у вас имеются данные сертификата и приватного ключа в формате файла PKCS #12 (обычно используется с расширением *.p12 или *.pfx), вы можете сгенерировать из них PEM файл, используя следующие команды:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbix сервер подхватывает изменения в сертификатах без перезапуска.

Про сертификаты:  Морские документы в Киеве/Украине | Koval Legal Group

Если сертификат клиента и приватный ключ находятся в одном файле, просто укажите его в поле “Файл SSL сертификата” и оставьте поле “Файл SSL ключа” пустым. Сертификат и ключ все еще должны быть в формате PEM. Очень просто объединить сертификат и ключ:

cat client.crt client.key > client.pem

Настройка сертификата на zabbix сервере

1. Для того, чтобы проверять сертификаты хостов, Zabbix сервер должен иметь доступ к файлу с их корневыми верхнего уровня самоподписными CA сертификатами. Например, если мы ожидаем сертификаты от двух независимых корневых CA, мы можем поместить их сертификаты в файл /home/zabbix/zabbix_ca_file, примерно следующим образом:

Certificate:
           Data:
               Version: 3 (0x2)
               Serial Number: 1 (0x1)
           Signature Algorithm: sha1WithRSAEncryption
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
                   ...
               Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
               Subject Public Key Info:
                   Public Key Algorithm: rsaEncryption
                       Public-Key: (2048 bit)
                   ...
               X509v3 extensions:
                   X509v3 Key Usage: critical
                       Certificate Sign, CRL Sign
                   X509v3 Basic Constraints: critical
                       CA:TRUE
                   ...
       -----BEGIN CERTIFICATE-----
       MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB MRMwEQYKCZImiZPyLGQB
       ....
       9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
       -----END CERTIFICATE-----
       Certificate:
           Data:
               Version: 3 (0x2)
               Serial Number: 1 (0x1)
           Signature Algorithm: sha1WithRSAEncryption
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
                   ...
               Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
               Subject Public Key Info:
                   Public Key Algorithm: rsaEncryption
                       Public-Key: (2048 bit)
                   ....
               X509v3 extensions:
                   X509v3 Key Usage: critical
                       Certificate Sign, CRL Sign
                   X509v3 Basic Constraints: critical
                       CA:TRUE
                   ....       
       -----BEGIN CERTIFICATE-----
       MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
       ...
       vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
       -----END CERTIFICATE-----

2. Поместите цепочку сертификатов Zabbix сервера в файл, например, /home/zabbix/zabbix_server.crt:

Certificate:
           Data:
               Version: 3 (0x2)
               Serial Number: 1 (0x1)
           Signature Algorithm: sha1WithRSAEncryption
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
               ...
               Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix server
               Subject Public Key Info:
                   Public Key Algorithm: rsaEncryption
                       Public-Key: (2048 bit)
                       ...
               X509v3 extensions:
                   X509v3 Key Usage: critical
                       Digital Signature, Key Encipherment
                   X509v3 Basic Constraints: 
                       CA:FALSE
                   ...
       -----BEGIN CERTIFICATE-----
       MIIECDCCAvCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
       ...
       h02u1GHiy46GI xfR3LsPwFKlkTaaLaL/6aaoQ==
       -----END CERTIFICATE-----
       Certificate:
           Data:
               Version: 3 (0x2)
               Serial Number: 2 (0x2)
           Signature Algorithm: sha1WithRSAEncryption
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
               ...
               Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
               Subject Public Key Info:
                   Public Key Algorithm: rsaEncryption
                       Public-Key: (2048 bit)
                   ...
               X509v3 extensions:
                   X509v3 Key Usage: critical
                       Certificate Sign, CRL Sign
                   X509v3 Basic Constraints: critical
                       CA:TRUE, pathlen:0
               ...
       -----BEGIN CERTIFICATE-----
       MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB MRMwEQYKCZImiZPyLGQB
       ...
       dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
       -----END CERTIFICATE-----

Здесь первым является сертификат Zabbix сервера, за ним промежуточные CA сертификат.

3. Поместите приватный ключ Zabbix сервера в файл, например, /home/zabbix/zabbix_server.key:

-----BEGIN PRIVATE KEY-----
       MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
       ...
       IJLkhbybBYEf47MLhffWa7XvZTY=
       -----END PRIVATE KEY-----

4. Измените параметры TLS в файле конфигурации Zabbix сервера, примерно так:

TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSCertFile=/home/zabbix/zabbix_server.crt
       TLSKeyFile=/home/zabbix/zabbix_server.key

Настройка сценария

Для настройки веб-сценария:

  • Перейдите: Настройка → Узлы сети (или Шаблоны)
  • Нажмите на Веб в строке с узлом сети/шаблоном
  • Нажмите на Создать сценарий в верхнем правом углу (или на имени сценария для редактирования существующего сценария)
  • Введите в диалоге параметры сценария

Вкладка Сценарий позволяет вам настроить общие параметры веб-сценария.

Все обязательные поля ввода отмечены красной звёздочкой.

Параметры сценария:

Настройка шагов

Параметры шага:

Обзор

Благодаря Zabbix вы можете проверять несколько аспектов доступности веб-сайтов.

Для выполнения веб-мониторинга Zabbix сервер должен быть изначально сконфигурирован с поддержкой cURL (libcurl).

Ограничения

  • Приватные ключи хранятся в формате обычного текста в файлах, которые Zabbix компоненты считывают в процессе запуска.
  • Введенные pre-shared ключи в веб-интерфейсе Zabbix хранятся в базе данных Zabbix в виде обычного текста.
  • Встроенное шифрование не защищает коммуникации:
   * между веб-сервером с веб-интерфейсом Zabbix и веб-браузером на строне пользователя,
          * между Zabbix веб-интерфейсом и Zabbix сервером,
          * между Zabbix сервером (прокси) и базой данных Zabbix.
       * В настоящее время каждое незашифрованное соединение открывается с полными TLS переговорами, кэширование сессий и билеты не реализованы.
       * Добавление шифрования увеличивает время проверок и действий, в зависимости от сетевых задержек.\ Например, если пакет опаздывает на 100мс, тогда открытие TCP соединение и отправка незашифрованного запроса займет около 200мс.\ При наличии шифрования на установку TLS соединения добавится около 1000 мс.\ Возможно потребуется увеличить время ожидания, в противном случае некоторые элементы данных и действия, выполняющие удаленные скрипты на агентах смогут работать с незашифрованными соединениями,\ но не смогут при шифрованном соединении (будет превышено время ожидания).

Ограничения в использовании crl расширений

  • Расширение Идентификатор Ключа Полномочий.
    CRL для CA с идентичными именами могут не работает в случае mbedTLS (PolarSSL), даже с расширением “Идентификатор Ключа Полномочий” (“Authority Key Identifier”).
Про сертификаты:  Вопросы для собеседования регионального директора по продажам

Ограничения при использовании расширений x.509 v3 сертификатов

  • Расширение Альтернативное имя субъекта (subjectAltName).
    Альтернативные имена субъектов из subjectAltName расширения (такие как IP адрес, e-mail адрес) не поддерживаются Zabbix. В Zabbix проверяется только значение поля “Субъект” (смотри Ограничение разрешенных Эмитента и Субъекта сертификата).
    Если сертификат использует subjectAltName расширение, тогда результат зависит от конкретной комбинации наборов инструментов криптографии с которыми скомпилированы компоненты Zabbix (это расширение может работать, а может и не работать, Zabbix может отказаться принимать такие сертификаты от узлов).
  • Расширение Использование Расширенного Ключа.
    Если используется, то, как правило, необходимо указывать как clientAuth (TLS WWW аутентификация клиента), так и serverAuth (TLS WWW аутентификация сервера).
    Например, при пассивных проверках Zabbix агент выступает в роли TLS сервера, таким образом необходимо указать serverAuth в сертификате агента. При активных проверках в сертификате агента необходимо задать clientAuth.
    GnuTLS выводит предупреждение в случае нарушения использования ключа, но разрешает продолжение соединения.
  • Расширение Ограничения Имени.
    Не все наборы инструментов криптографии поддерживают его. Это расширение может помешать Zabbix в загрузке CA сертификатов, где этот раздел промаркирован как критический (зависит от конкретного набора инструментов криптографии).

Просмотр

Для просмотра детальных данных добавленных веб-сценариев, перейдите в Мониторинг → Веб или в Последние данные. Нажмите на имя сценария для просмотра подробной статистики.

Обзор сценариев веб-мониторинга можно найти в Мониторинг → ПАНЕЛЬ.

Простой мониторинг ssl сертификатов с помощью zabbix

Недостатком простоты является некоторое количество ручной работы по добавлению элементов данных и триггеров, но лучше один раз сделать и потом не бегать с дымящейся известно_чем в день X.

1. Импортируем шаблон в Zabbix (на версиях 2.2 — 2.4 точно будет работать) zbx_export_templates_ssl;

2. «Присоединяем» шаблон к Zabbix server;

3. Правим конфиг Zabbix агента на сервере (я надеюсь он у вас установлен и мониторит сам сервер, потому что для этого есть хороший шаблон «из коробки»). Добавляем в /etc/zabbix/zabbix_agentd.conf (если у вас debian или вроде того).

UserParameter=ssl.eol[*],date -d "`echo | openssl s_client -connect "$1":"$2" 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | sed 's|.*notAfter=||'`"  %s
UserParameter=ssl.current,date  %s

4. Перезапускаем Zabbix агента /etc/init.d/zabbix-agent restart

5. Затем можно сходить в «Последние данные», выбрать Zabbix server и убедиться что элемент данных возвращает значения. А так же открыть шаблон и посмотреть из чего он состоит.

Итак, у нас есть два элемента данных ssl.current — текущее время и ssl.eol[google.com,443] (end-of-life) в unix формате. Данные забираются с агента путём манипуляции с конвертацией даты. Для элемента данных добавлено два триггера, которые срабатывают за три недели и за неделю до окончания срока действия сертификата. Для простоты клонируйте элементы данных и триггеры, меняя нужные значения. И не забудьте добавить зависимость трёхнедельного триггера от недельного.

Про сертификаты:  Антистатическая ткань

Если у вас что-то не завелось — попробуйте на Zabbix сервере вручную выполнить запрос:

echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -dates

Команда позаимствована тут: http://www.shellhacks.com/ru/Kak-Proverit-Srok-Deystviya-SSL-Sertifikata-iz-Komandnoy-Stroki-v-Linux

Списки отозванных сертификатов (crl)

Если сертификат скомпрометирован, CA может отозвать его, включив в CRL. Списки CRL можно настраивать в файлах конфигурации сервера, прокси и агента, используя параметр TLSCRLFile. Например:

TLSCRLFile=/home/zabbix/zabbix_crl_file

где zabbix_crl_file может содержать списки CRL от нескольких CA и может выглядеть следующим образом:

-----BEGIN X509 CRL-----
       MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
       ...
       treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
       -----END X509 CRL-----
       -----BEGIN X509 CRL-----
       MIIB TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
       ...
       CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
       -----END X509 CRL-----

CRL файл загружается только при запуске Zabbix. При обновлении CRL требуется перезапуск.

Если компонент Zabbix скомпилирован с OpenSSL и используются списки CRL, тогда каждый сертификат верхнего и промежуточного уровней CA в цепочках сертификатов должен иметь соответствующий список CRL (может быть пустым) в TLSCRLFile.

Управление зашированными соединениями

Соединения в Zabbix могут использовать:

Имеется два важных параметра, которые используются, чтобы указать шифрование между компонентами Zabbix:

TLSConnect задает какое использовать шифрование и может принимать одно из 3 значений (unencrypted, PSK, certificate). TLSConnect используется в файлах конфигурации Zabbix прокси (в активном режиме задает только подключения к серверу)

и Zabbix agentd (при активных проверках). В веб-интерфейсе Zabbix параметр TLSConnect является эквивалентом поля Подключения к узлу сети с вкладки Настройка→Узлы сети→<какой-то узел сети>→Шифрование и поля Подключения к прокси с вкладки Администрирование→Прокси→<какой-то прокси>

TLSAccept задает какой тип соединений разрешен при входящих подключениях. Тип подключений: unencrypted, PSK, certificate. Можно указать одно или более значений. TLSAccept используется в файлах конфигурации Zabbix прокси (в пассивном режиме задает только соединения с сервера)

и Zabbix agentd (при пассивных проверках). В веб-интерфейсе Zabbix параметр TLSAccept является эквивалентом поля Соединения с узла сети с вкладки Настройка→Узлы сети→<какой-то узел сети>→Шифрование и поля “Соединения с прокси” с вкладки Администрирование→Прокси→<какой-то прокси>→Шифрование.

Как правило, вы настраиваете только один тип шифрования для входящих подключений. Но вы можете захотите переключить режим шифрования, например с незашированного на основанный на сертификатах с минимальным временем простоя и с возможностью отката. Для этого вы можете задать TLSAccept=unencrypted,cert в файле конфигурации agentd и перезапустить агента Zabbix.

Затем вы можете протестировать подключение от zabbix_get к агенту, используя сертификат. Если подключение работает, вы можете перенастроить шифрование у этого агента в Zabbix веб-интерфейсе на вкладке Настройка→Узлы сети→<какой-то узел сети>

→Шифрование, переключив настройку Подключения к узлу сети на “Сертификат”.Когда кэш конфигурации сервера обновится (и конфигурация прокси обновится, если узел сети наблюдается через прокси), тогда подключения к этому агенту будут зашифрованы.

Если всё работает как ожидается, вы можете задать TLSAccept=cert в файле конфигурации агента и перезапустить Zabbix агента.Теперь агент будет принимать только зашифрованные подключения на основе сертификатов. Незашифрованные и основанные на PSK подключения будут отклонены.

Шифрование на сервере и прокси работает аналогичным образом. Если в веб-интерфейсе Zabbix в настройке узла сети Соединения с узла сети задано равным “Сертификат”, тогда от агента (активные проверки) и zabbix_sender (траппер элементы данных) будут приниматься только зашифрованные соединения на основе сертификатов.

Скорее всего вы настроите входящие и исходящие соединения на использование одного типа шифрования или без шифрования вовсе. Но, технически, имеется возможность настроить шифрование асимметрично, например, шифрование на основе сертификатов для входящих подключений и на основе PSK для исходящих подключений.

Обзорные настройки шифрования отображаются в веб-интерфейсе Zabbix Настройка→Узлы сети по каждому узлу сети по правой стороне, в колонке ШИФРОВАНИЕ АГЕНТА. Примеры отображения настроек:

По умолчанию используются незашифрованные подключения. Шифрование необходимо настраивать по каждому узлу сети и прокси отдельно.

Zabbix_get и zabbix_sender с шифрованием

Смотрите страницы помощи zabbix_get и zabbix_sender по использованию этих утилит при наличии шифрования.

Оцените статью
Мой сертификат
Добавить комментарий