- Алгоритмы шифрования
- Компиляция zabbix с поддержкой шифрования
- Настройка аутентификации
- Настройка сертификата на zabbix сервере
- Настройка сценария
- Настройка шагов
- Обзор
- Ограничения
- Ограничения в использовании crl расширений
- Ограничения при использовании расширений x.509 v3 сертификатов
- Просмотр
- Простой мониторинг ssl сертификатов с помощью zabbix
- Списки отозванных сертификатов (crl)
- Управление зашированными соединениями
- Zabbix_get и zabbix_sender с шифрованием
Алгоритмы шифрования
Алгоритмы конфигурируются внутри в процессе запуска 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.keyZabbix сервер подхватывает изменения в сертификатах без перезапуска.
Если сертификат клиента и приватный ключ находятся в одном файле, просто укажите его в поле “Файл 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 по использованию этих утилит при наличии шифрования.
