1 Usando certificados

Descripción general

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ámetros de configuración del certificado

Parámetro Obligatorio Descripción
TLSCAFile 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.

Configuración del certificado en el servidor Zabbix

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. Para Por ejemplo, si esperamos certificados de dos CA raíz independientes, podemos coloque sus certificados en el archivo /home/zabbix/zabbix_ca_file como este:

Certificado:
           Datos:
               Versión: 3 (0x2)
               Número de serie: 1 (0x1)
           Algoritmo de firma: sha1WithRSAEncryption
               Emisor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
                   ...
               Asunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
               Información de clave pública del sujeto:
                   Algoritmo de clave pública: rsaEncryption
                       Clave pública: (2048 bits)
                   ...
               Extensiones X509v3:
                   Uso de clave X509v3: crítico
                       Signo de certificado, signo CRL
                   Restricciones básicas de X509v3: críticas
                       CA: VERDADERO
                   ...
       -----INICIAR CERTIFICADO-----
       MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ....
       9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
       -----CERTIFICADO FINAL-----
       Certificado:
           Datos:
               Versión: 3 (0x2)
               Número de serie: 1 (0x1)
           Algoritmo de firma: sha1WithRSAEncryption
               Emisor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root2 CA
                   ...
               Asunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root2 CA
               Información de clave pública del sujeto:
                   Algoritmo de clave pública: rsaEncryption
                       Clave pública: (2048 bits)
                   ....
               Extensiones X509v3:
                   Uso de clave X509v3: crítico
                       Signo de certificado, signo CRL
                   Restricciones básicas de X509v3: críticas
                       CA: VERDADERO
                   ....       
       -----INICIAR CERTIFICADO-----
       MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
       ...
       vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
       -----CERTIFICADO FINAL-----

2. Coloque la cadena de certificados del servidor Zabbix en un archivo, por ejemplo, /home/zabbix/zabbix_server.crt:

Certificado:
           Datos:
               Versión: 3 (0x2)
               Número de serie: 1 (0x1)
           Algoritmo de firma: sha1WithRSAEncryption
               Emisor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
               ...
               Asunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=servidor Zabbix
               Información de clave pública del sujeto:
                   Algoritmo de clave pública: rsaEncryption
                       Clave pública: (2048 bits)
                       ...
               Extensiones X509v3:
                   Uso de clave X509v3: crítico
                       Firma digital, cifrado de claves
                   Restricciones básicas de X509v3: 
                       CA: FALSO
                   ...
       -----INICIAR CERTIFICADO-----
       MIIECDCCavCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
       ...
       h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ==
       -----CERTIFICADO FINAL-----
       Certificado:
           Datos:
               Versión: 3 (0x2)
               Número de serie: 2 (0x2)
           Algoritmo de firma: sha1WithRSAEncryption
               Emisor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=Root1 CA
               ...
               Asunto: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
               Información de clave pública del sujeto:
                   Algoritmo de clave pública: rsaEncryption
                       Clave pública: (2048 bits)
                   ...
               Extensiones X509v3:
                   Uso de clave X509v3: crítico
                       Signo de certificado, signo CRL
                   Restricciones básicas de X509v3: críticas
                       CA: VERDADERO, ruta: 0
               ...
       -----INICIAR CERTIFICADO-----
       MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ...
       dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
       -----CERTIFICADO FINAL-----

Aquí el primero es el certificado del servidor Zabbix, seguido de la CA intermedia certificado.

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. Ver también: Limitaciones en el uso del certificado X.509 v3 extensiones.

3. Coloque la clave privada del servidor Zabbix en un archivo, por ejemplo, /home/zabbix/zabbix_server.key:

-----COMENZAR CLAVE PRIVADA-----
       MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
       ...
       IJLkhbybBYEf47MLhffWa7XvZTY=
       -----FIN DE CLAVE PRIVADA-----

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

Configuración de cifrado basado en certificados para el proxy Zabbix

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 zabbix servidor. Editar parámetros TLSCAFile, TLSCertFile, TLSKeyFile en proxy configuración en consecuencia.

2. Para proxy activo, edite el parámetro TLSConnect:

TLSConnect=certificado

Para proxy pasivo, edite el parámetro TLSAccept:

TLSAccept=certificado

3. Ahora tiene una configuración mínima de proxy basada en certificados. Tú Es posible que prefiera mejorar la seguridad del proxy configurando TLSServerCertIssuer. y parámetros TLSServerCertSubject (consulte [Restricción de permisos permitidos] Emisor del certificado y Asunto](/manual/encryption/using_certificates#restricting_allowed_certificate_issuer_and_subject)).

4. En el archivo de configuración de proxy final, los parámetros TLS pueden verse así:

TLSConnect=certificado
       TLSAccept=certificado
       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:

  • Ir a: Administración → Proxies
  • Seleccione el proxy y haga clic en la pestaña Cifrado

En los ejemplos siguientes, los campos Emisor y Asunto están completos; consulte Restringir el emisor de certificados permitido y Asunto por qué y cómo utilizar estos campos.

Para proxy activo

proxy_active_cert.png

Para proxy pasivo

proxy_passive_cert.png

Configuración del cifrado basado en certificados para el agente Zabbix

1. Prepare archivos con certificados de CA de nivel superior, certificado de agente (cadena) y clave privada como se describe en Configuración del certificado en zabbix servidor. Editar parámetros TLSCAFile, TLSCertFile, TLSKeyFile en el agente configuración en consecuencia.

2. Para verificaciones activas, edite el parámetro TLSConnect:

TLSConnect=certificado

Para comprobaciones pasivas, edite el parámetro TLSAccept:

TLSAccept=certificado

3. Ahora tiene una configuración mínima de agente basada en certificados. Tú Es posible que prefiera mejorar la seguridad del agente configurando TLSServerCertIssuer. y parámetros TLSServerCertSubject. (ver Restringir permitido Emisor del certificado y Asunto).

4. En el archivo de configuración final del agente, los parámetros TLS pueden verse así:

TLSConnect=certificado
       TLSAccept=certificado
       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 host se monitorea a través de un proxy, por lo tanto, el proxy Asunto del certificado.)

