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:

psk\_config.png

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.