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 di PSK

Ad esempio, una PSK a 256 bit (32 byte) può essere generata usando i seguenti comandi:

  • con OpenSSL:
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • con 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

Si noti che "psktool" sopra genera un file database con una PSK identity e la relativa PSK. Zabbix si aspetta solo una PSK nel file PSK, quindi la stringa di identity 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 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 (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 usano 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 downtime, vedere come cambiare il tipo di connessione in Gestione della crittografia della connessione).

Configurare la crittografia PSK per questo agent in Zabbix frontend:

  • Andare su: Raccolta dati → Host
  • Selezionare l'host e fare clic sulla scheda Crittografia

Esempio:

psk\_config.png

Tutti i campi di input obbligatori sono contrassegnati da 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 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 (zabbix_proxy.conf). Ad esempio, impostare:

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

Il proxy si connetterà al server usando PSK. L'identità PSK sarà "PSK 002".

(Per ridurre al minimo i tempi di inattività, vedere come cambiare il tipo di connessione in Gestione della crittografia della connessione).

Configurare PSK per questo proxy nel frontend Zabbix. Andare su Administration→Proxies, selezionare il proxy, andare alla scheda "Encryption". In "Connections from proxy" selezionare PSK. Incollare nel campo "PSK identity" "PSK 002" e nel campo "PSK" "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9". Fare clic su "Update".

Riavviare il proxy. Inizierà a usare connessioni crittografate basate su PSK al 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 Zabbix e impostare Connections to proxy nel frontend Zabbix su PSK.