Šifrēšana, izmantojot iepriekš koplietotas atslēgas

Pārskats

Katrs iepriekš koplietotais atslēgas pāris (PSK) Zabbix faktiski sastāv no:

  • neslepenas PSK identitātes virknes,
  • slepenas PSK vērtības virknes.

PSK identitātes virkne ir netukša UTF-8 virkne. Piemēram, "PSK ID 001 Zabbix aģents". Tas ir unikāls nosaukums, ar kuru Zabbix komponenti atsaucas uz šo konkrēto PSK. Nelieciet sensitīvu informāciju PSK identitātes virknē - tā tiek pārsūtīta tīklā nešifrēta.

PSK vērtība ir grūti uzminama heksadecimālu ciparu virkne, piemēram, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

Izmēra ierobežojumi

Zabbix ir noteikti PSK identitātes un vērtības izmēra ierobežojumi; dažos gadījumos kriptogrāfijas bibliotēkai var būt zemāks ierobežojums:

Komponents PSK identitātes maksimālais izmērs PSK vērtības minimālais izmērs PSK vērtības maksimālais izmērs
Zabbix 128 UTF-8 rakstzīmes 128 biti (16 baitu PSK, ievadīts kā 32 heksadecimālie cipari) 2048 biti (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari)
GnuTLS 128 baiti (var ietvert UTF-8 rakstzīmes) - 2048 biti (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari)
OpenSSL 1.0.x, 1.1.0 127 baiti (var ietvert UTF-8 rakstzīmes) - 2048 biti (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari)
OpenSSL 1.1.1 127 baiti (var ietvert UTF-8 rakstzīmes) - 512 biti (64 baitu PSK, ievadīts kā 128 heksadecimālie cipari)
OpenSSL 1.1.1a un jaunāka versija 127 baiti (var ietvert UTF-8 rakstzīmes) - 2048 biti (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari)

Zabbix lietotāja saskarne ļauj konfigurēt līdz 128 rakstzīmēm garu PSK identitātes virkni un 2048 bitus garu PSK neatkarīgi no izmantotajām kriptogrāfijas bibliotēkām.
Ja dažiem Zabbix komponentiem ir zemāki ierobežojumi, lietotājs ir atbildīgs par tādas PSK identitātes un vērtības konfigurēšanu, kuras garums atbilst šo komponentu atļautajam garumam.
Ierobežojumu pārsniegšana izraisa sakaru kļūmes starp Zabbix komponentiem.

Pirms Zabbix serveris izveido savienojumu ar aģentu, izmantojot PSK, serveris datubāzē (faktiski konfigurācijas kešatmiņā) atrod šim aģentam konfigurēto PSK identitāti un PSK vērtību. Saņemot savienojumu, aģents izmanto PSK identitāti un PSK vērtību no savas konfigurācijas datnes. Ja abām pusēm ir vienāda PSK identitātes virkne un PSK vērtība, savienojums var tikt izveidots.

Katrai PSK identitātei drīkst būt piesaistīta tikai viena vērtība. Lietotājs ir atbildīgs par to, lai nebūtu divu PSK ar vienādu identitātes virkni, bet atšķirīgām vērtībām. Šīs prasības neievērošana var izraisīt neparedzamas kļūdas vai sakaru traucējumus starp Zabbix komponentiem, kas izmanto PSK ar šo PSK identitātes virkni.

PSK ģenerēšana

Piemēram, 256 bitu (32 baitu) PSK var ģenerēt, izmantojot šādas komandas:

  • ar OpenSSL:
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • ar GnuTLS:
$ psktool -u psk_identity -p database.psk -s 32
Generating a random key for user 'psk_identity'
Key stored to database.psk

$ cat database.psk 
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Ņemiet vērā, ka iepriekš minētais "psktool" ģenerē datubāzes failu ar PSK identitāti un tai piesaistīto PSK. Zabbix sagaida PSK failā tikai PSK, tāpēc identitātes virkne un kols (':') no faila ir jāizņem.

PSK konfigurēšana servera un aģenta saziņai (piemērs)

Aģenta hostā ierakstiet PSK vērtību failā, piemēram, /home/zabbix/zabbix_agentd.psk. Faila pirmajā teksta rindā jābūt PSK vērtībai, piemēram:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Iestatiet piekļuves tiesības PSK failam — to drīkst nolasīt tikai Zabbix lietotājs.

Rediģējiet TLS parametrus Zabbix aģenta konfigurācijas failā (zabbix_agentd.conf). Piemēram, iestatiet:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001

