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 является поле Подключения к узлу сети на вкладке Настройка → Узлы сети → <какой-то узел сети> → Шифрование и поле Подключения к прокси на вкладке Администрирование → Прокси → <какой-то прокси> → Шифрование. Если настроенный тип шифрования для соединения завершится неудачей, другие типы шифрования не будут опробованы
TLSAccept
используется в файлах конфигурации Zabbix прокси (в пассивном режиме, задаёт только соединения от сервера) и Zabbix агента (для пассивных проверок). В веб-интерфейсе Zabbix эквивалентом параметра TLSAccept является поле Соединения с узла сети на вкладке Настройка → Узлы сети → <какой-то узел сети> → Шифрование и поля Соединения с прокси на вкладке Администрирование → Прокси → <какой-то прокси> → Шифрование.
Как правило, вы настраиваете только один тип шифрования для входящих подключений. Но вы можете захотеть переключить режим шифрования, например, с незашированного на основанный на сертификатах с минимальным временем простоя и с возможностью отката. Чтобы достичь этого:
TLSAccept=unencrypted,cert
в файле конфигурации агента Zabbix и перезапустите агента.TLSAccept=cert
в файле конфигурации агента и перезапустить Zabbix агента. Теперь агент будет принимать только зашифрованные подключения на основе сертификатов. Незашифрованные и основанные на PSK подключения будут отклонены.Шифрование на сервере и прокси работает аналогичным образом. Если в веб-интерфейсе Zabbix в настройке узла сети Соединения с узла сети задано равным «Сертификат», тогда от агента (активные проверки) и zabbix_sender (траппер элементы данных) будут приниматься только зашифрованные соединения на основе сертификатов.
Скорее всего, вы настроите входящие и исходящие соединения на использование одного типа шифрования или без шифрования вовсе. Но, технически, имеется возможность настроить шифрование асимметрично, например, шифрование на основе сертификатов для входящих подключений и на основе PSK для исходящих подключений.
Настройки шифрования по каждому узлу сети отображаются в веб-интерфейсе Zabbix Настройка→Узлы сети, в колонке Шифрование агента. Примеры отображения настроек:
Пример | Подключения К узлу сети | Разрешённые подключения ОТ узла сети | Отклоненные подключения С узла сети |
---|---|---|---|
Незашифровано | Незашифровано | Зашифровано, на основе сертификата и PSK | |
Зашифровано на основе сертификата | Зашифровано на основе сертификата | Незашифровано и зашифровано на основе PSK | |
Зашифровано на основе PSK | Зашифровано на основе PSK | Незашифровано и зашифровано на основе сертификата | |
Зашифровано на основе PSK | Незашифровано и зашифровано на основе PSK | Зашифровано на основе сертификата | |
Зашифровано на основе сертификата | Незашифровано, зашифровано на основе PSK или зашифровано на основе сертификата | - |
По умолчанию используются незашифрованные подключения. Шифрование необходимо настраивать по каждому узлу сети и прокси отдельно.
Смотрите страницы помощи zabbix_get и zabbix_sender по использованию этих утилит при наличии шифрования.
Алгоритмы по умолчанию настраиваются внутри в процессе запуска Zabbix, и до версий Zabbix 4.0.19, 4.4.7 нет возможности их конфигурирования пользователями.
Начиная с версий Zabbix 4.0.19 и 4.4.7, поддерживаются также и заданные пользователем алгоритмы шифрования для 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-SHA1
Zabbix использует 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
: