Каждый pre-shared key (PSK) в Zabbix является парой:
Строкой идентификации PSK является не пустая UTF-8 строка. Например, “PSK ID 001 Zabbix agentd”. Это уникальное имя, по которому этот конкретный PSK упоминается 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 шестнадцатеричных цифр) |
mbed TLS (PolarSSL) | 128 UTF-8 символы | - | 256-бит (ограничение по умолчанию) (32-байт PSK, введенные как 64 шестнадцатеричных цифр) |
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 шестнадцатеричных цифр) |
Перед тем как Zabbix сервер подключится к агенту с использованием PSK, сервер поищет идентификатор PSK и значение PSK этого агента в базе данных (в действительности в кэше конфигурации). После приема подключения агент использует идентификатор PSK и значение PSK из своего файла конфигурации. Если обе пары имеют одинаковые идентификаторы PSK и значения PSK, соединение может быть успешным.
Например, можно сгенерировать 256-битный (32 байт) PSK при помощи следующих команд:
$ openssl rand -hex 32 af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
$ 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 в файл, например, /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 в файл, например,
/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. Перейдите на Администрирование→Прокси, выберите прокси, перейдите на вкладку “Шифрование”.
Переключите “Соединения с прокси” на PSK
. Вставьте в поле “Идентификатор PSK” значение “PSK 002” и
“e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9” в поле “PSK”. Нажмите “Обновить”.
Перезапустите прокси. Он начнет использовать зашифрованные соединения к серверу на основе PSK. Проверьте файлы журналов сервера и прокси на предмет сообщений об ошибках.
В случае пассивных прокси процедура очень похожа. Разница лишь в том, что необходимо задать TLSAccept=psk
в файле конфигурации прокси и переключить “Подключения к прокси” в Zabbix веб-интерфейсе на PSK
.