Šifrēšana, izmantojot iepriekš koplietotas atslēgas
Pārskats
Katrs iepriekš koplietotais atslēgas (PSK) ieraksts Zabbix sistēmā faktiski ir divu elementu pāris:
- neslepena PSK identitātes virkne;
- slepena PSK virknes vērtība.
PSK identitātes virkne ir virkne, kas nav tukša un ir kodēta UTF-8 formātā. Piemēram, "PSK ID 001 Zabbix agentd". Tas ir unikāls nosaukums, ar kuru Zabbix komponentes identificē šo konkrēto PSK. Neiekļaujiet sensitīvu informāciju PSK identitātes virknē — tā tiek pārsūtīta tīklā nešifrētā veidā.
PSK vērtība ir grūti uzminama heksadecimālo ciparu virkne, piemēram, e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9.
Nekad neizmantojiet dokumentācijā norādītās PSK vērtības ražošanas vidēs. Tā vietā ģenerējiet unikālu, kriptogrāfiski drošu PSK.
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 bitu garu PSK neatkarīgi no izmantotajām kriptogrāfijas bibliotēkām.
Ja daži Zabbix komponenti atbalsta zemākus ierobežojumus, lietotājs ir atbildīgs par tāda PSK identitātes un vērtības garuma konfigurēšanu, kas ir atļauts šiem komponentiem.
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ņā) sameklē š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 viena un tā pati 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. Šī nosacījuma 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 tālāk norādītās 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š izmantotā komanda "psktool" ģenerē datubāzes failu ar PSK identitāti un tai atbilstošo PSK. Zabbix PSK failā sagaida tikai PSK, tāpēc identitātes virkne un kols (':') no faila ir jānoņem.
PSK konfigurēšana servera un aģenta saziņai (piemērs)
Aģenta hostā ierakstiet iepriekš ģenerēto PSK vērtību failā, piemēram, /home/zabbix/zabbix_agentd.psk.
Faila pirmajā rindā jābūt PSK vērtībai.
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ē:
- Dodieties uz: Datu apkopošana > Hosti.
- Atlasiet hostu un noklikšķiniet uz cilnes Šifrēšana.
- Konfigurējiet PSK šifrēšanas informāciju.
Piemērs:

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.
Kad konfigurācijas kešatmiņa ir 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