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. Проверьте журналы сервера и агента на наличие сообщений об ошибках.
Настройка 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.