Les certificats SSL (TLS) constituent un élément essentiel de l'infrastructure moderne. Les administrateurs doivent donc s'assurer qu'ils n'expirent pas et qu'ils sont renouvelés à temps. Cet article vous montre comment utiliser Zabbix pour surveiller vos sites Web pour détecter l'expiration des certificats SSL.
Dans les versions précédentes de Zabbix, pour surveiller l'expiration des certificats SSL, vous deviez utiliser des scripts de console qui transmettaient des valeurs à Zabbix via leParamètre utilisateur.Zabbix Agent 2 vous permet de vérifier les informations sur le certificat à l'aide duPlugin WebCertificat. Cet article examinera les deux manières de surveiller l'expiration des certificats SSL dans Zabbix.
Contenu:
- Vérifiez l'expiration du certificat SSL à l'aide du plugin WebCertificate sur Zabbix
- Surveiller l'expiration du certificat HTTPS avec un script dans Zabbix
Vérifiez l'expiration du certificat SSL à l'aide du plugin WebCertificate sur Zabbix
Agent Zabbix 2inclut un plugin WebCertificate intégré qui vous permet de vérifier les informations du certificat du site Web. Vérifiez que cette version de l'agent est installée sur l'hôte :
$ zabbix_agent2 -V

Vous pouvez utiliser le plugin WebCertificate pour obtenir des informations sur le certificat du site directement depuis la console en utilisant lezabbix-getcommande:
$ zabbix_get -s 127.0.0.1 -k web.certificate.get[woshub.com,443]
La commande doit renvoyer un objet JSON contenant les attributs du certificat du site Web spécifié.


Un modèle intégré « Certificat de site Web par l'agent Zabbix 2 » est disponible dans Zabbix. Utilisez-le pour vérifier la date d'expiration du certificat TLS/SSL.
- Allez dans Configuration -> Hôtes et ajoutez un nouvel hôte avec le nom du site Web ;
- Créez un nouveau groupe d'hôtes ou sélectionnez-en un existant ;
- Attribuer le modèleCertificat de site Web par l'agent Zabbix 2;
- Spécifiez l'adresse IP ou le nom de l'agent Zabbix dans le champInterfacesection (dans notre exemple,
127.0.0.1);

- Allez ensuite auMacroonglet et cliquezMacros héritées et hôtes;
- Dans le
{$CERT.WEBSITE.HOSTNAME}macro, précisez le nom DNS du site Web dont vous souhaitez vérifier le certificat ;

- Par défaut, un avertissement indiquant qu'un certificat SSL est sur le point d'expirer sera affiché 7 jours avant la date d'expiration. Vous pouvez augmenter cette valeur avec une macro
{$CERT.EXPIRY.WARN}; - Si le site utilise un port TLS/SSL autre que 443, vous pouvez le spécifier à l'aide d'une macro
{$CERT.WEBSITE.PORT}; - Enregistrez les paramètres.
Zabbix vous avertit désormais lorsque le certificat d'un site est sur le point d'expirer.
Surveiller l'expiration du certificat HTTPS avec un script dans Zabbix
Vous pouvez utiliser des scripts externes pour récupérer les informations d'expiration des certificats dans les versions précédentes de Zabbix. L'outil de ligne de commande openssl vous permet d'extraire les informations de certificat de site Web.
Voir aussi :Qu'est-ce qu'un certificat SSL ?
Créer un fichier de script bash/usr/lib/zabbix/externalscripts/sslcert_expiration.shavec le code suivant : :
#!/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))
Autorisez l'exécution du script :
$ sudo chmod +x /usr/lib/zabbix/externalscripts/sslcert_expiration.sh
Ce script renvoie le nombre de jours restant avant l'expiration du certificat. Vérifiez que le script fonctionne correctement.
$ /usr/lib/zabbix/externalscripts/sslcert_expiration.sh woshub.com 443


Le script a renvoyé que le certificat du site est valide pour les 79 prochains jours.
Vous devez maintenant autoriser l'agent Zabbix à exécuter ce script bash personnalisé à l'aide duParamètre utilisateurparamètre.
$ sudo mcedit /etc/zabbix/zabbix_agent2.conf
Ajouter:
UserParameter=sslcertexpire[*],/usr/lib/zabbix/externalscripts/sslcert_expiration.sh $1 $2


À l'aide d'un script dans UserParameter, vous pouvez également vérifier la date d'expiration d'un domaine dans Zabbix.
Redémarrez l'agent :
$ sudo service zabbix-agent2 restart
Vérifiez que l'agent Zabbix peut recevoir des données via le nouveau paramètre. Vous pouvez utiliser lezabbix-getcommande pour tester la réponse de l'agent :
$ zabbix_get -s 127.0.0.1 -p 10050 -k sslcertexpire[woshub.com,443]
Ajoutez maintenant un nouveau modèleVérifier SSLCertExpirationpour surveiller l'expiration des certificats HTTPS dans Zabbix.
Dans l'onglet Éléments, ajoutez un paramètre
- Nom : validité restante du certificat SSL
{$DOMAINNAME} - Type : Agent Zabbix
- Clé:
sslcertexpire[{$DOMAINNAME},{$SSL_PORT}] - Type d'information : Numérique (non signé)
- Intervalle de mise à jour : 1 j
- Histoire : 90j
- Tendance : 365j


Ajoutez ensuite un nouveau déclencheur :
- Nom : Le certificat SSL pour
{$DOMAINNAME}est sur le point d'expirer - Expression:
last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])<20 - Gravité : élevée
Ce déclencheur générera une alerte s'il reste moins de 20 jours avant l'expiration du certificat SSL.
Vous pouvez ajouter un paramètre de déclencheur de récupération :
Recovery expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])>20


Ajoutez maintenant un nouvel hôte à Zabbix pour votre site avec unAgenttype d'interface.
Dans leMacro, ajoutez deux paramètres : le nom du serveur et le port sur lequel vous souhaitez vérifier le certificat SSL :
- Macro :
{$DOMAINNAME} - Valeur:
woshub.com
et
- Macro :
{$SSL_PORT} - Valeur:
443


Attribuez le modèle CheckSSLCertExpiration précédemment créé à l’hôte.
Vérifiez maintenant leDernières données. Zabbix indique que le certificat SSL du site expirera dans 79 jours.


Pour informer l'administrateur que le certificat SSL doit être renouvelé prochainement, vous pouvez activer les notifications par e-mail ou par messagerie.














