pt:manual:encryption

Differences

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

Link to this comparison view

pt:manual:encryption [2016/02/22 13:12]
spaww
pt:manual:encryption [2019/10/07 06:35]
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 | 
-