2 Usando chaves pré-compartilhadas
Visão geral
Cada chave pré-compartilhada (PSK) no Zabbix é na verdade um par de:
- string de identidade PSK não secreta,
- valor da string PSK secreta.
A string de identidade PSK é uma string UTF-8 não vazia. Por exemplo, "ID PSK 001 Zabbix agentd". É um nome único pelo qual este PSK específico é referido pelos componentes Zabbix. Não coloque informações confidenciais em Cadeia de identidade PSK - é transmitida pela rede sem criptografia.
O valor PSK é uma sequência de dígitos hexadecimais difícil de adivinhar, por exemplo, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".
Limites de tamanho
Existem limites de tamanho para a identidade e valor do PSK no Zabbix, em alguns casos uma biblioteca de criptografia pode ter um limite inferior:
| Componente | Tamanho máximo da identidade PSK | Tamanho mínimo do valor PSK | Tamanho máximo do valor PSK |
|---|---|---|---|
| Zabbix | 128 caracteres UTF-8 | 128 bits (16 bytes de PSK, inseridos como 32 dígitos hexadecimais) | 2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais) |
| GnuTLS | 128 bytes (pode incluir caracteres UTF-8) | - | 2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais) |
| OpenSSL 1.0.x, 1.1.0 | 127 bytes (pode incluir caracteres UTF-8) | - | 2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais) |
| OpenSSL 1.1.1 | 127 bytes (pode incluir caracteres UTF-8) | - | 512 bits (64 bytes de PSK, inseridos como 128 dígitos hexadecimais) |
| OpenSSL 1.1.1a e posteriores | 127 bytes (pode incluir caracteres UTF-8) | - | 2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais) |
O frontend do Zabbix permite configurar uma string de identidade PSK com até 128 caracteres e um PSK de até 2048 bits, independentemente das bibliotecas de criptografia utilizadas.
Se alguns componentes do Zabbix suportarem limites inferiores, é responsabilidade do usuário configurar a identidade e o valor do PSK com o comprimento permitido para esses componentes.
Exceder os limites de comprimento resulta em falhas de comunicação entre os componentes do Zabbix.
Antes que o servidor Zabbix se conecte ao agent usando PSK, o servidor procura a identidade e o valor do PSK configurados para esse agent no banco de dados (na verdade, no cache de configuração). Ao receber uma conexão, o agent usa a identidade e o valor do PSK de seu arquivo de configuração. Se ambas as partes tiverem a mesma string de identidade e valor do PSK, a conexão poderá ser bem-sucedida.
Cada identidade PSK deve ser emparelhada com apenas um valor. É responsabilidade do usuário garantir que não existam dois PSKs com a mesma string de identidade, mas valores diferentes. Não fazer isso pode levar a erros imprevisíveis ou interrupções na comunicação entre os componentes do Zabbix que usam PSKs com essa string de identidade PSK.
Gerando PSK
Por exemplo, um PSK de 256 bits (32 bytes) pode ser gerado usando o seguintes comandos:
- com OpenSSL:
<!-- -->
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
- com GnuTLS:
<!-- -->
$ psktool -u psk_identity -p database.psk -s 32
Gerando uma chave aleatória para o usuário 'psk_identity'
Chave armazenada em database.psk
$ cat database.psk
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
Observe que "psktool" acima gera um arquivo de banco de dados com uma identidade PSK e seu PSK associado. O Zabbix espera apenas um PSK no arquivo PSK, então a string de identidade e os dois pontos (':') devem ser removidos do arquivo.
Configurando PSK para comunicação server-agent (exemplo)
No host do agent, grave o valor de PSK em um arquivo, por exemplo,
/home/zabbix/zabbix_agentd.psk. O arquivo deve conter a PSK na primeira
linha de texto, por exemplo:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Defina as permissões de acesso ao arquivo PSK - ele deve ser legível apenas pelo usuário Zabbix.
Edite os parâmetros TLS no arquivo de configuração do agent zabbix_agentd.conf,
por exemplo, defina:
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
O agent se conectará ao server (verificações ativas) e aceitará do server
e do zabbix_get apenas conexões que usem PSK. A identidade PSK será "PSK
001".
Reinicie o agent. Agora você pode testar a conexão usando zabbix_get,
por exemplo:
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
(Para minimizar o tempo de indisponibilidade, veja como alterar o tipo de conexão em Gerenciamento de criptografia de conexão).
Configure a criptografia PSK para este agent no frontend do Zabbix:
- Vá para: Coleta de dados → Hosts
- Selecione o host e clique na aba Criptografia
Exemplo:

Todos os campos de entrada obrigatórios são marcados com um asterisco vermelho.
Quando o cache de configuração for sincronizado com o banco de dados, as novas conexões usarão PSK. Verifique os arquivos de log do server e do agent em busca de mensagens de erro.
Configurando PSK para comunicação server - proxy ativo (exemplo)
No proxy, grave o valor de PSK em um arquivo, por exemplo,
/home/zabbix/zabbix_proxy.psk. O arquivo deve conter o PSK na primeira
linha de texto, por exemplo:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
Defina os direitos de acesso ao arquivo PSK - ele deve ser legível apenas pelo usuário Zabbix.
Edite os parâmetros TLS no arquivo de configuração do proxy zabbix_proxy.conf, por
exemplo, defina:
TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002
O proxy se conectará ao server usando PSK. A identidade PSK será "PSK 002".
(Para minimizar o tempo de indisponibilidade, veja como alterar o tipo de conexão em Gerenciamento de criptografia de conexão).
Configure o PSK para este proxy no frontend do Zabbix. Vá para
Administration→Proxies, selecione o proxy e acesse a aba "Encryption". Em
"Connections from proxy", marque PSK. Cole no campo "PSK identity"
"PSK 002" e
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" no
campo "PSK". Clique em "Update".
Reinicie o proxy. Ele começará a usar conexões criptografadas baseadas em PSK com o server. Verifique os arquivos de log do server e do proxy em busca de mensagens de erro.
Para um proxy passivo, o procedimento é muito semelhante. A única diferença -
defina TLSAccept=psk no arquivo de configuração do proxy e configure "Connections to
proxy" no frontend do Zabbix como PSK.