Zabbix поддерживает шифрование коммуникаций между компонентами Zabbix с использованием протокола Transport Layer Security (TLS) версий 1.2 и 1.3 (в зависимости от криптографической библиотеки). Поддерживается шифрование на основе сертификата и на основе общего ключа (pre-shared key, PSK).
Шифрование может быть настроено для соединений:
Шифрование опционально и настраивается для отдельных компонентов:
Программы Zabbix демонов слушают один порт для зашифрованных и незашифрованных входящих подключений. Добавление шифрования не потребует открывать новые порты на брандмауэрах.
Для поддержки шифрования Zabbix должен быть скомпилирован и слинкован с одной из поддерживаемых криптобиблиотек:
tls_*(), специфичные для LibreSSL, не используются. Компоненты Zabbix, скомпилированные с LibreSSL, не смогут использовать PSK, могут использоваться только сертификаты.Вы можете найти более подробную информацию о настройке SSL для веб-интерфейса Zabbix по ссылке на наилучшие практики.
Библиотека выбирается при помощи соответствующей опции в скрипте «configure»:
--with-gnutls[=DIR]--with-openssl[=DIR] (также используется и для LibreSSL)Например, чтобы сконфигурировать исходные коды для сервера и агента с OpenSSL, вы можете использовать что-то вроде:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-opensslРазные компоненты Zabbix можно скомпилировать с различными криптобиблиотеками (например, сервер с OpenSSL, агент с GnuTLS).
Если вы планируете использовать общие ключи (pre-shared keys, PSK), рассмотрите возможность использования библиотек GnuTLS или OpenSSL 1.1.0 (или новее) с компонентами Zabbix, использующими PSK. Библиотеки GnuTLS и OpenSSL 1.1.0 поддерживают наборы шифров PSK с совершенной прямой секретностью (Perfect forward secrecy). Более старые версии библиотеки OpenSSL (1.0.1, 1.0.2c) также поддерживают PSK, но доступные наборы шифров PSK не обеспечивают совершенную прямую секретность.
Соединения в Zabbix могут использовать:
Имеется два важных параметра, которые используются, чтобы указать шифрование между компонентами Zabbix:
TLSConnect используется в файлах конфигурации Zabbix прокси (в активном режиме, задаёт только подключения к серверу) и Zabbix агентов (для активных проверок). В веб-интерфейсе Zabbix эквивалентом параметру TLSConnect является поле Подключения к узлу сети на вкладке Сбор данных → Узлы сети → <какой-то узел сети> → Шифрование (Data collection → Hosts → <somehost> → Encryption) и поле Подключения к прокси (Connections to proxy) на вкладке Администрирование → Прокси → <какой-то прокси> → Шифрование (Administration → Proxies → <some proxy> → Encryption). Если настроенный тип шифрования для соединения завершится неудачей, другие типы шифрования не будут опробованы
TLSAccept используется в файлах конфигурации Zabbix прокси (в пассивном режиме, задаёт только соединения от сервера) и Zabbix агента (для пассивных проверок). В веб-интерфейсе Zabbix эквивалентом параметра TLSAccept является поле Соединения с узла сети (Connections from host) на вкладке Сбор данных → Узлы сети → <какой-то узел сети> → Шифрование (Data collection → Hosts → <somehost> → Encryption) и поля Соединения с прокси (Connections from proxy) на вкладке Администрирование → Прокси → <какой-то прокси> → Шифрование (Administration → Proxies → <some proxy> → Encryption).
Как правило, вы настраиваете только один тип шифрования для входящих подключений. Но вы можете захотеть переключить режим шифрования, например, с незашированного на основанный на сертификатах с минимальным временем простоя и с возможностью отката. Чтобы достичь этого:
TLSAccept=unencrypted,cert в файле конфигурации агента Zabbix и перезапустите агента.TLSAccept=cert в файле конфигурации агента и перезапустить Zabbix агента. Теперь агент будет принимать только зашифрованные подключения на основе сертификатов. Незашифрованные и основанные на PSK подключения будут отклонены.Шифрование на сервере и прокси работает аналогичным образом. Если в веб-интерфейсе Zabbix в настройке узла сети Соединения с узла сети (Connections from host) задано равным «Сертификат (Certificate)», тогда от агента (активные проверки) и zabbix_sender (траппер элементы данных) будут приниматься только зашифрованные соединения на основе сертификатов.
Скорее всего, вы настроите входящие и исходящие соединения на использование одного типа шифрования или без шифрования вовсе. Но, технически, имеется возможность настроить шифрование асимметрично, например, шифрование на основе сертификатов для входящих подключений и на основе PSK для исходящих подключений.
Настройки шифрования по каждому узлу сети отображаются в веб-интерфейсе Zabbix Сбор данных →Узлы сети (Data collection → Hosts), в столбце Шифрование агента (Agent encryption). Примеры отображения настроек:
| Пример | Подключения К узлу сети | Разрешённые подключения ОТ узла сети | Отклонённые подключения С узла сети | 
|---|---|---|---|
|  | Незашифровано | Незашифровано | Зашифровано, на основе сертификата и PSK | 
|  | Зашифровано на основе сертификата | Зашифровано на основе сертификата | Незашифровано и зашифровано на основе PSK | 
|  | Зашифровано на основе PSK | Зашифровано на основе PSK | Незашифровано и зашифровано на основе сертификата | 
|  | Зашифровано на основе PSK | Незашифровано и зашифровано на основе PSK | Зашифровано на основе сертификата | 
|  | Зашифровано на основе сертификата | Незашифровано, зашифровано на основе PSK или зашифровано на основе сертификата | - | 
По умолчанию используются незашифрованные подключения. Шифрование необходимо настраивать по каждому узлу сети и прокси отдельно.
Смотрите страницы помощи zabbix_get и zabbix_sender по использованию этих утилит при наличии шифрования.
Алгоритмы по умолчанию настраиваются внутри в процессе запуска Zabbix.
Также поддерживаются и заданные пользователем алгоритмы шифрования для GnuTLS и OpenSSL. Пользователи могут настраивать алгоритмы в соответствии со своими политиками безопасности. Использование этой возможности опционально (встроенные алгоритмы по умолчанию всё ещё работают).
Для криптобиблиотек, скомпилированных с настройками по умолчанию, встроенные в Zabbix правила обычно дают в итоге следующие алгоритмы шифрования (от более высокого уровня приоритета к более низкому):
| Библиотека | Алгоритмы шифрования сертификатов | Алгоритмы шифрования PSK | 
|---|---|---|
| GnuTLS 3.1.18 | TLS_ECDHE_RSA_AES_128_GCM_SHA256 TLS_ECDHE_RSA_AES_128_CBC_SHA256 TLS_ECDHE_RSA_AES_128_CBC_SHA1 TLS_RSA_AES_128_GCM_SHA256 TLS_RSA_AES_128_CBC_SHA256 TLS_RSA_AES_128_CBC_SHA1 | TLS_ECDHE_PSK_AES_128_CBC_SHA256 TLS_ECDHE_PSK_AES_128_CBC_SHA1 TLS_PSK_AES_128_GCM_SHA256 TLS_PSK_AES_128_CBC_SHA256 TLS_PSK_AES_128_CBC_SHA1 | 
| OpenSSL 1.0.2c | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-SHA256 AES128-SHA | PSK-AES128-CBC-SHA | 
| OpenSSL 1.1.0 | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA | ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA | 
| OpenSSL 1.1.1d | TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA | TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA | 
Встроенные критерии выбора алгоритмов шифрования могут быть переопределены алгоритмами шифрования, заданными пользователем.
Алгоритмы шифрования, заданные пользователем, — это возможность, предназначенная для продвинутых пользователей, которые понимают алгоритмы шифрования TLS, их безопасность и последствия ошибок, и которые разбираются в устранении неполадок с TLS.
Встроенные критерии выбора алгоритмов шифрования могут быть переопределены, используя следующие параметры:
| Область действия переопределения | Параметр | Значение | Описание | 
|---|---|---|---|
| Выбор алгоритмов шифрования для сертификатов | TLSCipherCert13 | Корректные строки шифров OpenSSL 1.1.1 для протокола TLS 1.3 (их значения передаются функции OpenSSL SSL_CTX_set_ciphersuites()). | Критерии выбора алгоритмов шифрования при использовании сертификатов для TLS 1.3. Только OpenSSL 1.1.1 или новее. | 
| TLSCipherCert | Корректные строки шифров OpenSSL для TLS 1.2 или корректные строки приоритетов GnuTLS. Их значения передаются функциям SSL_CTX_set_cipher_list()илиgnutls_priority_init(), соответственно. | Критерии выбора алгоритмов шифрования при использовании сертификатов для TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL). | |
| Выбор алгоритмов шифрования для PSK | TLSCipherPSK13 | Корректные строки шифров OpenSSL 1.1.1 для протокола TLS 1.3 (их значения передаются функции OpenSSL SSL_CTX_set_ciphersuites()). | Критерии выбора алгоритмов шифрования при использовании PSK для TLS 1.3 Только OpenSSL 1.1.1 или новее. | 
| TLSCipherPSK | Корректные строки шифров OpenSSL для TLS 1.2 или корректные строки приоритетов GnuTLS. Их значения передаются функциям SSL_CTX_set_cipher_list()илиgnutls_priority_init(), соответственно. | Критерии выбора алгоритмов шифрования при использовании PSK для TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL). | |
| Комбинированный список алгоритмов шифрования для сертификатов и PSK | TLSCipherAll13 | Корректные строки шифров OpenSSL 1.1.1 для протокола TLS 1.3 (их значения передаются функции OpenSSL SSL_CTX_set_ciphersuites()). | Критерии выбора алгоритмов шифрования для TLS 1.3 только OpenSSL 1.1.1 или новее. | 
| TLSCipherAll | Корректные строки шифров OpenSSL для TLS 1.2 или корректные строки приоритетов GnuTLS. Их значения передаются функциям SSL_CTX_set_cipher_list()илиgnutls_priority_init(), соответственно. | Критерии выбора алгоритмов шифрования для TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL). | 
Чтобы переопределить выбор алгоритмов шифрования в утилиах zabbix_get и zabbix_sender — используйте параметры командной строки:
--tls-cipher13--tls-cipherЭти параметры опциональны. Если параметр не указан, используется внутреннее значение по умолчанию. Если параметр указан, он не может быть пустым.
Если настройка значения параметров TLSCipher* в криптобиблиотеке завершается неудачей, то сервер, прокси или агент не запустятся, а в журнал будет записано сообщение об ошибке.
Крайне важно понимать, когда применим каждый из параметров.
Простейший случай — это исходящие соединения:
--tls-cipher13 и --tls-cipher (само шифрование недвусмысленно указывается параметром --tls-connect)Нменого сложнее с входящими соединениями, т.к. правила зависят от компонентов и конфигурации.
Для Zabbix агента:
| Настройка соединений агента | Настройка шифров | 
|---|---|
| TLSConnect=cert | TLSCipherCert, TLSCipherCert13 | 
| TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 | 
| TLSAccept=cert | TLSCipherCert, TLSCipherCert13 | 
| TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 | 
| TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 | 
Для Zabbix сервера и прокси:
| Настройка соединений | Настройка шифров | 
|---|---|
| Исходящие соединения, используя PSK | TLSCipherPSK, TLSCipherPSK13 | 
| Исходящие соединения, используя сертификаты | TLSCipherAll, TLSCipherAll13 | 
| Входящие соединения, используя PSK, если у сервера нет сертификата | TLSCipherPSK, TLSCipherPSK13 | 
| Входящие соединения, используя PSK, если у сервера есть сертификат | TLSCipherAll, TLSCipherAll13 | 
В двух таблицах выше можно увидеть некоторые шаблоны:
Следующие таблицы показывают встроенные по умолчанию значения TLSCipher*. Они могут являться хорошей отправной точкой для ваших собственных кастомизированных значений.
| Параметр | GnuTLS 3.6.12 | 
|---|---|
| TLSCipherCert | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 | 
| TLSCipherPSK | NONE:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL | 
| TLSCipherAll | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 | 
| Параметр | OpenSSL 1.1.1d 1 | 
|---|---|
| TLSCipherCert13 | |
| TLSCipherCert | EECDH+aRSA+AES128:RSA+aRSA+AES128 | 
| TLSCipherPSK13 | TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 | 
| TLSCipherPSK | kECDHEPSK+AES128:kPSK+AES128 | 
| TLSCipherAll13 | |
| TLSCipherAll | EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128 | 
1 Значения по умолчанию отличаются для более старых версий OpenSSL (1.0.1, 1.0.2, 1.1.0), для LibreSSL и если OpenSSL скомпилирован без поддержки PSK.
Примеры заданных пользователем алгоритмов шифрования
Смотрите ниже следующие примеры заданных пользователем алгоритмов шифрования:
Чтобы видеть выбираемые алгоритмы шифрования, вам нужно выставить в файле конфигурации параметр 'DebugLevel=4' либо использовать опцию -vv для утилиты zabbix_sender.
Возможно, для получения желаемых алгоритмов шифрования придётся немного поэкспериментировать с параметрами TLSCipher*. Неудобно перезапускать Zabbix сервер, прокси или агента множество раз только для того, чтобы подогнать параметры TLSCipher*. Более удобным вариантом является использование утилиты zabbix_sender или команды openssl. Давайте рассмотрим оба.
1. Использование zabbix_sender.
Давайте сделаем тестовый файл конфигурации, например, /home/zabbix/test.conf, с таким же синтаксисом, как и файл zabbix_agentd.conf:
  Hostname=nonexisting
         ServerActive=nonexisting
         
         TLSConnect=cert
         TLSCAFile=/home/zabbix/ca.crt
         TLSCertFile=/home/zabbix/agent.crt
         TLSKeyFile=/home/zabbix/agent.key
         TLSPSKIdentity=nonexisting
         TLSPSKFile=/home/zabbix/agent.pskДля данного примера вам нужны корректные сертификаты Центра Авторизации (CA) и агента, а также общий ключ (PSK). Подправьте имена и пути файлов сертификатов и PSK в соответствии с вашей средой.
