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. 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

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 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:

TLSConnect=cert

Para proxy pasivo, edite el parámetro TLSAccept:

TLSAccept=cert

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:

  • 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 por qué Restringir el emisor de certificados permitidos y Asunto y cómo utilizar estos campos.

Para proxy activo

proxy_active_cert.png

Para proxy pasivo

proxy_passive_cert.png

Configuración de 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 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:

TLSConnect=cert

Para comprobaciones pasivas, edite el parámetro TLSAccept:

TLSAccept=cert

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:

  • Ir a: Recopilación de datos → Equipos
  • Seleccione el equipo y haga clic en la pestaña Cifrado

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.

agent_config.png

Restringir el emisor y el asunto del certificado permitidos

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:

  1. Las cadenas de emisor y asunto se verifican de forma independiente. Ambas son opcionales.
  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 coincidir.
  5. Los comodines y las expresiones regulares no se admiten en la coincidencia.
  6. Solo algunos requisitos de RFC 4514 Acceso ligero a directorios Protocolo (LDAP): representación de cadena de distinguido Se implementan los nombres:
    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 ¡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.

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 dirección IP, dirección de correo electrónico) no son compatibles con Zabbix. único valor del 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 activo 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.