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 limiti inferiori:
| Componente | Dimensione massima dell'identità PSK | Dimensione minima del valore PSK | Dimensione massima del valore PSK |
|---|---|---|---|
| Zabbix | 128 caratteri UTF-8 | 128 bit (PSK di 16 byte, inserita come 32 cifre esadecimali) | 2048 bit (PSK di 256 byte, inserita come 512 cifre esadecimali) |
| GnuTLS | 128 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK di 256 byte, inserita come 512 cifre esadecimali) |
| OpenSSL 1.0.x, 1.1.0 | 127 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK di 256 byte, inserita come 512 cifre esadecimali) |
| OpenSSL 1.1.1 | 127 byte (può includere caratteri UTF-8) | - | 512 bit (PSK di 64 byte, inserita come 128 cifre esadecimali) |
| OpenSSL 1.1.1a e successive | 127 byte (può includere caratteri UTF-8) | - | 2048 bit (PSK di 256 byte, inserita come 512 cifre esadecimali) |
Il frontend di Zabbix consente di configurare una
stringa di identità PSK lunga fino a 128 caratteri e una PSK lunga 2048 bit, indipendentemente
dalle librerie crittografiche utilizzate.
Se alcuni componenti Zabbix supportano limiti inferiori, è responsabilità
dell'utente configurare l'identità e il valore PSK con una lunghezza consentita
per tali componenti.
Il superamento dei limiti di lunghezza provoca 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 suo file di configurazione. Se entrambe le parti hanno la stessa stringa di identità PSK e lo stesso valore PSK, la connessione può andare a buon fine.
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 della PSK per la comunicazione server-agent (esempio)
Sull'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
stringa 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 la PSK. L'identità PSK sarà "PSK
001".
Riavviare l'agent. Ora è possibile testare la connessione utilizzando 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 downtime, vedere come modificare il tipo di connessione in Gestione della crittografia della connessione).
Configurare la crittografia 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 la 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
stringa 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 impostando:
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 downtime, 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 crittografate 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.