Шифрование

Подсистема поддерживает шифрование коммуникаций между компонентами с использованием протокола Transport Layer Security (TLS) версий 1.2 и 1.3 (в зависимости от криптографической библиотеки). Поддерживается шифрование на основе сертификата и на основе общего ключа (pre-shared key, PSK).

Шифрование может быть настроено для соединений:

  • между Сервером, Прокси, Агентом, утилитами zabbix_sender и zabbix_get;
  • к базе данных Подсистемы от веб-интерфейса и Сервера/Прокси.

Шифрование опционально и настраивается для отдельных компонентов:

  • некоторые Прокси и Агенты можно настроить на использование шифрования с Сервером на основе сертификатов, в то время как другие могут использовать шифрование на основе общего ключа, а остальные могут продолжать использовать незашифрованные соединения;
  • Сервер (Прокси) может использовать различные настройки шифрования для разных узлов сети.

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

Ограничения:

  • Закрытые ключи хранятся в виде обычного текста в файлах, которые компоненты Подсистемы считывают в процессе запуска.
  • Общие ключи вводятся в веб-интерфейсе и хранятся в базе данных в виде обычного текста.
  • Встроенное шифрование не защищает коммуникации:
    • между веб-сервером с веб-интерфейсом и веб-браузером на стороне пользователя;
    • между веб-интерфейсом и Сервером.
  • Каждое шифрованное соединение начинается с полных TLS-переговоров (TLS handshake), кэширование сессий и мандаты (tickets) не реализованы.
  • Добавление шифрования увеличивает время на проверки элементов данных и действия в зависимости от сетевых задержек:
    • Например, если задержка пакета составляет 100мс, то открытие TCP-соединения и отправка незашифрованного запроса займет около 200мс. При наличии шифрования добавится около 1000 мс на установление TLS-соединения;
    • Возможно, потребуется увеличить время ожидания (тайм-ауты), иначе некоторые элементы данных и действия, выполняющие удалённые скрипты на Агентах, смогут работать с незашифрованными соединениями, но не смогут при шифрованном соединении (будет превышено время ожидания).
  • Шифрование не поддерживается сетевым обнаружением. Проверки Агентов, выполняемые сетевым обнаружением, будут нешифрованными, и если Агент настроен отвергать нешифрованные соединения, то такие проверки не будут успешными.