Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

1 Usando certificados

Visão geral

O Zabbix pode usar certificados RSA no formato PEM, assinados por um público ou autoridade de certificação interna (CA). A verificação do certificado é feita contra um certificado CA pré-configurado. Certificado opcional listas de revogação (CRL) podem ser usadas. Cada componente Zabbix pode ter apenas um certificado configurado.

Para obter mais informações sobre como configurar e operar CA interna, como gerar solicitações de certificado e assiná-las, como revogar certificados você pode encontrar vários tutoriais online, por exemplo, OpenSSL PKI Tutorial v1.1 .

Considere e teste cuidadosamente suas extensões de certificado - consulte Limitações ao usar o certificado X.509 v3 extensões.

Parâmetros de configuração do certificado

Parâmetro Obrigatório Descrição
TLSCAFile * Nome do caminho completo de um arquivo contendo os certificados de CA(s) de nível superior para verificação de certificado de peer.
No caso de cadeia de certificados com vários membros, eles devem ser solicitados: certificados de CA de nível inferior seguidos primeiro por certificados de CA(s) de nível superior.
Certificados de várias CA(s) podem ser incluídos em um único arquivo.
TLSCRLFile Nome completo do caminho de um arquivo contendo Listas de Revogação de Certificados. Veja as notas em Listas de revogação de certificados (CRL).
TLSCertFile * Nome completo do caminho de um arquivo contendo certificado (cadeia de certificados).
No caso de cadeia de certificados com vários membros, eles devem ser solicitados: primeiro servidor, proxy ou certificado de agente, seguido por CA de nível inferior certificados e depois certificados de CA(s) de nível superior.
TLSKeyFile * Nome do caminho completo de um arquivo contendo chave privada. Defina os direitos de acesso a este arquivo - ele deve ser lido apenas pelo usuário Zabbix.
TLSServerCertIssuer Emissor de certificado de servidor permitido.
TLSServerCertSubject Assunto do certificado do servidor permitido.

Configuration examples

After setting up the necessary certificates, configure Zabbix components to use certificate-based encryption.

Below are detailed steps for configuring:

Configurando o certificado no servidor Zabbix

1. Para verificar os certificados de peer, o servidor Zabbix deve ter acesso para arquivar com seus certificados CA raiz autoassinados de nível superior. Para Por exemplo, se esperamos certificados de duas CAs raiz independentes, podemos coloque seus certificados no arquivo /home/zabbix/zabbix_ca_file como esta:

Certificado:
           Dados:
               Versão: 3 (0x2)
               Número de série: 1 (0x1)
           Algoritmo de assinatura: sha1WithRSAEncryption
               Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Root1 CA
                   ...
               Assunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Root1 CA
               Informações da chave pública do assunto:
                   Algoritmo de chave pública: rsaEncryption
                       Chave pública: (2048 bits)
                   ...
               Extensões X509v3:
                   Uso da chave X509v3: crítico
                       Sinal de certificado, sinal de CRL
                   Restrições básicas do X509v3: crítica
                       CA: VERDADEIRO
                   ...
       -----INICIAR CERTIFICADO-----
       MIID2jCCAsKgAwIBAGIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ....
       9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
       -----FIM DO CERTIFICADO-----
       Certificado:
           Dados:
               Versão: 3 (0x2)
               Número de série: 1 (0x1)
           Algoritmo de assinatura: sha1WithRSAEncryption
               Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Root2 CA
                   ...
               Assunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Root2 CA
               Informações da chave pública do assunto:
                   Algoritmo de chave pública: rsaEncryption
                       Chave pública: (2048 bits)
                   ....
               Extensões X509v3:
                   Uso da chave X509v3: crítico
                       Sinal de certificado, sinal de CRL
                   Restrições básicas do X509v3: crítica
                       CA: VERDADEIRO
                   ....
       -----INICIAR CERTIFICADO-----
       MIID3DCCAsSgAwIBAGIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
       ...
       vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
       -----FIM DO CERTIFICADO-----

