Š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 PSK identitātes un vērtības izmēra ierobežojumi, un 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 bitu (16 baitu PSK, ievadīts kā 32 heksadecimālie cipari) | 2048 bitu (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari) |
| GnuTLS | 128 baiti (var ietvert UTF-8 rakstzīmes) | - | 2048 bitu (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 bitu (256 baitu PSK, ievadīts kā 512 heksadecimālie cipari) |
| OpenSSL 1.1.1 | 127 baiti (var ietvert UTF-8 rakstzīmes) | - | 512 bitu (64 baitu PSK, ievadīts kā 128 heksadecimālie cipari) |
| OpenSSL 1.1.1a un jaunākas versijas | 127 baiti (var ietvert UTF-8 rakstzīmes) | - | 2048 bitu (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ži Zabbix komponenti atbalsta zemākus ierobežojumus, lietotāja pienākums ir konfigurēt PSK identitāti un vērtību ar šiem komponentiem atļauto garumu.
Ierobežojumu pārsniegšana izraisa saziņas kļūmes starp Zabbix
komponentiem.
Pirms Zabbix serveris izveido savienojumu ar aģents, izmantojot PSK, serveris datubāzē (faktiski konfigurācijas kešatmiņā) atrod šim aģents 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 viena un tā pati PSK identitātes virkne un PSK vērtība, savienojums var izdoties.
Katrai PSK identitātei jābūt saistītai tikai ar vienu vērtību. Lietotāja pienākums ir nodrošināt, ka nav divu PSK ar vienādu identitātes virkni, bet atšķirīgām vērtībām. Ja tas netiek ievērots, var rasties neparedzamas kļūdas vai saziņas traucējumi 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-aģenta saziņai (piemērs)
Aģenta hostā ierakstiet PSK vērtību failā, piemēram,
/home/zabbix/zabbix_agentd.psk. Failā PSK jābūt pirmajā
teksta rindā, piemēram:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Iestatiet piekļuves tiesības PSK failam - tam jābūt lasāmam tikai Zabbix lietotājam.
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, kas izmanto PSK. PSK identitāte būs "PSK
001".
Pārstartē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ļā Connection encryption management).
Konfigurējiet PSK šifrēšanu šim aģentam Zabbix lietotāja saskarnē:
- Dodieties uz: Data collection > Hosts.
- Atlasiet hostu un noklikšķiniet uz cilnes Encryption.
Piemērs:

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.
Kad konfigurācijas kešatmiņa būs sinhronizēta ar datubāzi, jaunie savienojumi izmantos PSK. Pārbaudiet servera un aģenta žurnālfailus, vai nav kļūdu ziņojumu.
PSK konfigurēšana servera - aktīvā starpniekservera saziņai (piemērs)
Starpniekserverī ierakstiet PSK vērtību failā, piemēram,
/home/zabbix/zabbix_proxy.psk. Failā PSK jābūt pirmajā
teksta virknē, piemēram:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
Iestatiet piekļuves tiesības PSK failam - tam jābūt lasāmam tikai Zabbix lietotājam.
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 serveris, izmantojot PSK. PSK identitāte būs "PSK 002".
(Lai samazinātu dīkstāvi, skatiet, kā mainīt savienojuma tipu sadaļā Connection encryption management).
Konfigurējiet PSK šim starpniekserverim Zabbix lietotāja saskarnē. Dodieties uz
Administration > Proxies, atlasiet starpniekserveri, dodieties uz cilni Encryption. Laukā "Connections from proxy" atzīmējiet PSK. Laukā "PSK identity" ielīmējiet
"PSK 002" un laukā
"PSK" ielīmējiet
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9". Noklikšķiniet "Update".
Pārstartējiet starpniekserveri. Tas sāks izmantot uz PSK balstītus šifrētus savienojumus ar serveris. Pārbaudiet serveris un starpniekservera žurnālfailus, lai atrastu kļūdu ziņojumus.
Pasīvam starpniekserverim procedūra ir ļoti līdzīga.
Vienīgā atšķirība - Zabbix starpniekservera konfigurācijas failā iestatiet TLSAccept=psk un Zabbix lietotāja saskarnē iestatiet Connections to proxy uz 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