- #2 Usando chaves compartilhadas PSK
Visão geral
No Zabbix cada PSK atualmente é um par de:
- identidade não secreta PSK (texto),
- texto secreto (valor PSK).
A identidade PSK é um texto não vazio no formato UTF-8. Por exemplo, "PSK ID 001 Zabbix agentd". É o nome único com o qual este PSK específico será referenciado pelos componentes do Zabbix. Não coloque informação sensível na identidade PSK - ela será transmitida de forma não criptografada pela rede.
O valor PSK é mais difícil de adivinhar por ser um texto hexadecimal, por exemplo, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".
Limites de tamanho
Aqui temos um tamanho máximo para a identidade e para o valor PSK no Zabbix, em alguns casos a biblioteca de criptografia tem um valor menor:
| Componente | Tamannho da identidade PSK | Tamanho do valor PSK |
|---|---|---|
| Zabbix | 128 UTF-8 characteres | 2048-bit (256-byte PSK, informado como 512 digitos hexadecimais) |
| GnuTLS | 128 bytes (may include UTF-8 characteres) | 2048-bit (256-byte PSK, informado como 512 digitos hexadecimais) |
| mbed TLS (PolarSSL) | 128 UTF-8 characters | 256-bit (limite padrão) (32-byte PSK, informado como 64 digitos hexadecimais) |
| OpenSSL | 127 bytes (pode incluri caracteres UTF-8) | 2048-bit (256-byte PSK, informado como 512 digitos hexadecimais) |
A interface web do Zabbix permite configurar identidades PSK de até 128 caracteres e até 2048-bit sem o uso das bibliotecas PSK. Se algum componente do Zabbix suportar valores menores é de responsabilidade do usuário configura ra identidade e valor PSK de forma que ambos o aceitem. Exceder o limite de tamanho resultará em falha de comunicação.
Antes do Zabbix Server se conectar com o agente usando PSK, o servidor analisa a identidade e valor PSK configurados para aquele agente no banco de dados (ou no cache de configuração). Após receber a conexão do agente, ele usa a identidade e valor PSK de sua configuração. Se ambas as partes tiverem o mesmo conjunto a conexão será estabelecida.
É de responsabilidade do usuário garantir que não existam duas chaves PSK com o mesmo conteúdo, mas com valores diferentes. Isso poderá causar interrupções imprevisíveis de comunicação entre os componentes.
Gerando a PSK
Por exemplo, uma chave PSK de 256-bit (32 bytes) pode ser gerada através destes comandos:
- com OpenSSL:
<!-- -->
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
- com GnuTLS:
<!-- -->
$ psktool -u psk_identity -p database.psk -s 32
Gerando uma chave randômica para o usuário 'psk_identity'
A chave é armazenada no arquivo database.psk
$ cat database.psk
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
Observe que o utilitário "psktool" acima gera um arquivo de dados com a identidade PSK e a associação PSK. O Zabbix espera apenas um PSK no arquivo, então o identificador (':') precisa ser removido do arquivo.
Configurando PSK para a comunicação server-agent (exemplo básico)
No host do agente salve o valor PSK em um arquivo, por exemplo,
/home/zabbix/zabbix_agentd.psk. O arquivo precisa conter o PSK em sua
primeira linha, por exemplo:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Defina o permissionamento do arquivo, somente o usuário Zabbix deverá conseguir lê-lo.
Edite os parâmetros de TLS no arquivo de configuração do agente
zabbix_agentd.conf:
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
O agente irá se conectar com o servidor (verificação ativa) e aceitará
do servidor e do zabix_get apenas conexões usando PSK. Neste caso a
identidade PSK será "PSK 001".
Reinicie o agente. Agora você pode fazer um teste de conexão utilizando
o zabbix_get:
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 mudar o tipo de conexão em gerenciamento de conexão criptografada).
Configure o PSK para este host na interface web do Zabbix.
- Acesse Configuração → Hosts
- Selecione o host desejado, clique em seu nome
- Clique na aba Criptografia
Exemplo:

Após a atualização do cache de configuração do Zabbix Server/Proxy as comunicações começarão a ocorrer através de conexões criptografadas com PSK. Eventuais erros podem ser localizados tanto no log do agente quanto no log do servidor
Configurando o PSK para comunicação entre Zabbix Server e Zabbix Proxy (ativo) (exemplo básico)
Salve o arquivo de valor PSK do proxy em um arquivo, por exemplo,
/home/zabbix/zabbix_proxy.psk. O arquivo precisa conter o valor em sua
primeira linha:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
Defina o permissionamento do arquivo, somente o usuário Zabbix deverá conseguir lê-lo.
Edite os parâmetros de TLS no arquivo de configuração do agente
zabbix_proxy.conf:
TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002
O proxy vai se conectar ao servidor usando PSK e a identidade PSK será "PSK 002".
(Para minimizar o tempo de indisponibilidade veja como mudar o tipo de conexão em gerenciamento de conexão criptografada).
Configure o PSK para este proxy na interface web do Zabbix.
- Acesse Administração → Proxies
- Selecione o proxy desejado, clique em seu nome
- Clique na aba Criptografia
- Em Conexões do proxy marque a opção PSK
- No campo Identidade PSK Informe o valor "PSK 002"
- No campo PSK Informe o valor "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"
- Clique no botão Atualizar
Reinicie o proxy. Ele irá se comunicar com o servidor usando conexão criptografada baseada em PSK. Verifique os logs do proxy e do server por mensagens de erro.
Para proxies passivos o processo é muito similar, a única diferença é
que tem que se configurar o parâmetro TLSAccept=psk no arquivo de
configuração do proxy e definr o campo Conexões com o proxy na
interface web do Zabbix para PSK.