Búsqueda de sitios web

Monitoreo de la caducidad del certificado SSL/TLS del sitio web con Zabbix


Los certificados SSL (TLS) son una parte fundamental de la infraestructura moderna, por lo que los administradores deben asegurarse de que no caduquen y se renueven a tiempo. Este artículo le muestra cómo utilizar Zabbix para monitorear sus sitios web en busca de certificados SSL que caduquen.

En versiones anteriores de Zabbix, para monitorear la caducidad de los certificados SSL, había que usar scripts de consola que pasaban valores a Zabbix a través del UserParameter. Zabbix Agent 2 le permite comprobar la información del certificado utilizando el complemento WebCertificate integrado. Este artículo analizará ambas formas de monitorear la caducidad del certificado SSL en Zabbix.

Verifique la caducidad del certificado SSL utilizando el complemento WebCertificate en Zabbix

Zabbix Agent 2 incluye un complemento WebCertificate integrado que le permite verificar la información del certificado del sitio web. Compruebe que esta versión del agente esté instalada en el host:

$ zabbix_agent2 -V

Puede utilizar el complemento WebCertificate para obtener información sobre el certificado del sitio directamente desde la consola usando el comando zabbix-get:

$ zabbix_get -s 127.0.0.1 -k web.certificate.get[a-d.site,443]

El comando debe devolver un objeto JSON que contenga los atributos del certificado para el sitio web especificado.

Una plantilla integrada “Certificado de sitio web realizado por el agente 2 de Zabbix” está disponible en Zabbix. Úselo para verificar la fecha de vencimiento del certificado TLS/SSL.

  1. Vaya a Configuración -> Hosts y agregue un nuevo host con el nombre del sitio web;

  2. Cree un nuevo grupo de hosts o seleccione uno existente;

  3. Asigne la plantilla Certificado de sitio web por el agente 2 de Zabbix;

  4. Especifique la dirección IP o el nombre del agente Zabbix en la sección Interfaz (en nuestro ejemplo,

    127.0.0.1

    );

  5. Luego vaya a la pestaña Macros y haga clic en Macros heredadas y de host;

  6. En el

    {$CERT.WEBSITE.HOSTNAME}

    macro, especifique el nombre DNS del sitio web cuyo certificado desea verificar;

  7. De forma predeterminada, se mostrará una advertencia de que un certificado SSL está a punto de caducar 7 días antes de la fecha de vencimiento. Puedes aumentar este valor con una macro.

    {$CERT.EXPIRY.WARN}

    ;

  8. Si el sitio web utiliza un puerto TLS/SSL distinto del 443, puede especificarlo mediante una macro

    {$CERT.WEBSITE.PORT}

    ;

  9. Guardar ajustes.

Zabbix ahora le advierte cuando el certificado de un sitio está a punto de caducar.

Supervisar la caducidad del certificado HTTPS con script en Zabbix

Puede utilizar scripts externos para recuperar información de caducidad de certificados en versiones anteriores de Zabbix. La herramienta de línea de comando openssl le permite extraer información del certificado del sitio web.

Cree un archivo de script bash /usr/lib/zabbix/externalscripts/sslcert_expiration.sh con el siguiente código::

#!/bin/bash
data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`
ssldate=`date -d "${data}" '+%s'`
nowdate=`date '+%s'`
diff="$((${ssldate}-${nowdate}))"
echo $((${diff}/24/3600))

Permita que se ejecute el script:

$ sudo chmod +x /usr/lib/zabbix/externalscripts/sslcert_expiration.sh

Este script devuelve el número de días que quedan hasta que caduque el certificado. Comprueba que el script funciona correctamente.

$ /usr/lib/zabbix/externalscripts/sslcert_expiration.sh a-d.site 443

El script devolvió que el certificado del sitio es válido durante los próximos 79 días.

Ahora debe permitir que el agente Zabbix ejecute este script bash personalizado utilizando el parámetro UserParameter.

$ sudo mcedit /etc/zabbix/zabbix_agent2.conf

Agregar :

UserParameter=sslcertexpire[*],/usr/lib/zabbix/externalscripts/sslcert_expiration.sh $1 $2

Usando un script en UserParameter, también puedes verificar la fecha de vencimiento de un dominio en Zabbix.

Reinicie el agente:

$ sudo service zabbix-agent2 restart

Verifique que el agente Zabbix pueda recibir datos a través del nuevo parámetro. Puede utilizar el comando zabbix-get para probar la respuesta del agente:

$ zabbix_get -s 127.0.0.1 -p 10050 -k sslcertexpire[a-d.site,443]

Ahora agregue una nueva plantilla CheckSSLCertExpiration para monitorear la caducidad de los certificados HTTPS en Zabbix.

En la pestaña Artículos, agregue un parámetro

  • Nombre: Validez restante del certificado SSL

    {$DOMAINNAME}
  • Tipo: Agente Zabbix

  • Llave:

    sslcertexpire[{$DOMAINNAME},{$SSL_PORT}]
  • Tipo de información: Numérica (sin firmar)

  • Intervalo de actualización: 1d

  • Historia: 90d

  • Trenfd: 365d

Luego agregue un nuevo disparador:

  • Nombre: El certificado SSL para

    {$DOMAINNAME}

    está a punto de expirar

  • Expresión:

    last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])<20
  • Gravedad: alta

Este activador generará una alerta si quedan menos de 20 días antes de que caduque el certificado SSL.

Puede agregar un parámetro de activación de recuperación:

Recovery expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])>20

Ahora agregue un nuevo host a Zabbix para su sitio con un tipo de interfaz Agente.

En la pestaña Macros, agregue dos parámetros: el nombre del servidor y el puerto en el que desea verificar el certificado SSL:

  • Macro:

    {$DOMAINNAME}
  • Valor:

    a-d.site

y

  • Macro:

    {$SSL_PORT}
  • Valor:

    443

Asigne la plantilla CheckSSLCertExpiration creada anteriormente al host.

Ahora consulte los datos más recientes. Zabbix muestra que el certificado SSL del sitio caducará en 79 días.

Para notificar al administrador que el certificado SSL debe renovarse pronto, puede habilitar las notificaciones por correo electrónico o mensajería.

Artículos relacionados