2. Coloque a cadeia de certificados do servidor Zabbix no arquivo, por exemplo, /home/zabbix/zabbix_server.crt:

Certificado:
           Dados:
               Versão: 3 (0x2)
               Número de série: 1 (0x1)
           Algoritmo de assinatura: sha1WithRSAEncryption
               Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Assinar CA
               ...
               Assunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=servidor Zabbix
               Informações da chave pública do assunto:
                   Algoritmo de chave pública: rsaEncryption
                       Chave pública: (2048 bits)
                       ...
               Extensões X509v3:
                   Uso da chave X509v3: crítico
                       Assinatura digital, criptografia de chave
                   Restrições básicas do X509v3:
                       CA:FALSO
                   ...
       -----INICIAR CERTIFICADO-----
       MIIECDCCAvCgAwIBAGIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
       ...
       h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ==
       -----FIM DO CERTIFICADO-----
       Certificado:
           Dados:
               Versão: 3 (0x2)
               Número de série: 2 (0x2)
           Algoritmo de assinatura: sha1WithRSAEncryption
               Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Root1 CA
               ...
               Assunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Assinar CA
               Informações da chave pública do assunto:
                   Algoritmo de chave pública: rsaEncryption
                       Chave pública: (2048 bits)
                   ...
               Extensões X509v3:
                   Uso da chave X509v3: crítico
                       Sinal de certificado, sinal de CRL
                   Restrições básicas do X509v3: crítica
                       CA:TRUE, pathlen:0
               ...
       -----INICIAR CERTIFICADO-----
       MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ...
       dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
       -----FIM DO CERTIFICADO-----

Aqui o primeiro é o certificado do servidor Zabbix, seguido pela CA intermediária certificado.

3. Coloque a chave privada do servidor Zabbix no arquivo, por exemplo, /home/zabbix/zabbix_server.key:

-----INICIAR CHAVE PRIVADA-----
       MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
       ...
       IJLkhbybBYEf47MLhffWa7XvZTY=
       -----TERMINAR CHAVE PRIVADA-----

4. Edite os parâmetros TLS no arquivo de configuração do servidor Zabbix como este:

TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSCertFile=/home/zabbix/zabbix_server.crt
       TLSKeyFile=/home/zabbix/zabbix_server.key

Configurando a criptografia baseada em certificado para o proxy Zabbix

1. Preparar arquivos com certificados de CA de nível superior, certificado de proxy (cadeia) e chave privada conforme descrito em Configurando o certificado em Zabbix server. Edite os parâmetros TLSCAFile, TLSCertFile, TLSKeyFile no proxy configuração em conformidade.

2. Para o parâmetro "TLSConnect" de edição de proxy ativo:

TLSConnect=cert

Para o parâmetro "TLSAccept" de edição de proxy passivo:

TLSAccept=cert

3. Agora você tem uma configuração mínima de proxy baseada em certificado. Vocês pode preferir melhorar a segurança do proxy definindo TLSServerCertIssuer e parâmetros TLSServerCertSubject (consulte Restringindo Emissor do certificado e Assunto).

4. No arquivo de configuração de proxy final, os parâmetros TLS podem se parecer com:

TLSConnect=cert
       TLSAccept=cert
       TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSServerCertIssuer=CN=Assinando CA,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSServerCertSubject=CN=servidor Zabbix,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSCertFile=/home/zabbix/zabbix_proxy.crt
       TLSKeyFile=/home/zabbix/zabbix_proxy.key

5. Configure a criptografia para este proxy no frontend do Zabbix:

  • Vá para: Administração → Proxies
  • Selecione o proxy e clique na guia Criptografia

Nos exemplos abaixo, os campos Emissor e Assunto são preenchidos - consulte Restringindo o emissor do certificado permitido e Assunto por que e como usar esses campos.

Para proxy ativo

proxy_active_cert.png

