17 Шифровање

Преглед

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

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

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

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

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

Ограничења

  • Приватни кључеви се чувају у обичном тексту у датотекама које Zabbix чита компоненте током покретања
  • Pre-shared кључеви се уносе у Zabbix кориснички интерфејс и чувају у Zabbix-у база података у обичном тексту
  • Уграђено шифровање не штити комуникацију:
    • Између веб сервера који покреће Zabbix кориснички интерфејс и корисничког веба претраживач
    • Између Zabbix кориснички интерфејс и Zabbix сервера
  • Тренутно се свака шифрована веза отвара са пуним TLS руковањем, нема кеширања сесије и тикети су имплементирани
  • Додавање шифровања повећава време за проверу ставки и радње, у зависности од кашњења мреже:
    • На пример, ако је кашњење пакета 100ms онда отварање TCP-а повезивање и слање нешифрованог захтева траје око 200 мс. Са шифровањем се додаје око 1000ms за успостављање TLS-а веза;
    • Временска ограничења ће можда морати да се повећају, иначе неке ставке и акције које покрећу удаљене скрипте на агентима могу радити са нешифроване везе, али не успевају са временским ограничењем са шифрованим.
  • мрежа не подржава шифровање откриће. 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_*() функције API-ја специфичне за 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).

Ако планирате да користите унапред дељене кључеве (PSK), размислите о коришћењу библиотека GnuTLS или OpenSSL 1.1.0 (или новијих) у Zabbix компоненте које користе PSK-ове. Библиотеке GnuTLS и OpenSSL 1.1.0 подржава ПСК пакете шифровања са Perfect Forward Secrecy. Старије верзије библиотеке OpenSSL (1.0.1, 1.0.2c) такође подржавају PSK, али доступни PSK пакети шифровања не пружају савршено напредовање Тајност.

Управљање шифровањем везе

Везе у Zabbix-у могу да користе:

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

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

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

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

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

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

Ciphersuites

Ciphersuites се подразумевано конфигуришу интерно током покретања 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.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-ом отклањање проблема.

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

Override scope Parameter Value Description
Избор пакета шифровања за сертификате 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()).|Критеријуми за избор шифрованог пакета за 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* у крипто библиотеци не успе сервер, прокси или агент се неће покренути и грешка се евидентира.

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

Одлазне везе

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

  • За одлазне везе са сертификатом - користите 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 за овај пример. Подесите путање и називе датотека сертификата и ПСК за ваше окружење.

Ако не користите сертификате, већ само ПСК, можете направити најједноставнији фајл:

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).

Са новијим системима можете изабрати да појачате безбедност тако што ћете дозволити само неколико шифрованих пакета, нпр. само шифре са PFC (Perfect Forward Secrecy). Покушајмо да дозволимо само пакете шифровања са PFC користећи параметре 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

Листе "сети за шифровање сертификата" и "PSK пакета за шифровање" су промењене – краће су него раније, садрже само TLS 1.3 пакете шифровања и TLS 1.2 ECDHE-* пакете шифровања како се очекивало.

2. TLSCipherAll и TLSCipherAll13 не може се тестирати са zabbix_sender; они не утичу на вредност "сертификата и PSK шифара" приказану у примеру изнад. Да бисте подесили 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 окружење користи само шифровање засновано на 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 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_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