17 Шифровање

Преглед

Zabbix подржава шифровану комуникацију између Zabbix компоненти користећи Transport Layer Security (TLS) протокол v.1.2 и 1.3 (у зависности од крипто библиотеке). Подржано је шифровање засновано на сертификатима и унапред дељеним кључевима.

Шифровање се може конфигурисати за везе:

  • Између Zabbix сервера, Zabbix проксија, Zabbix агента, Zabbix веб сервиса, zabbix_sender и zabbix_get услужних програма
  • До Zabbix базе података са Zabbix фронтенда и сервера/проксија
  • Између Zabbix кориснички интерфејс и Zabbix сервера

Шифровање је опционо и конфигурабилно за појединачне компоненте:

  • Неки проксији и агенти могу бити конфигурисани да користе шифровање засновано на сертификатима са сервером, док други могу користити шифровање засновано на унапред дељеним кључевима, а трећи настављају са нешифрованом комуникацијом (као и раније).
  • Сервер (прокси) може да користи различите конфигурације шифровања за различите домаћине.

Zabbix демон програми користе један порт за слушање за шифроване и нешифроване долазне везе. Додавање шифровања не захтева отварање нових портова на заштитним зидовима (фајерволима).

Ограничења

  • Приватни кључеви се чувају у обичном тексту у датотекама које Zabbix компоненте могу да читају током покретања
  • Унапред дељени кључеви се уносе у Zabbix кориснички интерфејс и чувају у Zabbix бази података у обичном тексту
  • Уграђена енкрипција не штити комуникацију:
  • Између веб сервера на којем се покреће Zabbix кориснички интерфејс и корисничког веб прегледача
  • Између Zabbix кориснички интерфејс и Zabbix сервера
  • Тренутно се свака шифрована веза отвара са потпуним TLS руковањем, нема кеширања сесије и тикети се не имплементирају
  • Додавање енкрипције повећава време за провере ставки и акције, у зависности од латенције мреже:
  • На пример, ако је кашњење пакета 100ms, онда отварање TCP везе и слање нешифрованог захтева траје око 200ms. Са енкрипцијом се додаје око 1000ms за успостављање TLS везе;
  • Временска ограничења могу бити потребна за повећање, у супротном неке ставке и акције које покрећу удаљене скрипте на агентима могу радити са нешифрованим везама, али неће успети са временски ограниченим временом са шифрованим.
  • network discovery не подржава шифровање. Провере Zabbix агента које врши мрежно откривање биће нешифроване и ако је Zabbix агент конфигурисан да одбија нешифроване везе, такве провере неће бити успешне.

Компилирање Zabbix-а са подршком за шифровање

Да би подржао шифровање, Zabbix мора бити компајлиран и повезан са једном од подржаних крипто библиотека:

  • GnuTLS - од верзије 3.1.18
  • OpenSSL - верзије 1.0.1, 1.0.2, 1.1.0, 1.1.1, 3.0.x
  • LibreSSL - тестирано са верзијама 2.7.4, 2.8.2:
  • LibreSSL 2.6.x није подржан
  • LibreSSL је подржан као компатибилна замена за OpenSSL; нове tls_*() LibreSSL-специфичне API функције се не користе.

Zabbix компоненте компајлиране са LibreSSL-ом неће моћи да користе PSK, могу се користити само сертификати.

Више о подешавању SSL-а за Zabbix кориснички интерфејс можете сазнати у овим најбољим праксама.

Библиотека се бира навођењем одговарајуће опције за "configure" скрипту:

  • --with-gnutls[=DIR]
  • --with-openssl[=DIR] (also used for LibreSSL)

На пример, да бисте конфигурисали изворе за сервер и агента са OpenSSL можете користити нешто попут:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl

Различите Zabbix компоненте могу бити компајлиране са различитим крипто библиотекама (нпр. сервер са OpenSSL, агент са GnuTLS).

