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â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. |
After setting up the necessary certificates, configure Zabbix components to use certificate-based encryption.
Below are detailed steps for configuring:
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
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:
Para o parâmetro "TLSAccept" de edição de proxy passivo:
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:
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
Para proxy passivo
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
:
Para verificações passivas, edite o parâmetro TLSAccept
:
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:
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.
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:
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:
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.
Issuer
and Subject
stringsThe rules for matching Issuer
and Subject
strings are as follows:
Issuer
and Subject
strings are checked independently. Both are optional.*
) or regular expressions are not supported.\
' backslash, U+005C):
"
' (U+0022), '+
' (U+002B), ',
' (U+002C), ';
' (U+003B), '<
' (U+003C), '>
' (U+003E), '\\
' (U+005C);#
', U+0023);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
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
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:
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
.
:::