Каждый общий ключ (pre-shared key, PSK) в Zabbix на самом деле является парой из:
Строкой идентификации 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 позволяет указать до 128 символов строки идентификатора PSK и до 2048-бит PSK вне зависимости от использованной крипто библиотеки.
Если некоторые компоненты Zabbix поддерживают меньшую длину, только пользователь несет ответственность за настройку идентификатора и значения PSK в соответствии с разрешённой в этих компонентах длиной.
Превышение ограничений длины приведёт к ошибкам в подключениях между компонентами Zabbix.
Перед тем как Zabbix сервер подключится к агенту с использованием общего ключа, сервер поищет идентификатор PSK и значение PSK этого агента в базе данных (в действительности в кэше конфигурации). Принимая подключение, агент использует идентификатор PSK и значение PSK из своего файла конфигурации. Если обе пары имеют одинаковые идентификаторы PSK и значения PSK, соединение может быть успешным.
Каждая строка идентификации PSK должна иметь в паре с ней только одно значение. Пользователь несет ответственность за обеспечение того, что не будет двух ключей с одинаковыми строками идентификации, но разными значениями. Несоблюдение этого требования может привести к непредсказуемым сбоям связи между компонентами Zabbix, использующими общие ключи с этими строками идентификации PSK.
Например, 256-битный (32 байт) PSK можно сгенерировать при помощи следующих команд:
$ 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» выше генерирует файл базы данных с идентификатором ключа и со связанным с ним значением. Zabbix ожидает в файле с ключом только значение, поэтому строку идентификации и двоеточие («:») нужно оттуда удалить.
На хосте агента запишите значение PSK в файл, например, /home/zabbix/zabbix_agentd.psk
. Этот файл должен содержать общий ключ в первой строке текста, например:
Задайте права доступа к PSK файлу — он должен быть доступен для чтения только пользователю Zabbix.
Измените параметры TLS в файле конфигурации zabbix_agentd.conf
; например, выставьте:
Агент будет подключаться к серверу (активные проверки) и принимать от сервера и zabbix_get
только те соединения, которые используют общий ключ. Идентификатором ключа будет «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
(Чтобы свести к минимуму время простоя, смотрите как изменить тип подключения в Управлении зашифрованными соединениями).
Настройте для этого агента шифрование с общим ключом в веб-интерфейсе Zabbix.
Пример:
Все обязательные поля ввода отмечены красной звёздочкой.
Когда кэш конфигурации синхронизируется с базой данных, новые подключения будут использовать общий ключ. Проверьте файлы журналов сервера и агента на предмет сообщений об ошибках.
На хосте прокси запишите значение общего ключа в файл, например, /home/zabbix/zabbix_proxy.psk
. Этот файл должен содержать ключ в первой строке текста, например:
Задайте права доступа к PSK файлу — он должен быть доступен для чтения только пользователю Zabbix.
Измените параметры TLS в файле конфигурации zabbix_proxy.conf
; например, задайте:
Прокси будет подключаться к серверу, используя общий ключ. Идентификатором общего ключа будет «PSK 002».
(Чтобы свести к минимуму время простоя, смотрите как изменить тип подключения в Управлении зашифрованными соединениями).
Настройте общий ключ для этого прокси в веб-интерфейсе Zabbix. Перейдите на Администрирование → Прокси, выберите прокси, перейдите на вкладку «Шифрование». Переключите «Соединения с прокси» на PSK
. Вставьте в поле «Идентификатор PSK» значение «PSK 002» и «e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9» в поле «PSK». Нажмите «Обновить».
Перезапустите прокси. Он начнет использовать зашифрованные соединения к серверу на основе общего ключа. Проверьте файлы журналов сервера и прокси на предмет сообщений об ошибках.
В случае пассивных прокси процедура очень похожа. Разница лишь в том, что в файле конфигурации прокси необходимо задать TLSAccept=psk
и переключить «Подключения к прокси» в Zabbix веб-интерфейсе на PSK
.