2 Использование общих ключей (pre-shared keys)

Обзор

Каждый общий ключ (pre-shared key, PSK) в Zabbix является парой из:

  • несекретной строки идентификации PSK,
  • секретного значения строки PSK.

Строкой идентификации PSK является непустая строка UTF-8. Например, «PSK ID 001 Zabbix agentd». Это уникальное имя, по которому компоненты Zabbix ссылаются на этот конкретный общий ключ. Не помещайте чувствительную информацию в строку идентификации PSK - она передаётся по сети незашифрованной.

Значением PSK является сложно угадываемая строка из шестнадцатеричных цифр, например: «e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9».

Ограничения размера

В Zabbix существуют ограничения размера для идентификатора и значения PSK; в некоторых случаях криптографическая библиотека может иметь более низкий предел:

Компонент Макс. размер идентификатора PSK Мин. размер значения PSK Макс. размер значения PSK
Zabbix 128 символов UTF-8 128 бит (16-байтный PSK, вводится как 32 шестнадцатеричные цифры) 2048 бит (256-байтный PSK, вводится как 512 шестнадцатеричных цифр)
GnuTLS 128 байт (может включать символы UTF-8) - 2048 бит (256-байтный PSK, вводится как 512 шестнадцатеричных цифр)
OpenSSL 1.0.x, 1.1.0 127 байт (может включать символы UTF-8) - 2048 бит (256-байтный PSK, вводится как 512 шестнадцатеричных цифр)
OpenSSL 1.1.1 127 байт (может включать символы UTF-8) - 512 бит (64-байтный PSK, вводится как 128 шестнадцатеричных цифр)
OpenSSL 1.1.1a and later 127 байт (может включать символы UTF-8) - 2048 бит (256-байтный PSK, вводится как 512 шестнадцатеричных цифр)

Веб-интерфейс Zabbix позволяет настраивать строку идентификатора PSK длиной до 128 символов и PSK длиной до 2048 бит независимо от используемых криптографических библиотек.
Если некоторые компоненты Zabbix поддерживают более низкие пределы, пользователь сам несет ответственность за настройку идентификатора и значения PSK с допустимой длиной для этих компонентов.
Превышение ограничений длины приводит к сбоям связи между компонентами Zabbix.

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

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

Генерация PSK

Например, 256-битный (32 байта) PSK можно сгенерировать с помощью следующих команд:

  • с помощью OpenSSL:
<!-- -->
  $ openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • с помощью GnuTLS:
<!-- -->
  $ psktool -u psk_identity -p database.psk -s 32
  Generating a random key for user 'psk_identity'
  Key stored to database.psk

  $ cat database.psk 
  psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Обратите внимание, что приведённая выше команда "psktool" создаёт файл базы данных с идентификатором PSK и связанным с ним PSK. Zabbix ожидает, что в файле PSK будет только PSK, поэтому из файла следует удалить строку идентификатора и двоеточие (':').

Настройка PSK для взаимодействия сервер-агент (пример)

На узле сети агента запишите значение PSK в файл, например, /home/zabbix/zabbix_agentd.psk. Файл должен содержать PSK в первой текстовой строке, например:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Установите права доступа к файлу PSK — он должен быть доступен для чтения только пользователю Zabbix.

Отредактируйте параметры TLS в конфигурационном файле агента zabbix_agentd.conf, например, задайте:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001

Агент будет подключаться к серверу (активные проверки) и принимать от сервера и zabbix_get только соединения с использованием PSK. Идентификатор PSK будет "PSK 001".

Перезапустите агент. Теперь вы можете проверить соединение с помощью zabbix_get, например:

zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk

(Чтобы минимизировать время простоя, смотрите, как изменить тип соединения в разделе Управление шифрованием соединений).

Настройте шифрование PSK для этого агента в веб-интерфейсе Zabbix:

  • Перейдите в: Сбор данных → Узлы сети
  • Выберите узел сети и откройте вкладку Шифрование

Пример:

psk\_config.png

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

Когда кэш конфигурации будет синхронизирован с базой данных, новые соединения будут использовать PSK. Проверьте журналы сервера и агента на наличие сообщений об ошибках.

Настройка PSK для связи сервер - активный прокси (пример)

На прокси запишите значение PSK в файл, например, /home/zabbix/zabbix_proxy.psk. Файл должен содержать PSK в первой текстовой строке, например:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Установите права доступа к файлу PSK — он должен быть доступен для чтения только пользователю Zabbix.

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

TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002

Прокси будет подключаться к серверу с использованием PSK. Идентификатор PSK будет "PSK 002".

(Чтобы минимизировать время простоя, смотрите, как изменить тип соединения в разделе Управление шифрованием соединений).

Настройте PSK для этого прокси в веб-интерфейсе Zabbix. Перейдите в Administration→Proxies, выберите прокси, откройте вкладку "Encryption". В поле "Connections from proxy" отметьте PSK. Вставьте в поле "PSK identity" значение "PSK 002", а в поле "PSK" — "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9". Нажмите "Update".

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

Для пассивного прокси процедура очень похожа. Единственное отличие — задайте TLSAccept=psk в файле конфигурации прокси и установите "Connections to proxy" в веб-интерфейсе Zabbix в значение PSK.