2 Utilizzo delle chiavi precondivise
Panoramica
Ogni chiave pre-condivisa (PSK) in Zabbix è in realtà una coppia composta da:
- stringa di identità PSK non segreta,
- valore della stringa PSK segreta.
La stringa di identità PSK è una stringa UTF-8 non vuota. Ad esempio, "PSK ID 001 Zabbix agentd". È un nome univoco con cui questo specifico PSK viene riferito dai componenti di Zabbix. Non inserire informazioni sensibili nella stringa di identità PSK: viene trasmessa sulla rete senza crittografia.
Il valore PSK è una stringa di cifre esadecimali difficile da indovinare, ad esempio, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".
Limiti di dimensione
In Zabbix esistono limiti di dimensione per l'identità e il valore PSK; in alcuni casi una libreria crittografica può avere un limite inferiore:
| Componente | Dimensione massima identità PSK | Dimensione minima valore PSK | Dimensione massima valore PSK |
|---|---|---|---|
| Zabbix | 128 caratteri UTF-8 | 128 bit (PSK da 16 byte, inserita come 32 cifre esadecimali) | 2048 bit (PSK da 256 byte, inserita come 512 cifre esadecimali) |
| GnuTLS | 128 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK da 256 byte, inserita come 512 cifre esadecimali) |
| OpenSSL 1.0.x, 1.1.0 | 127 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK da 256 byte, inserita come 512 cifre esadecimali) |
| OpenSSL 1.1.1 | 127 byte (può includere caratteri UTF-8) | - | 512 bit (PSK da 64 byte, inserita come 128 cifre esadecimali) |
| OpenSSL 1.1.1a e successive | 127 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK da 256 byte, inserita come 512 cifre esadecimali) |
Zabbix frontend consente di configurare una stringa di identità PSK lunga fino a 128 caratteri e una PSK lunga fino a 2048 bit indipendentemente dalle librerie crittografiche utilizzate.
Se alcuni componenti Zabbix supportano limiti inferiori, è responsabilità dell'utente configurare identità e valore PSK con una lunghezza consentita per tali componenti.
Il superamento dei limiti di lunghezza comporta errori di comunicazione tra i
componenti Zabbix.
Prima che Zabbix server si connetta all'agent usando PSK, il server cerca nel database l'identità PSK e il valore PSK configurati per quell'agent (in realtà nella cache di configurazione). Quando riceve una connessione, l'agent utilizza l'identità PSK e il valore PSK dal proprio file di configurazione. Se entrambe le parti hanno la stessa stringa di identità PSK e lo stesso valore PSK, la connessione può riuscire.
Ogni identità PSK deve essere associata a un solo valore. È responsabilità dell'utente assicurarsi che non esistano due PSK con la stessa stringa di identità ma valori diversi. In caso contrario, si possono verificare errori imprevedibili o interruzioni della comunicazione tra i componenti Zabbix che utilizzano PSK con questa stringa di identità PSK.
Generazione della PSK
Ad esempio, una PSK a 256 bit (32 byte) può essere generata utilizzando i seguenti comandi:
- con OpenSSL:
<!-- -->
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
- con GnuTLS:
<!-- -->
$ psktool -u psk_identity -p database.psk -s 32
Generazione di una chiave casuale per l'utente 'psk_identity'
Chiave salvata in database.psk
$ cat database.psk
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
Si noti che "psktool" sopra genera un file di database con un'identità PSK e la PSK associata. Zabbix si aspetta solo una PSK nel file PSK, quindi la stringa di identità e i due punti (':') devono essere rimossi dal file.
Configurazione di PSK per la comunicazione server-agent (esempio)
Sul host dell'agent, scrivere il valore PSK in un file, ad esempio
/home/zabbix/zabbix_agentd.psk. Il file deve contenere la PSK nella prima
riga di testo, ad esempio:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Impostare i diritti di accesso al file PSK: deve essere leggibile solo dall'utente Zabbix.
Modificare i parametri TLS nel file di configurazione dell'agent zabbix_agentd.conf,
ad esempio impostare:
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
L'agent si connetterà al server (controlli attivi) e accetterà dal server
e da zabbix_get solo connessioni che utilizzano PSK. L'identità PSK sarà "PSK
001".
Riavviare l'agent. Ora è possibile testare la connessione usando zabbix_get,
ad esempio:
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
(Per ridurre al minimo il tempo di inattività, vedere come modificare il tipo di connessione in Connection encryption management).
Configurare la cifratura PSK per questo agent nel frontend di Zabbix:
- Andare in: Data collection → Hosts
- Selezionare l'host e fare clic sulla scheda Encryption
Esempio:

Tutti i campi di input obbligatori sono contrassegnati con un asterisco rosso.
Quando la cache di configurazione viene sincronizzata con il database, le nuove connessioni utilizzeranno PSK. Controllare i file di log del server e dell'agent per eventuali messaggi di errore.
Configurazione di PSK per la comunicazione server - proxy attivo (esempio)
Sul proxy, scrivere il valore PSK in un file, ad esempio
/home/zabbix/zabbix_proxy.psk. Il file deve contenere la PSK nella prima
riga di testo, ad esempio:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
Impostare i diritti di accesso al file PSK: deve essere leggibile solo dall'utente Zabbix.
Modificare i parametri TLS nel file di configurazione del proxy zabbix_proxy.conf, ad
esempio impostare:
TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002
Il proxy si connetterà al server utilizzando PSK. L'identità PSK sarà "PSK 002".
(Per ridurre al minimo il tempo di inattività, vedere come modificare il tipo di connessione in Connection encryption management).
Configurare la PSK per questo proxy nel frontend di Zabbix. Andare in
Administration→Proxies, selezionare il proxy, quindi aprire la scheda "Encryption". In
"Connections from proxy" selezionare PSK. Incollare nel campo "PSK identity"
"PSK 002" e
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" nel
campo "PSK". Fare clic su "Update".
Riavviare il proxy. Inizierà a utilizzare connessioni cifrate basate su PSK verso il server. Controllare i file di log del server e del proxy per eventuali messaggi di errore.
Per un proxy passivo la procedura è molto simile. L'unica differenza è:
impostare TLSAccept=psk nel file di configurazione del proxy e impostare "Connections to
proxy" nel frontend di Zabbix su PSK.