Como adicionar criptografia PSK entre Zabbix Server e Agent

No contexto da segurança da informação, a proteção dos dados é um fator imperativo. Uma vez que, pode-se utilizar técnicas de interceptação de mensagem para descobrir o que está sendo transmitido.

Para solucionar este problema, o Zabbix adicionou uma camada de criptografia entre o Zabbix Server, Zabbix Proxy e Zabbix Agent, podendo usar pre-shared key (PSK) ou certificado RSA. Estas criptografias são opcionais e podem ser configuradas separadamente sem precisar da criação de regra adicional no Firewall, pois utiliza a mesma porta.

O que é PSK

A Pre-shared Key (PSK), como o nome diz é uma chave pre-compartilhada com segredo entre duas partes. Por exemplo, “ZBX-01” este nome será referenciado pelos componentes do Zabbix e o valor gerado é um texto hexadecimal, com tamanho de 2048-bit (256-byte PSK, informado como 512 caracteres hexadecimal).

Após o Zabbix receber a conexão do Zabbix Agente ou Zabbix Proxy ele análisa a chave configurada e o valor hexadecimal. Se ambas as partes tiverem a mesma identidade PSK e valor PSK, a conexão é bem sucedida.

Limitações existentes

Vale destacar duas limitações que pode ocorrer durante a adição de criptografia.

  • A adição de criptografia pode aumentar o tempo de verificações e ações. Por exemplo, se o atraso do pacote for cerca de 100ms não criptografado, já com a criptografia este tempo pode ser aumentado.
  • As pre-shared Keys(PSK) é inserida no frontend do Zabbix e armazenado no banco de dados em texto simples.

Gerando a PSK

Antes de fazer a geração do PSK instale o gnutls-bin (library com comandos utilitário )

sudo apt install gnutls-bin

Execute o comando psktool para gerar uma chave random:

$ psktool -u <psk_identity>  -p database.psk -s 32
Generating a random key for user '<psk_identity>'
Key stored to agent.psk

$ cat agent.psk 
psk_identity:6a48b53d831da9969bf5e0bf119c8527b64525d9ce9ba4c4f4e95bcd413a095a

Note que ao executar o psktool, foi gerado um arquivo chamado agent.psk. O Zabbix espera apenas a Key gerada no arquivo, portanto a identidade da chave ( ‘ : ‘ ) deve ser removida, ficando assim:

$ cat agent.psk 
6a48b53d831da9969bf5e0bf119c8527b64525d9ce9ba4c4f4e95bcd413a095a

Configurando o PSK entre o Zabbix Server e o Agente

No momento que você gera o arquivo agent.psk, este arquivo é criado no local onde o comando foi executado, por exemplo /etc/zabbix/psk/agent.psk. O arquivo deve conter PSK na primeira cadeia de texto.

6a48b53d831da9969bf5e0bf119c8527b64525d9ce9ba4c4f4e95bcd413a095a

Altere a permissão do diretório, executando o comando:

$ sudo chown -R zabbix:zabbix /etc/zabbix/psk/

Em seguida, no arquivo de configuração do zabbix_agentd.conf altere os seguintes parâmetros:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/psk/agent.psk
TLSPSKIdentity=ZBX-AGT

Reinicie o agente e teste a conexão usando zabbix_get:

$ sudo zabbix_get -s 127.0.0.1 -k "agent.ping" --tls-connect=psk --tls-psk-identity="ZBX-AGT" \
 --tls-psk-file=/etc/zabbix/psk/agent.psk
1

Caso você execute o comando sem passar os parâmetros do tls, será mostrado a seguinte mensagem:

zabbix_get -s 127.0.0.1 -k agent.ping
zabbix_get [6699]: Check access restrictions in Zabbix agent configuration

E no log do zabbix_agent a seguinte linha irá aparecer:

6725:20190122:132759.253 failed to accept an incoming connection: from 127.0.0.1: unencrypted connections are not

Configurando no FrontEnd

Após ter feito as devidas configurações no agente, acesse o frontend:

  • Vá em: Configurations —> Host
  • Selecione o host e clique na aba Encryption

Cole a chave criada no arquivo agent.psk

E por fim, aguarde alguns instantes e perceberá alteração de cor para verde no campo Agent encryption –> PSK.

É isso, esperamos que tenha gostado e caso tenha alguma dúvida mande um e-mail para: bramos@onxsoltions.net

Fonte: https://zabbix.com/documentation/4.0/manual/encryption/using_pre_shared_keys

Fundador da empresa Onx Solutions em Goiânia. Formado em Tecnologia em Redes de Computadores pela Universidade Nove de Julho em São Paulo. Possui certificações LPIC-1,LPIC-2, ZABBIX Certified Specialist,Novell Certified Linux Administrator (CLA) e Linux Administrator for SUSE Linux Enterprise.