Zabbix puede utilizar certificados RSA en formato PEM, firmados por una autoridad pública o autoridad de certificación (CA) interna. Se realiza la verificación del certificado. contra un certificado de CA preconfigurado. Opcionalmente, se pueden utilizar listas de revocación (CRL). Cada componente de Zabbix solo puede tener un certificado configurado.
Para obtener más información sobre cómo configurar y operar la autoridad de certificación interna, cómo generar solicitudes de certificados y firmarlas, cómo revocar certificados, puede encontrar numerosos manuales en línea, por ejemplo, Tutorial de OpenSSL PKI v1.1 .
Considere y pruebe cuidadosamente las extensiones de su certificado; consulte las limitaciones en el uso de extensiones de certificado X.509 v3.
Parámetro | Obligatorio | Descripción |
---|---|---|
TLSCAFile | sí | Nombre de ruta completo de un archivo que contiene los certificados de CA de nivel superior para la verificación de certificados de pares. En caso de una cadena de certificados con varios miembros, se deben ordenar: los certificados de CA de nivel inferior primero seguidos de certificados de CA(s) de nivel superior. Los certificados de varias CA(s) se pueden incluir en un solo archivo. |
TLSCRLFile | no | Nombre de ruta completo de un archivo que contiene listas de revocación de certificados. Consulte las notas en Listas de revocación de certificados (CRL). |
TLSCertFile | yes | Ruta completa de un archivo que contiene el certificado (cadena de certificados). En caso de una cadena de certificados con varios miembros, se deben ordenar: primero el certificado de servidor, proxy o agente, seguido de los certificados de CA de nivel inferior. luego, certificados de CA(s) de nivel superior. |
TLSKeyFile | yes | Nombre de ruta completo de un archivo que contiene la clave privada. Establezca derechos de acceso a este archivo; solo debe ser legible por el usuario de Zabbix. |
TLSServerCertIssuer | no | Emisor de certificado de servidor permitido. |
TLSServerCertSubject | no | Asunto del certificado de 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 los certificados de pares, el servidor Zabbix debe tener acceso para presentar con sus certificados de CA raíz autofirmados de nivel superior. Por ejemplo, si esperamos certificados de dos CA raíz independientes, podemos colocar sus certificados en el archivo /home/zabbix/zabbix_ca_file
como este:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
...
Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bits)
...
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
...
-----BEGIN CERTIFICATE-----
MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
....
9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root2 CA
...
Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root2 CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
....
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA: TRUE
....
-----BEGIN CERTIFICATE-----
MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
...
vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
-----END CERTIFICATE-----
2. Coloque la cadena de certificados del servidor Zabbix en un archivo, por ejemplo, /home/zabbix/zabbix_server.crt
:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
...
Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=servidor Zabbix
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
...
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Basic Constraints:
CA:FALSE
...
-----BEGIN CERTIFICATE-----
MIIECDCCavCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
...
h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ==
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha1WithRSAEncryption
Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
...
Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
...
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
...
-----BEGIN CERTIFICATE-----
MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
...
dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
-----END CERTIFICATE-----
Aquí el primero es el certificado del servidor Zabbix, seguido del certificadode CA intermedia.
Se desaconseja el uso de cualquier atributo excepto los mencionados anteriormente para los certificados de cliente y de servidor, ya que puede afectar el proceso de verificación del certificado. Por ejemplo, es posible que OpenSSL no pueda establecer una conexión cifrada si se configuran X509v3 Extended Key Usage o Netscape Cert Type. Consulte también: Limitaciones en el uso de extensiones de certificado X.509 v3.
3. Coloque la clave privada del servidor Zabbix en un archivo, por ejemplo, /home/zabbix/zabbix_server.key
:
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----
4. Edite los parámetros TLS en el archivo de configuración del servidor Zabbix de esta manera:
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
1. Prepare archivos con certificados de CA de nivel superior, certificado de proxy (cadena) y clave privada como se describe en Configuración del certificado en el servidor zabbix. Edite los parámetros TLSCAFile
, TLSCertFile
, TLSKeyFile
en consecuencia en la configuración del proxy.
2. Para proxy activo, edite el parámetro TLSConnect
:
Para proxy pasivo, edite el parámetro TLSAccept
:
3. Ahora tiene una configuración mínima de proxy basada en certificados. Es posible que prefiera mejorar la seguridad del proxy configurando los parámetros TLSServerCertIssuer
y TLSServerCertSubject
(consulte Restricción de permisos permitidos Emisor del certificado y Asunto).
4. En el archivo de configuración de proxy final, los parámetros TLS pueden verse así:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSServerCertIssuer=CN=CA firmante,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=servidor Zabbix,OU=grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_proxy.crt
TLSKeyFile=/home/zabbix/zabbix_proxy.key
5. Configure el cifrado para este proxy en la interfaz de Zabbix:
En los ejemplos siguientes, los campos Emisor y Asunto están completos; consulte por qué Restringir el emisor de certificados permitidos y Asunto y cómo utilizar estos campos.
Para proxy activo
Para proxy pasivo
1. Prepare archivos con certificados de CA de nivel superior, certificado de agente (cadena) y clave privada como se describe en la Configuración del certificado en el servidor zabbix. Edite los parámetros TLSCAFile
, TLSCertFile
, TLSKeyFile
en consecuencia en la configuración del agente.
2. Para verificaciones activas, edite el parámetro TLSConnect
:
Para comprobaciones pasivas, edite el parámetro TLSAccept
:
3. Ahora tiene una configuración mínima de agente basada en certificados. Es posible que prefiera mejorar la seguridad del agente configurando los parámetros TLSServerCertIssuer
y TLSServerCertSubject
. (ver Restringir Emisor del certificado y Asunto permitidos).
4. En el archivo de configuración final del agente, los parámetros TLS pueden verse así:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSServerCertIssuer=CN=CA firmante,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Proxy Zabbix,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_agentd.crt
TLSKeyFile=/home/zabbix/zabbix_agentd.key
(El ejemplo supone que el equipo se monitorea a través de un proxy, por eso, el uso de Asunto del certificado del proxy.)
5. Configure el cifrado para este agente en la interfaz de Zabbix:
En el siguiente ejemplo, los campos Emisor y Asunto están completos; consulte por qué Restringir el emisor de certificados y Asunto permitidos y cómo utilizar estos 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:
Cuando dos componentes de Zabbix (por ejemplo, servidor y agente) establecen un TLS conexión, ambos verifican los certificados de cada uno. si el certificado de la contraparte está firmado por una CA confiable (con certificado de nivel superior preconfigurado en TLSCAFile
), es válido, no ha caducado y pasa algunas otras comprobaciones, entonces la comunicación puede continuar. El emisor del certificado y el asunto no se verifica en este caso más simple.
Aquí existe un riesgo: cualquiera con un certificado válido puede hacerse pasar por cualquier otra persona (por ejemplo, se puede utilizar un certificado de equipo para hacerse pasar por un servidor). Esto puede ser aceptable en entornos pequeños donde los certificados están firmados por una CA interna dedicada y el riesgo de suplantación de identidad es bajo.
Si su CA de nivel superior se utiliza para emitir otros certificados que deberían no ser aceptados por Zabbix o desea reducir el riesgo de suplantación de identidad, puede restringir los certificados permitidos especificando las cadenas de su emisor y de asunto.
Por ejemplo, puede escribir en el archivo de configuración del proxy Zabbix:
TLSServerCertIssuer=CN=CA firmante,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=servidor Zabbix,OU=grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
Con esta configuración, un proxy activo no se comunicará con el servidor Zabbix con una cadena de Emisor o Asunto diferente en el certificado, un proxy pasivo no aceptará solicitudes de dicho servidor.
Algunas notas sobre la coincidencia de cadenas de Emisor o Asunto:
El orden de los campos en las cadenas de Emisor y Asunto y el formato son ¡importantes! Zabbix sigue RFC 4514 recomendación y utiliza el orden "inverso" de los campos.
El orden inverso se puede ilustrar con un ejemplo:
TLSServerCertIssuer=CN=CA firmante,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Proxy Zabbix,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
Tenga en cuenta que comienza con el nivel bajo (CN), continúa hasta el nivel medio (OU, O) y termina con campos de nivel superior (DC).
OpenSSL muestra de forma predeterminada los campos Emisor y Asunto del certificado en orden "normal", dependiendo de las opciones adicionales utilizadas:
$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
issuer= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desarrollo/CN=CA firmante
subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desarrollo/CN=Proxy Zabbix
$ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
Certificate:
...
Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
...
Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Proxy Zabbix
Aquí las cadenas de Emisor y Asunto comienzan con el nivel superior (DC) y terminan con el campo de bajo nivel (CN), los espacios y los separadores de campo dependen de las opciones. usadas. Ninguno de estos valores coincidirá con los campos Zabbix Emisor y Asunto
Para poder utilizar las cadenas de Emisor y Asunto adecuadas en Zabbix invoca OpenSSL con opciones especiales
(-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
issuer = CN = CA firmante, OU = grupo de desarrollo, O = Zabbix SIA, DC = zabbix, DC = com
subject= CN=Proxy Zabbix,OU=Grupo de desarrollo,O=Zabbix SIA,DC=zabbix,DC=com
Ahora los campos de cadena están en orden inverso, los campos están separados por comas, pueden ser utilizados en archivos de configuración y frontend de 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
Si un certificado está comprometido, la CA puede revocarlo incluyéndolo en la CRL. Las CRL se pueden configurar en el archivo de configuración del servidor, proxy y agente. usando el parámetro TLSCRLFile
. Por ejemplo:
donde zabbix_crl_file
puede contener CRL de varias CA y verse así:
-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL----- -----BEGIN X509 CRL----- MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t ... CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs= -----END X509 CRL-----
El archivo CRL se carga solo al iniciar Zabbix. La actualización de CRL requiere reiniciar.
Si el componente Zabbix está compilado con OpenSSL y se utilizan CRL, cada CA de nivel superior e intermedio en las cadenas del certificado deben tener una CRL correspondiente (puede estar vacía) en TLSCRLFile
.