5. Configure el cifrado para este agente en la interfaz de Zabbix:

  • Vaya a: Configuración → Hosts
  • Seleccione el host y haga clic en la pestaña Cifrado

En el ejemplo siguiente, los campos Emisor y Asunto están completos; consulte Restringir el emisor de certificados permitido y Asunto por qué y cómo utilizar estos campos.

agent_config.png

Restringir el emisor y el asunto del certificado permitido

Cuando dos componentes de Zabbix (por ejemplo, servidor y agente) establecen un TLS conexión, ambos verifican los certificados de cada uno. si un compañero El certificado está firmado por una CA confiable (con nivel superior preconfigurado). certificado en TLSCAFile), es válido, no ha caducado y pasa algunos otras comprobaciones, entonces la comunicación puede continuar. emisor del certificado y El tema 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 host para hacerse pasar por 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á aceptado por Zabbix o desea reducir el riesgo de suplantación de identidad Puede restringir los certificados permitidos especificando su emisor y Cadenas 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 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:

  1. Las cadenas de emisor y asunto se verifican de forma independiente. Ambos son opcional.
  2. Se permiten caracteres UTF-8.
  3. Cadena no especificada significa que se acepta cualquier cadena.
  4. Las cadenas se comparan "tal cual", deben ser exactamente iguales para fósforo.
  5. No se admiten comodines ni expresiones regulares en la coincidencia.
  6. Solo algunos requisitos de RFC 4514 Acceso ligero a directorios Protocolo (LDAP): representación de cadena de distinguido Nombres se implementan:
    1. caracteres de escape '"' (U+0022), '+' U+002B, ',' U+002C, ';' U+003B, '<' U+003C, '>' U+003E, '\' U+005C en cualquier lugar de cadena.
    2. caracteres de escape, espacio (' ' U+0020) o signo numérico ('#' U+0023) al principio de la cadena.
    3. espacio de carácter de escape (' ' U+0020) al final de la cadena.
  7. La coincidencia falla si se encuentra un carácter nulo (U+0000) (RFC 4514 lo permite).
  8. Requisitos del Protocolo ligero de acceso a directorios RFC 4517 (LDAP): sintaxis y coincidencia Reglas y RFC 4518 Peso ligero Protocolo de acceso a directorios (LDAP): cadena internacionalizada Preparación no son compatibles debido a la cantidad de trabajo requerido.

El orden de los campos en las cadenas de Emisor y Asunto y el formato son ¡importante! 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 -emisor -subject
       emisor= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desarrollo/CN=CA firmante
       sujeto= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grupo de desarrollo/CN=Proxy Zabbix
       
       $ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
       Certificado:
               ...
               Emisor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grupo de desarrollo, CN=CA firmante
           ...
               Asunto: 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. usado. Ninguno de estos valores coincidirá en Zabbix Emisor y Asunto ¡campos!

::: nota importante 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 -emisor -subject\
               -nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname \
               -en /home/zabbix/zabbix_proxy.crt
       emisor = CN = CA firmante, OU = grupo de desarrollo, O = Zabbix SIA, DC = zabbix, DC = com
       Asunto= 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, ser utilizado en archivos de configuración y frontend de Zabbix.

Limitaciones en el uso de extensiones de certificado X.509 v3

  • Extensión del nombre alternativo del sujeto (subjectAltName).
    Nombres de asunto alternativos de la extensión subjectAltName (como IP dirección, dirección de correo electrónico) no son compatibles con Zabbix. único valor de El campo "Asunto" se puede marcar en Zabbix (consulte Restricción permitida Emisor del certificado y Asunto).
    Si el certificado usa la extensión subjectAltName entonces el resultado depende de una combinación particular de kits de herramientas criptográficas Zabbix se compilan los componentes (puede que funcione o no, Zabbix puede negarse a aceptar dichos certificados de sus pares).
  • Extensión Uso extendido de clave.
    Si se usa, generalmente ambos clientAuth (cliente TLS WWW autenticación) y serverAuth (autenticación del servidor TLS WWW) son necesario.
    Por ejemplo, en comprobaciones pasivas, el agente Zabbix actúa en un servidor TLS. rol, por lo que serverAuth debe configurarse en el certificado del agente. Para activos comprueba que el certificado del agente necesita clientAuth para estar configurado.
    GnuTLS emite una advertencia en caso de infracción de uso de clave pero permite comunicación para proceder.
  • Extensión Restricciones de nombre.
    No todos los kits de herramientas criptográficas lo admiten. Esta extensión puede impedir Zabbix cargue certificados de CA donde esta sección está marcada como crítico (depende del conjunto de herramientas criptográficas en particular).

Listas de revocación de certificados (CRL)

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:

TLSCRLFile=/home/zabbix/zabbix_crl_file

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.