Para proxy passivo

proxy_passive_cert.png

Configurando a criptografia baseada em certificado para o agente Zabbix

1. Preparar arquivos com certificados de CA de nível superior, certificado de agente (cadeia) e chave privada conforme descrito em Configurando o certificado em Zabbix server. Edite os parâmetros TLSCAFile, TLSCertFile, TLSKeyFile no agente configuração em conformidade.

2. Para verificações ativas, edite o parâmetro TLSConnect:

TLSConnect=cert

Para verificações passivas, edite o parâmetro TLSAccept:

TLSAccept=cert

3. Agora você tem uma configuração mínima de agente baseada em certificado. Vocês pode preferir melhorar a segurança do agente configurando TLSServerCertIssuer e parâmetros TLSServerCertSubject. (consulte Restringindo permitido Emissor do certificado e Assunto).

4. No arquivo de configuração final do agente, os parâmetros TLS podem se parecer com:

TLSConnect=cert
       TLSAccept=cert
       TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSServerCertIssuer=CN=Assinando CA,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSServerCertSubject=CN=Proxy Zabbix,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSCertFile=/home/zabbix/zabbix_agentd.crt
       TLSKeyFile=/home/zabbix/zabbix_agentd.key

(O exemplo assume que o host é monitorado via proxy, portanto, proxy Certificado Assunto.)

5. Configure a criptografia para este agente no frontend do Zabbix:

  • Vá para: Configuração → Hosts
  • Selecione o host e clique na guia Criptografia

No exemplo abaixo, os campos Emissor e Assunto são preenchidos - consulte Restringindo o emissor do certificado permitido e Assunto por que e como usar esses campos.

agent_config.png

Zabbix web service

1. Prepare files with the top-level CA certificates, the Zabbix web service certificate/certificate chain, and the private key as described in the Zabbix server section. Then, edit the TLSCAFile, TLSCertFile, and TLSKeyFile parameters in the Zabbix web service configuration file accordingly.

2. Edit an additional TLS parameter in the Zabbix web service configuration file: TLSAccept=cert

TLS parameters in the final web service configuration file may look as follows:

TLSAccept=cert
       TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSCertFile=/home/zabbix/zabbix_web_service.crt
       TLSKeyFile=/home/zabbix/zabbix_web_service.key

3. Configure Zabbix server to connect to the TLS-configured Zabbix web service by editing the WebServiceURL parameter in the Zabbix server configuration file:

WebServiceURL=https://example.com

Restringindo o emissor e o assunto do certificado permitido

Quando dois componentes Zabbix (por exemplo, servidor e agente) estabelecem um TLS conexão ambos verificam os certificados um do outro. Se um colega certificado é assinado por uma CA confiável (com certificado de nível superior pré-configurado certificado em TLSCAFile), é válido, não expirou e passa alguns outras verificações, a comunicação pode prosseguir. Emissor de certificados e assunto não são verificados neste caso mais simples.

Aqui está um risco - qualquer pessoa com um certificado válido pode se passar por qualquer outra pessoa (por exemplo, um certificado de host pode ser usado para representar servidor). Isso pode ser aceitável em ambientes pequenos onde os certificados são assinados por uma CA interna dedicada e o risco de falsificação é baixo.

Se sua autoridade de certificação de nível superior for usada para emitir outros certificados que devem não ser aceito pelo Zabbix ou você deseja reduzir o risco de se passar por você pode restringir os certificados permitidos especificando seu emissor e Cadeias de assunto.

Por exemplo, você pode escrever no arquivo de configuração do proxy Zabbix:

TLSServerCertIssuer=CN=Assinando CA,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSServerCertSubject=CN=servidor Zabbix,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com

Com essas configurações, um proxy ativo não falará com o servidor Zabbix com string de Emissor ou Assunto diferente no certificado, um proxy passivo não aceitar solicitações de tal servidor.