Ако планирате да користите унапред дељене кључеве (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 пакети шифровања не пружају Perfect Forward Secrecy.

Управљање шифровањем конекција

Конекције у Zabbix-у могу да користе:

Постоје два важна параметра која се користе за одређивање шифровања између Zabbix компоненти:

  • TLSConnect - одређује које шифровање треба користити за одлазне конекције (нешифроване, PSK или сертификат)
  • TLSAccept - одређује које врсте конекција су дозвољене за долазне конекције (нешифроване, PSK или сертификат). Може се навести једна или више вредности.

TLSConnect се користи у конфигурационим датотекама за Zabbix прокси (у активном режиму, одређује само конекције са сервером) и Zabbix агент (за активне провере). У Zabbix кориснички интерфејс, еквивалент TLSConnect је поље Везе са домаћином у Прикупљање података → Домаћини → <some host> → Шифровање и поље Везе са проксијем у Администрација → Проксији → <some proxy> → Шифровање. Ако конфигурисани тип шифровања за везу не успе, неће се покушати други типови шифровања.

TLSAccept се користи у конфигурационим датотекама за Zabbix прокси (у пасивном режиму, наводи само везе са сервера) и Zabbix агента (за пасивне провере). У Zabbix кориснички интерфејс, еквивалент TLSAccept је поље Везе са домаћином у Прикупљање података → Домаћини → <some host> → Шифровање и поље Везе са проксија у Администрација → Проксији → <some proxy> → Шифровање.

Обично конфигуришете само један тип шифровања за долазне везе. Али можда ћете желети да промените тип шифровања, нпр. са нешифрованог на сертификат са минималним временом застоја и могућношћу враћања на претходно стање. Да бисте то постигли:

  • Поставите TLSAccept=unencrypted,cert у конфигурационој датотеци агента и поново покрените Zabbix агента
  • Тестирајте везу са zabbix_get до агента користећи сертификат. Ако ради, можете поново конфигурисати шифровање за тог агента у Zabbix кориснички интерфејс у Прикупљање података → Домаћини → <some proxy> → Шифровање картицом постављањем Везе са домаћином на "Сертификат".
  • Када се кеш конфигурације сервера ажурира (и конфигурација проксија се ажурира ако домаћин прати прокси), онда ће везе са тим агентом бити шифроване
  • Ако све ради како се очекује, можете подесити TLSAccept=cert у конфигурационој датотеци агента и поново покренути Zabbix агент. Сада ће агент прихватати само шифроване везе засноване на сертификатима. Нешифроване и PSK везе ће бити одбијене.

На сличан начин функционише на серверу и проксију. Ако је у Zabbix кориснички интерфејс у конфигурацији домаћина Везе са домаћином подешено на "Сертификат", онда ће само везе шифроване на основу сертификата бити прихваћене од агента (активне провере) и zabbix_sender (ставке трапера).

Највероватније ћете конфигурисати долазне и одлазне везе да користе исти тип шифровања или никакво шифровање. Али технички је могуће конфигурисати га асиметрично, нпр. шифровање на основу сертификата за долазне и PSK-базирано за одлазне везе.

Конфигурација шифровања за сваки домаћин је приказана у Zabbix кориснички интерфејс, у Прикупљање података → Домаћини у колони Шифровање агента.

На пример:

Example Connections to host Allowed connections from host Rejected connections from host
none_none.png Нешифровано Нешифровано Шифровано, шифровано помоћу сертификата и PSK-а
cert_cert.png Шифровано, засновано на сертификату Шифровано, засновано на сертификату Нешифровано и шифровано помоћу PSK-а
psk_psk.png Шифровано, засновано на PSK-у Шифровано, засновано на PSK-у Нешифровано и шифровано помоћу сертификата
psk_none_psk.png Шифровано, засновано на PSK-у Нешифровано и шифровано засновано на PSK-у Шифровано засновано на сертификату
cert_all.png Шифровано, засновано на сертификату Нешифровано, шифровано PSK-ом или засновано на сертификату -

Везе су подразумевано нешифроване. Шифровање мора бити конфигурисано за сваки домаћин и прокси појединачно.

zabbix_get и zabbix_sender са шифровањем

Погледајте странице упутства zabbix_get и zabbix_sender за њихово коришћење са шифровањем.

Шифровани пакети

Шифровани пакети се подразумевано конфигуришу интерно током покретања Zabbix-а.

Такође, кориснички конфигурисани шифровани пакети су подржани за GnuTLS и OpenSSL. Корисници могу конфигурисати шифроване пакете у складу са својим безбедносним политикама. Коришћење ове функције је опционо (уграђени подразумевани шифровани пакети и даље раде).

За крипто библиотеке компајлиране са подразумеваним подешавањима, уграђена Zabbix правила обично резултирају следећим шифрованим пакетима (по реду од вишег до нижег приоритета):

Library Certificate ciphersuites PSK ciphersuites
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.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<б r>
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-SHA2 56
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 решавањем проблема.

Уграђени критеријуми за избор пакета шифри могу се заменити коришћењем следећих параметара:

Override scope Parameter Value Description
Ciphersuite selection for certificates 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)
Combined ciphersuite list for certificate and 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)
Combined ciphersuite list for certificate and 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* у крипто библиотеци не успе, онда сервер, прокси или агент се неће покренути и евидентираће се грешка.