Aģents izveidos savienojumu ar serveri (aktīvās pārbaudes) un pieņems no servera un zabbix_get tikai savienojumus, kuros tiek izmantots PSK. PSK identitāte būs "PSK 001".

Restartējiet aģentu. Tagad varat pārbaudīt savienojumu, izmantojot zabbix_get, piemēram:

zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk

(Lai samazinātu dīkstāvi, skatiet, kā mainīt savienojuma tipu sadaļā Savienojuma šifrēšanas pārvaldība.)

Konfigurējiet PSK šifrēšanu šim aģentam Zabbix lietotāja saskarnē:

  1. Dodieties uz: Datu apkopošana > Hosti.
  2. Atlasiet hostu un noklikšķiniet uz cilnes Šifrēšana.
  3. Konfigurējiet PSK šifrēšanas informāciju.

Piemērs:

psk\_config.png

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Kad konfigurācijas kešatmiņa tiks sinhronizēta ar datubāzi, jaunajos savienojumos tiks izmantots PSK. Pārbaudiet servera un aģenta žurnālfailus, vai tajos nav kļūdu ziņojumu.

PSK konfigurēšana servera un aktīvā starpniekservera saziņai (piemērs)

Starpniekserverī ierakstiet PSK vērtību failā, piemēram, /home/zabbix/zabbix_proxy.psk. Faila pirmajā teksta rindā jābūt PSK vērtībai, piemēram:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Iestatiet piekļuves tiesības PSK failam - to drīkst nolasīt tikai Zabbix lietotājs.

Rediģējiet TLS parametrus Zabbix starpniekservera konfigurācijas failā (zabbix_proxy.conf). Piemēram, iestatiet:

TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002

Starpniekserveris izveidos savienojumu ar serveri, izmantojot PSK. PSK identitāte būs "PSK 002".

(Lai samazinātu dīkstāvi, skatiet, kā mainīt savienojuma tipu sadaļā Savienojuma šifrēšanas pārvaldība.)

Konfigurējiet PSK šim starpniekserverim Zabbix lietotāja saskarnē. Atveriet Administration > Proxies, atlasiet starpniekserveri un atveriet cilni Encryption. Sadaļā "Connections from proxy" atzīmējiet PSK. Laukā "PSK identity" ielīmējiet "PSK 002", bet laukā "PSK" ielīmējiet "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9". Noklikšķiniet uz "Update".

Restartējiet starpniekserveri. Tas sāks izmantot ar PSK šifrētus savienojumus ar serveri. Pārbaudiet servera un starpniekservera žurnālfailus, vai tajos nav kļūdu ziņojumu.

Pasīvam starpniekserverim procedūra ir ļoti līdzīga. Vienīgā atšķirība - Zabbix starpniekservera konfigurācijas failā jāiestata TLSAccept=psk, bet Zabbix lietotāja saskarnē sadaļai Connections to proxy jāiestata PSK.

Problēmu novēršana ar PSK problēmām

PSK satur nepāra skaitu heksadecimālo ciparu

Starpniekserveris vai aģents netiek palaists, ziņojums starpniekservera vai aģenta žurnālā:

nederīgs PSK failā "/home/zabbix/zabbix_proxy.psk"
PSK identitātes virkne, kas ir garāka par 128 baitiem, tiek nodota GnuTLS

TLS klienta puses žurnālā:

gnutls_handshake() failed: -110 The TLS connection was non-properly terminated.

TLS servera puses žurnālā.

gnutls_handshake() failed: -90 The SRP username supplied is illegal.
Pārāk gara PSK vērtība, izmantojot OpenSSL 1.1.1

Savienojošās puses žurnālā:

...OpenSSL bibliotēka (versija OpenSSL 1.1.1  11 Sep 2018) inicializēta
...
...In zbx_tls_connect(): psk_identity:"PSK 1"
...zbx_psk_client_cb() requested PSK identity "PSK 1"
...End of zbx_tls_connect():FAIL error:'SSL_connect() set result code to SSL_ERROR_SSL: file ssl\statem\extensions_clnt.c line 801: error:14212044:SSL routines:tls_construct_ctos_early_data:internal error: TLS write fatal alert "internal error"'

Pieņemošās puses žurnālā:

...Ziņojumam no 123.123.123.123 trūkst galvenes. Ziņojums ignorēts.

Šī problēma parasti rodas, ja OpenSSL tiek jaunināts no 1.0.x vai 1.1.0 uz 1.1.1 un PSK vērtība ir garāka par 512 bitiem (64 baitu PSK, ievadīts kā 128 heksadecimāli cipari).

Skatiet arī: Vērtības lieluma ierobežojumi