Algumas notas sobre a correspondência de strings de emissor ou assunto:

  1. As cadeias de emissor e assunto são verificadas independentemente. Ambos são opcional.
  2. Caracteres UTF-8 são permitidos.
  3. String não especificada significa que qualquer string é aceita.
  4. As strings são comparadas "no estado em que se encontram", elas devem ser exatamente iguais às partida.
  5. Curingas e regexps não são suportados na correspondência.
  6. Apenas alguns requisitos de RFC 4514 Lightweight Directory Access Protocolo (LDAP): Representação de String de Distinto Nomes são implementados:
    1. caracteres de escape '"' (U+0022), '+' U+002B, ',' U+002C, ';' U+003B, '<' U+003C, '>' U+003E, '\' U+005C em qualquer lugar corda.
    2. espaço de caracteres de escape (' ' U+0020) ou sinal de número ('#' U+0023) no início da string.
    3. espaço de caracteres de escape (' ' U+0020) no final da string.
  7. A correspondência falha se um caractere nulo (U+0000) for encontrado (RFC 4514 permite).
  8. Requisitos do Protocolo de Acesso ao Diretório Leve RFC 4517 (LDAP): Sintaxes e correspondência Regras e RFC 4518 Leve Protocolo de Acesso ao Diretório (LDAP): String Internacionalizada Preparação não são suportados devido à quantidade de trabalho necessária.

A ordem dos campos nas strings e formatação do Emissor e do Assunto são importante! Zabbix segue RFC 4514 recomendação e usa a ordem "inversa" dos campos.

A ordem inversa pode ser ilustrada pelo exemplo:

TLSServerCertIssuer=CN=Assinando CA,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       TLSServerCertSubject=CN=Proxy Zabbix,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com

Observe que começa com nível baixo (CN), prossegue para nível médio (OU, O) e termina com campos de nível superior (DC).

OpenSSL por padrão mostra os campos Emissor e Assunto do certificado em ordem "normal", dependendo das opções adicionais usadas:

$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
       emissor= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desenvolvimento/CN=Assinando CA
       subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desenvolvimento/CN=Proxy Zabbix
       
       $ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
       Certificado:
               ...
               Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desenvolvimento, CN=Assinar CA
           ...
               Assunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=grupo de desenvolvimento, CN=proxy Zabbix

Aqui as strings de emissor e assunto começam com nível superior (DC) e terminam com campo de baixo nível (CN), espaços e separadores de campo dependem das opções usado. Nenhum desses valores corresponderá no Zabbix Issuer e Subject Campos!

::: não importante Para obter as seqüências de emissor e assunto adequadas utilizáveis no Zabbix invoque o OpenSSL com opções especiais
-nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname:

:::

$ openssl x509 -noout -issuer -subject \
               -nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname \
               -in /home/zabbix/zabbix_proxy.crt
       emissor= CN=Assinando CA,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com
       assunto= CN=Proxy Zabbix,OU=Grupo de desenvolvimento,O=Zabbix SIA,DC=zabbix,DC=com

Agora os campos de string estão em ordem inversa, os campos são separados por vírgulas, podem ser usado em arquivos de configuração e frontend do Zabbix.

Rules for matching Issuer and Subject strings

