Zabbix - включаем шифрование для Агента (Agent Encryption)

Если необходимо шифровать соединение между агентом и сервером нам потребуется включить шифрование. Можно использовать шифрование по сертификату или по PSK (ключу Pre-Shared Key). В этом примере я рассмотрю именно PSK, т.к. это на мой взгляд самый удобный способ шифрования: ключ сгенерировать легко и просто, так же можно использовать несколько ключей.

Если у нас Linux или что-то подобное - нам повезло, ставим агента при помощи apt, rpm и прочих удобных штук, агент уже идет со всеми необходимыми библиотеками. Если Windows - придется немного поработать руками. Загружаем агента отсюда: https://www.zabbix.com/download_agents при этом нам нужна версия с поддержкой шифрования (в поле Encryption должно быть написано OpenSSL).

Распаковываем агента в папку, например C:\Zabbix

[Устарело, официальный агент уже слинкован со всеми библиотеками] Теперь нам нужны библиотеки OpenSSL. Самое лучшее - взять вот отсюда https://support.zabbix.com/browse/ZBXNEXT-3047 уже собранный агент Zabbix. Т.к. у них версии агентов часто довольно старенькие, можно брать последнюю версию - из нее мы и выковыряем библиотеки. Вытаскиваем из архива файлы libcrypto-1_1.dll, libssl-1_1.dll и msvcr120.dll в нашу папку C:\Zabbix

Оригинал: https://www.zabbix.com/documentation/current/ru/manual/encryption/using_pre_shared_keys

For example, a 256-bit (32 bytes) PSK can be generated using the following commands:

    with OpenSSL:

  $ openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429

    with 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

Note that “psktool” above generates a database file with a PSK identity and its associated PSK. Zabbix expects just a PSK in the PSK file, so the identity string and colon (':') should be removed from the file.

Полученный ключ сохраняем в файл zabbix_agentd.psk и копируем его в C:\Zabbix

Добавляем в файл zabbix_agentd.conf настройки шифрования:

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK001
TLSPSKFile=C:\Zabbix\zabbix_agentd.psk

Установка в качестве службы:

zabbix_agentd.exe --config "C:\Zabbix\conf\zabbix_agentd.conf" --install

Запуск:

net start "Zabbix Agent"

Остановка:

net stop "Zabbix Agent"

Удаление службы:

zabbix_agentd.exe --uninstall

Заходим в настройки хоста (Configuratino → Hosts → ваш_хост) и открываем закладку Encyption. Заполняем поля:

  • Connection to host: PSK (Подключение к хосту от сервера Zabbix)
  • Connection from host: PSK (Подключение от хоста к серверу Zabbix)
  • PSK identity: PSK001 (Номер ключа в файле)
  • PSK: ваш_PSK_ключ (Сам ключ)

Применяем настройки, запускаем агент и смотрим логи - все должно заработать.