Zabbix Documentation 3.0

3.04.05.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.24.4Guidelines

User Tools

Site Tools


pt:manual:encryption

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pt:manual:encryption [2019/10/07 06:35]
pt:manual:encryption [2016/02/22 13:12] (current)
spaww
Line 1: Line 1:
 +====== 16. Criptografia ======
 +
 +=== Visão geral ===
 +
 +O Zabbix suporta comunicação criptografada entre os seus componentes (Zabbix server/​Proxy/​Agent/​Sender/​get) através de TLS v1.2. O suporte a criptografia começou no Zabbix 3.0. A criptografia baseada em PSK e certificado também é suportada.
 +
 +A criptografia é opcional e configurável para cada componente (ex. alguns proxies e agentes podem estar configurados para utilizar criptografia com certificados ao falar com o Server, enquanto outros utilizam PSK, e outros não usam criptografia).
 +
 +O proxy pode utilizar diferentes configurações de criptografia para diferentes hosts.
 +
 +Os daemons do Zabbix utilizam uma porta para escutar comunicações criptografadas ou não criptografia. Adicionar a criptografia não exigirá a abertura de novas portas nos firewalls.
 +
 +=== Limitações ===
 +
 +  * As chaves privadas são armazenadas em texto plano em arquivos com permissão de leitura pelos componentes do Zabbix durante a inicialização.
 +  * As chaves compartilhadas são informadas na interface web do Zabbix e salvas em texto plano no banco de dados.
 +  * A criptografia nativa da solução não proteje as comunicações:​​
 +     * entre o servidor web do Zabbix e o navegador do usuário ((Nota do tradutor: para isso você deve habilitar o HTTPS no Apache)),
 +     * entre a interface web e o Zabbix Server,
 +     * entre o Zabbix Server/​Proxy e seu banco de dados.
 +  * Atualmente cada conexão criptografada precisa de validação TLS completa, não é feito nenhum cache de sessão ou uso de sistema de tickets.
 +  * A adição de criptografia aumenta o tempo de verificações e ações, dependendo da latência da rede.\\ Por exemplo, se atraso do pacote é de 100ms quando se abre uma conexão TCP e envia uma requisição em texto plano consome cerca de 200ms.\\ A mesma solicitação com o uso de criptografia gastará cerca de 1000 ms para o estabelecimento da conexão TLS.\\ O tempo limite (timeout) precisa ser ajustado, de outra forma alguns itens e ações executando scripts remotos que funcionavam com a conexão sem criptografia poderão falhar por esgotamento do tempo quando passarem a utilizar criptografia.
 + 
 +=== Compilando o Zabbix com o suporte a criptografia ===
 +
 +Para suportar a criptografia do Zabbix você precisa compilar e associar com uma destas três bibliotecas:​
 +  * //mbed TLS// (antigamente //​PolarSSL//​)(versão 1.3.9 ou superior - 1.3.x) - o //mbed TLS// 2.x não é suportado atualmente
 +  * //GnuTLS// (a partir da versão 3.1.18)
 +  * //OpenSSL// (a partir da versão 1.0.1)
 +
 +A biblioteca é selecionada através de parâmetro no script de configuração:​
 +  * ''<​nowiki>​--with-mbedtls[=DIR]</​nowiki>''​
 +  * ''<​nowiki>​--with-gnutls[=DIR]</​nowiki>''​
 +  * ''<​nowiki>​--with-openssl[=DIR]</​nowiki>''​
 +
 +Por exemplo, para configurar os fontes do servidor edo agente com //OpenSSL// você pode executar algo assim:\\
 +  ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl
 +
 +Diferentes componentes do Zabbix podem ser compilados com diferentes bibliotecas criptográficas (ex. um servidor com //​OpenSSL//,​ um agente com //​GnuTLS//​).
 +
 +<note important>​
 +Se você planejar utilizar PSK, considere a utilização das bibliotecas //GnuTLS// ou //mbed TLS// nos componentes Zabbix usando PSKs. As bibliotecas //GnuTLS// e //mbed TLS// suportam a suite de cifras com [[https://​en.wikipedia.org/​wiki/​Forward_secrecy#​Perfect_forward_secrecy_.28PFS.29|Perfeito encaminhamento de segredo]]. A biblioteca OpenSSL (versões 1.0.1, 1.0.2c) suporta o PSK mas não tem disponível as suítes de cifras que provejam o perfeito encaminhamento de segredo.
 +
 +</​note>​
 +=== Gerenciamento de conexão criptografada ===
 +
 +As conexões do Zabbix podem usar:
 +  * nenhuma criptografia (default)
 +  * [[pt:​​manual:​encryption:​using_certificates|criptografia baseada em certificado]]
 +  * [[pt:​​manual:​​encryption:​​using_pre_shared_keys|criptografia baseada em PSK (chave compartilhada)]]
 +
 +Existem dois parâmetros importantes utilizados para especificar a criptografia de conexões entre os componentes do Zabbix:
 +  * ''​TLSConnect''​
 +  * ''​TLSAccept''​
 +
 +''​TLSConnect''​ define qual criptografia a utilizar nas conexões de saída e pode pegar 1 de 3 valores (''​unencrypted'',​ ''​PSK'',​ ''​certificate''​).
 +''​TLSConnect''​ é utilizado em arquivos de configuração do Zabbix proxy (em modo ativo, identifica apenas conexões para o servidor) e do Zabbix agentd (para verificações ativas). Na interface web o ''​TLSConnect''​ é equivalente ao campo //Conexões com o host// em //​Configuração -> Hosts -><​some host>// aba //​Criptografia//​ e o campo //Conexões com o proxy// em //​Administração->​Proxies-><​some proxy>// aba //​Criptografia//​.
 +Se um tipo de conexão criptografada falhar, não será tentado outro tipo.
 +''​TLSAccept''​ define quais tipos de conexão de entrada serão permitidos. Tipos possíveis: ''​unencrypted'',​ ''​PSK'',​ ''​certificate''​. Podem ser definidos 1 ou mais valores.
 +''​TLSAccept''​ é utilizado em arquivos de configuração do proxy (em modo passivo) e do agente (em modo passivo). Na interface web do Zabbix o  ''​TLSAccept''​ é equivalente ao campo "​Conexões com o host" em "//​Configuração -> Hosts -><​some host>"​ aba **Criptografia** e o campo "​Conexões com o proxy" em //​Administração->​Proxies-><​some proxy>"​ aba **Criptografia**.
 +
 +Normalmente você configura somente um tipo de criptografia para as conexões de entrada. Mas você pode precisar alterar o tipo de criptografia,​ (ex. de não criptografado para criptografia baseada em certificados) com o mínimo de '​downtime'​ e possibilidade de rápido retorno. \\Para fazer isso defina ''​TLSAccept=unencrypted,​cert''​ no arquivo de configuração do agente o o reinicie. \\Então você poderá testar a conexão com o ''​zabbix_get''​ com o agente usando certificado. Se funcionar, você reconfigura a criptografia daquele agente na interface web do Zabbix, configurando para o uso de certificado. Quando o cache de comunicação do servidor for atualizado (e a configuração do proxy for atualizada se o proxy estiver sendo monitorado por um) as conexões começarão a ocorrer de forma criptografa. \\Se tudo estiver funcionando como o esperado você pode configurar ''​TLSAccept=cert''​ na configuração do agente e reinicia-lo. Agora o agente vai aceitar apenas conexões criptografadas e com certificado. Comunicações sem criptografia ou baseadas em PSK serão rejeitadas.
 +
 +A configuração funciona de forma similar entre o Zabbix Server/​Proxy. Se o host estiver configurado para usar certificado,​ então apenas comunicações criptografadas com certificados serão aceitas pelo agente (verificações ativas) e pelo ''​zabbix_sender''​ (trapper items).
 +
 +Provavelmente você irá configurar para que as comunicações de entrda e de saída ocorram com o mesmo tipo de criptografia ou sem criptografia para todos. Mas é tecnicamente possível configurar isso de forma assimétrica,​ ex. criptografia com certificados para entrada e com PSK para a saída.
 +
 +Para uma visão geral, a configuração de criptografia de cada host será apresentada na interface do Zabbix no canto direito da listagem de hosts na coluna "​Criptografia do agente"​.
 +Exemplos de configurações:​
 +
 +^Exemplo^Conexões PARA o host^Conexões permitidas DO host^Conexões REJEITADAS do host^ 
 +| {{manual:​​encryption:​​none.png}} | Texto plano | Texto plano | Certificado ou chave compartilhada | 
 +| {{manual:​​encryption:​​cert.png}} | Criptografado,​ por certificado | Criptografado,​ por certificado | Texto plano e chave compartilhada | 
 +| {{manual:​​encryption:​​psk_psk.png}} | Criptografado,​ por chave compartilhada | Criptografado,​ por chave compartilhada | Texto plano ou chave | 
 +| {{manual:​​encryption:​​psk_none_psk.png}} | Criptografado,​ por chave compartilhada | Texto plano ou chave compartilhada | Certificado | 
 +| {{manual:​​encryption:​​all.png}} | Criptografado,​ por certificado | Texto plano,​ certificado ou chave compartilhada | - |
 + 
 +
 +<note important>​
 +O padrão sao conexões não criptografadas. A criptografia precisa ser configurada em cada host e proxy individualmente.
 +</​note>​
 +
 +=== zabbix_get e zabbix_sender com criptografia ===
 +
 +Consulte o manual dos componentes [[pt:​manpages:​​zabbix_get|zabbix_get]] e [[pt:​manpages:​​zabbix_sender|zabbix_sender]] para informações sobre como eles trabalham com criptografia.
 +
 +=== Algorítimos de criptografia ===
 +
 +Os algorítimos são configurados internamente durante a inicialização do Zabbix e, dependendo da biblioteca de criptografia,​ eles podem não ser configuráveis pelo usuário.
 +
 +Lista de bibliotecas de criptografia configuradas ordenadas por sua prioridade:
 +
 +^Library^Certificate ciphersuites^PSK ciphersuites^ ​
 +| //mbed TLS (PolarSSL) 1.3.9// |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256\\ TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256\\ TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA\\ TLS-RSA-WITH-AES-128-GCM-SHA256\\ TLS-RSA-WITH-AES-128-CBC-SHA256\\ TLS-RSA-WITH-AES-128-CBC-SHA |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256\\ TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA\\ TLS-PSK-WITH-AES-128-GCM-SHA256\\ TLS-PSK-WITH-AES-128-CBC-SHA256\\ TLS-PSK-WITH-AES-128-CBC-SHA | 
 +| //GnuTLS 3.1.18// |TLS_ECDHE_RSA_AES_128_GCM_SHA256\\ TLS_ECDHE_RSA_AES_128_CBC_SHA256\\ TLS_ECDHE_RSA_AES_128_CBC_SHA1\\ TLS_RSA_AES_128_GCM_SHA256\\ TLS_RSA_AES_128_CBC_SHA256\\ TLS_RSA_AES_128_CBC_SHA1 |TLS_ECDHE_PSK_AES_128_CBC_SHA256\\ TLS_ECDHE_PSK_AES_128_CBC_SHA1\\ TLS_PSK_AES_128_GCM_SHA256\\ TLS_PSK_AES_128_CBC_SHA256\\ TLS_PSK_AES_128_CBC_SHA1 | 
 +| //OpenSSL 1.0.2c// |ECDHE-RSA-AES128-GCM-SHA256\\ ECDHE-RSA-AES128-SHA256\\ ECDHE-RSA-AES128-SHA\\ AES128-GCM-SHA256\\ AES128-SHA256\\ AES128-SHA |PSK-AES128-CBC-SHA |
 +
 +Uso dos conjuntos criptográficos (linhas - TLS de cliente, colunas ​ - TLS de servidor):
 +Usando certificados:​
 +^ ^mbed TLS (PolarSSL)^GnuTLS^OpenSSL^
 +|mbed TLS (PolarSSL)|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
 +|GnuTLS|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
 +|OpenSSL|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
 +
 +Usando PSK:
 +^ ^mbed TLS (PolarSSL)^GnuTLS^OpenSSL^ ​
 +|mbed TLS (PolarSSL)|TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-PSK-WITH-AES-128-CBC-SHA | 
 +|GnuTLS|TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-PSK-WITH-AES-128-CBC-SHA | 
 +|OpenSSL|TLS-PSK-WITH-AES-128-CBC-SHA |TLS-PSK-WITH-AES-128-CBC-SHA |TLS-PSK-WITH-AES-128-CBC-SHA |
 +