The rules for matching Issuer and Subject strings are as follows:

  • Issuer and Subject strings are checked independently. Both are optional.
  • An unspecified string means that any string is accepted.
  • Strings are compared as is and must match exactly.
  • UTF-8 characters are supported. However, wildcards (*) or regular expressions are not supported.
  • The following RFC 4514 requirements are implemented - characters that require escaping (with a '\' backslash, U+005C):
    • anywhere in the string: '"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C);
    • at the beginning of the string: space (' ', U+0020) or number sign ('#', U+0023);
    • at the end of the string: space (' ', U+0020).
  • Null characters (U+0000) are not supported. If a null character is encountered, the matching will fail.
  • RFC 4517 and RFC 4518 standards are not supported.

For example, if Issuer and Subject organization (O) strings contain trailing spaces and the Subject organizational unit (OU) string contains double quotes, these characters must be escaped:

TLSServerCertIssuer=CN=Signing CA,OU=Development head,O=\ Example SIA\ ,DC=example,DC=com
       TLSServerCertSubject=CN=Zabbix server,OU=Development group \"5\",O=\ Example SIA\ ,DC=example,DC=com
Field order and formatting

Zabbix follows the recommendations of RFC 4514, which specifies a "reverse" order for these fields, starting with the lowest-level fields (CN), proceeding to the mid-level fields (OU, O), and concluding with the highest-level fields (DC).

TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
       TLSServerCertSubject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com

In contrast, OpenSSL by default displays the Issuer and Subject strings in top-level to low-level order. In the following example, Issuer and Subject fields start with the top-level (DC) and end with the low-level (CN) field. The formatting with spaces and field separators also varies based on the options used, and thus will not match the format required by Zabbix.

$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
       issuer= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Signing CA
       subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Zabbix proxy
       
       $ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
       Certificate:
           ...
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
               ...
               Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix proxy

To format Issuer and Subject strings correctly for Zabbix, invoke OpenSSL with the following options:

$ openssl x509 -noout -issuer -subject \
           -nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname\
           -in /home/zabbix/zabbix_proxy.crt

The output will then be in reverse order, comma-separated, and usable in Zabbix configuration files and frontend:

issuer= CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
       subject= CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com

Limitações ao usar extensões de certificado X.509 v3

  • Nome alternativo do assunto (subjectAltName) extensão.
    Nomes de assunto alternativos da extensão subjectAltName (como IP endereço, endereço de e-mail) não são suportados pelo Zabbix. Apenas valor de O campo "Assunto" pode ser verificado no Zabbix (veja Restringindo permissão Emissor do certificado e Assunto).
    Se o certificado usar a extensão subjectAltName, o resultado será depende de uma combinação particular de kits de ferramentas de criptografia Zabbix componentes são compilados (pode ou não funcionar, o Zabbix pode se recusam a aceitar tais certificados de pares).
  • Extensão Uso estendido de chave.
    Se usado, geralmente tanto clientAuth (cliente TLS WWW autenticação) e serverAuth (autenticação do servidor TLS WWW) são necessário.
    Por exemplo, em verificações passivas, o agente Zabbix atua em um servidor TLS função, então serverAuth deve ser definido no certificado do agente. Para ativo verifica que o certificado do agente precisa que clientAuth seja definido.
    GnuTLS emite um aviso em caso de violação de uso de chave, mas permite comunicação para prosseguir.
  • Extensão Restrições de nome.
    Nem todos os kits de ferramentas de criptografia o suportam. Esta extensão pode impedir Zabbix de carregar certificados de CA onde esta seção está marcada como crítico (depende do kit de ferramentas de criptografia específico).

Listas de revogação de certificados (CRL)

Se um certificado estiver comprometido, a CA pode revogá-lo incluindo na CRL. As CRLs podem ser configuradas no arquivo de configuração do servidor, proxy e agente usando o parâmetro TLSCRLFile. Por exemplo:

 TLSCRLFile=/home/zabbix/zabbix_crl_file

onde zabbix_crl_file pode conter CRLs de várias CAs e se parecer com:

 -----INÍCIO X509 CRL-----
        MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
        ...
        treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
        -----END X509 CRL-----
        -----INÍCIO X509 CRL-----
        MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
        ...
        CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
        -----END X509 CRL-----

O arquivo CRL é carregado apenas na inicialização do Zabbix. A atualização da CRL requer reinicialização.

::: não importante Se o componente Zabbix for compilado com OpenSSL e CRLs são usados, em seguida, cada CA de nível superior e intermediário no certificado chains devem ter uma CRL correspondente (pode estar vazia) em TLSCRLFile.

:::