Важно је разумети када је сваки параметар применљив.

Одлазне везе

Најједноставнији случај су одлазне везе:

  • За одлазне везе са сертификатом - користите TLSCipherCert13 или TLSCipherCert
  • За одлазне везе са PSK - користите TLSCipherPSK13 или TLSCipherPSK
  • У случају zabbix_get и zabbix_sender услужних програма командну линију могу се користити параметри --tls-cipher13 или --tls-cipher (шифровање је недвосмислено наведено са --tls-connect параметар)
Долазне везе

Мало је компликованије са долазним везама јер су правила специфична за компоненте и конфигурацију.

За Zabbix агент:

Agent connection setup Cipher configuration
TLSConnect=cert TLSCipherCert, TLSCipherCert13
TLSConnect=psk TLSCipherPSK, TLSCipherPSK13
TLSAccept=cert TLSCipherCert, TLSCipherCert13
TLSAccept=psk TLSCipherPSK, TLSCipherPSK13
TLSAccept=cert,psk TLSCipherAll, TLSCipherAll13

За Zabbix сервер и прокси:

Connection setup Cipher configuration
Одлазне везе користећи PSK TLSCipherPSK, TLSCipherPSK13
Долазне везе користећи сертификате TLSCipherAll, TLSCipherAll13
Долазне везе користећи PSK ако сервер нема сертификат TLSCipherPSK, TLSCipherPSK13
Долазне везе користећи PSK ако сервер има сертификат TLSCipherAll, TLSCipherAll13

Неки образац се може видети у две горње табеле:

  • TLSCipherAll и TLSCipherAll13 могу се навести само ако се користи комбинована листа шифрантних пакета заснованих на сертификатима и PSK. Постоје два случаја када се то дешава: сервер (прокси) са конфигурисаним сертификатом (PSK пакети шифровања су увек конфигурисани на серверу, прокси ако крипто библиотека подржава PSK), агент конфигурисан да прихвати и долазне везе засноване на сертификату и PSK-у
  • у другим случајевима TLSCipherCert* и/или TLSCipherPSK* су довољни

Следеће табеле приказују уграђене подразумеване вредности TLSCipher*. Оне могу бити добра полазна тачка за ваше сопствене прилагођене вредности.

Parameter 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
Parameter 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 подршке.

Примери кориснички конфигурисаних пакета шифровања

Погледајте испод следеће примере кориснички конфигурисаних пакета шифровања:

Тестирање низова шифровања и дозвољавање само PFS шифрантних пакета

Да бисте видели који су пакети шифри изабрани, потребно је да подесите '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-а за своје окружење.

Ако не користите сертификате, већ само 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:

TLSCipherCert=EECDH+aRSA+AES128 TLSCipherPSK=kECDHEPSK+AES128

и поново тестирајте:

$ 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

to zabbix_agentd.conf, zabbix_proxy.conf and zabbix_server_conf ако сваки од њих има конфигурисан сертификат, а агент такође има PSK.

Ако ваше Zabbix окружење користи само PSK шифровање и не сертификати, онда само један:

TLSCipherPSK=kECDHEPSK+AES128

Сада када разумете како функционише, можете тестирати пакет шифровања избор чак и ван 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 шифре са опцијом -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_SHA256TLSv1.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

Прелазак са AES128 на AES256

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:

TLSConnect=cert TLSAccept=cert TLSCAFile=/home/zabbix/ca.crt TLSCertFile=/home/zabbix/agent.crt TLSKeyFile=/home/zabbix/agent.key TLSCipherCert13=TLS_AES_256_GCM_SHA384 TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384