Если вы не используете сертификаты, а только общий ключ, тестовый файл может быть проще:
  Hostname=nonexisting
         ServerActive=nonexisting
         
         TLSConnect=psk
         TLSPSKIdentity=nonexisting
         TLSPSKFile=/home/zabbix/agentd.pskВыбираемые алгоритмы шифрования могуть быть видны путём запуска утилиты zabbix_sender (пример скомпилирован с OpenSSL 1.1.d):
  $ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites
         zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA
         zabbix_sender [41271]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA
         zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHAЗдесь вы можете увидеть алгоритмы шифрования, выбранные по умолчанию. Эти значения по умолчанию выбираются, чтобы обеспечить совместимость с Zabbix агентами, работающими на системах с более старыми версиями OpenSSL (от 1.0.1).
С более новыми системами вы можете предпочесть усилить безопасность, разрешая только некоторые алгоритмы шифрования, скажем, только алгоритмы с PFS (Perfect Forward Secrecy, совершенная прямая секретность). Давайте попробуем разрешить только алгоритмы с PFS, используя параметры TLSCipher*.
Результатом будет несовместимость с системами, использующими OpenSSL 1.0.1 и 1.0.2, если используется общий ключ PSK. Шифрование на основе сертификата должно работать.
Добавим две строки в файл конфигурации test.conf:
и проверим снова:
  $ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites            
         zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA        
         zabbix_sender [42892]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA        
         zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA        Списки «certificate ciphersuites» и «PSK ciphersuites» поменялись — теперь они короче, чем раньше; как и ожидалось, содержат только алгоритмы TLS 1.3 и TLS 1.2 ECDHE-*.
2. TLSCipherAll и TLSCipherAll13 нельзя протестировать с помощью zabbix_sender; они не влияют на значение «certificate and PSK ciphersuites», показанное в примере выше. Чтобы подкорректировать TLSCipherAll и TLSCipherAll13, вам нужно экспериментировать с агентом, прокси или сервером.
Так, чтобы разрешить только алгоритмы PFS, вам, возможно, потребуется добавить до трёх параметров
  TLSCipherCert=EECDH+aRSA+AES128
         TLSCipherPSK=kECDHEPSK+AES128
         TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128в zabbix_agentd.conf, zabbix_proxy.conf и zabbix_server_conf, если каждый из них имеет сконфигурированный сертификат, а агент имеет ещё и PSK.
Если ваша среда Zabbix использует только шифрование на основе общего ключа и не использует сертификаты, то достаточно только одной строки:
Теперь, когда вы понимаете, как это работает, вы можете проверить выбор алгоритма шифрования даже извне Zabbix, командой openssl. Давайте проверим значения всех трёх параметров TLSCipher*:
  $ openssl ciphers EECDH+aRSA+AES128 | sed 's/:/ /g'
         TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
         $ openssl ciphers kECDHEPSK+AES128 | sed 's/:/ /g'
         TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
         $ openssl ciphers EECDH+aRSA+AES128:kECDHEPSK+AES128 | sed 's/:/ /g'
         TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHAВы можете предпочесть openssl ciphers с опцией -V для более подробного вывода:
  $ openssl ciphers -V EECDH+aRSA+AES128:kECDHEPSK+AES128
                   0x13,0x02 - TLS_AES_256_GCM_SHA384  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(256) Mac=AEAD
                   0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any      Au=any  Enc=CHACHA20/POLY1305(256) Mac=AEAD
                   0x13,0x01 - TLS_AES_128_GCM_SHA256  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(128) Mac=AEAD
                   0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
                   0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
                   0xC0,0x13 - ECDHE-RSA-AES128-SHA    TLSv1 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
                   0xC0,0x37 - ECDHE-PSK-AES128-CBC-SHA256 TLSv1 Kx=ECDHEPSK Au=PSK  Enc=AES(128)  Mac=SHA256
                   0xC0,0x35 - ECDHE-PSK-AES128-CBC-SHA TLSv1 Kx=ECDHEPSK Au=PSK  Enc=AES(128)  Mac=SHA1Аналогичным образом вы можете протестировать строки приоритета для GnuTLS:
  $ gnutls-cli -l --priority=NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
         Cipher suites for NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
         TLS_ECDHE_RSA_AES_128_GCM_SHA256                        0xc0, 0x2f      TLS1.2
         TLS_ECDHE_RSA_AES_128_CBC_SHA256                        0xc0, 0x27      TLS1.2
         
         Protocols: VERS-TLS1.2
         Ciphers: AES-128-GCM, AES-128-CBC
         MACs: AEAD, SHA256
         Key Exchange Algorithms: ECDHE-RSA
         Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-X448, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192
         PK-signatures: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-EdDSA-Ed448, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1Zabbix использует AES128 как встроенное умолчание для данных. Предположим, что вы используете сертификаты и хотите переключиться на AES256, на OpenSSL 1.1.1.
Это может быть достигнуто путём добавления соответствующих параметров в zabbix_server.conf:
  TLSCAFile=/home/zabbix/ca.crt
         TLSCertFile=/home/zabbix/server.crt
         TLSKeyFile=/home/zabbix/server.key
         TLSCipherCert13=TLS_AES_256_GCM_SHA384
         TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384
         TLSCipherPSK13=TLS_CHACHA20_POLY1305_SHA256
         TLSCipherPSK=kECDHEPSK+AES256:-SHA1
         TLSCipherAll13=TLS_AES_256_GCM_SHA384
         TLSCipherAll=EECDH+aRSA+AES256:-SHA1:-SHA384Несмотря на то, что будут использованы только алгоритмы шифрования на основе сертификатов, параметры TLSCipherPSK* также определены, чтобы не использовались их значения по умолчанию, для более широкой совместимости включающие менее безопасные шифры. Алгоритмы шифрования PSK нельзя полностью отключить для сервера/прокси.
И в zabbix_agentd.conf: