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:

psk_config.png

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.