11 SSH agent

Vue d'ensemble

Les vérifications SSH sont effectuées comme une surveillance sans agent. L'agent Zabbix n'est pas nécessaire pour les vérifications SSH.

Pour effectuer des vérifications SSH, le serveur Zabbix doit d'abord être configuré avec la prise en charge de SSH2 (libssh ou libssh2). Voir aussi : Exigences.

À partir de RHEL 8, seul libssh est pris en charge. Pour les autres distributions, libssh est recommandé plutôt que libssh2.

Configuration

Authentification par phrase secrète

Les vérifications SSH offrent deux méthodes d'authentification : une paire nom d'utilisateur/mot de passe et une authentification basée sur un fichier de clé.

Si vous n'avez pas l'intention d'utiliser des clés, aucune configuration supplémentaire n'est requise, à part l'association de libssh ou libssh2 à Zabbix, si vous effectuez une compilation à partir des sources.

Authentification par fichier de clé

Pour utiliser l'authentification par clé pour les éléments SSH, certaines modifications de la configuration du serveur sont nécessaires.

Ouvrez le fichier de configuration du serveur Zabbix (zabbix_server.conf) en tant que root et recherchez la ligne suivante :

# SSHKeyLocation=

Décommentez-la et définissez le chemin complet vers le dossier où se trouveront les clés publique et privée :

SSHKeyLocation=/home/zabbix/.ssh

Enregistrez le fichier, puis redémarrez le serveur Zabbix.

Le chemin /home/zabbix ici correspond au répertoire personnel du compte utilisateur zabbix, et .ssh est un répertoire dans lequel, par défaut, les clés publique et privée seront générées par une commande ssh-keygen dans le répertoire personnel.

En général, les paquets d'installation du serveur Zabbix provenant de différentes distributions d'OS créent le compte utilisateur zabbix avec un répertoire personnel situé ailleurs, par exemple /var/lib/zabbix (comme pour les comptes système).

Avant de générer les clés, vous pouvez réaffecter le répertoire personnel à /home/zabbix, afin qu'il corresponde au paramètre de configuration SSHKeyLocation du serveur Zabbix mentionné ci-dessus.

Les étapes suivantes peuvent être ignorées si le compte zabbix a été ajouté manuellement conformément à la section d'installation. Dans ce cas, le répertoire personnel du compte zabbix est très probablement déjà /home/zabbix.

Pour modifier le répertoire personnel du compte utilisateur zabbix, tous les processus actifs qui l'utilisent doivent être arrêtés :

systemctl stop zabbix-agent
systemctl stop zabbix-server

Pour modifier l'emplacement du répertoire personnel avec une tentative de le déplacer (s'il existe), la commande suivante doit être exécutée :

usermod -m -d /home/zabbix zabbix

Il est également possible qu'aucun répertoire personnel n'existe à l'ancien emplacement ; il doit alors être créé au nouvel emplacement. Une tentative sûre consiste à exécuter :

test -d /home/zabbix || mkdir /home/zabbix

Pour s'assurer que tout est sécurisé, des commandes supplémentaires peuvent être exécutées afin de définir les permissions du répertoire personnel :

chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix

Les processus précédemment arrêtés peuvent maintenant être redémarrés :

systemctl start zabbix-agent
systemctl start zabbix-server

Les étapes de génération des clés publique et privée peuvent maintenant être effectuées avec les commandes suivantes (pour une meilleure lisibilité, les invites de commande sont commentées) :

sudo -u zabbix ssh-keygen -t rsa
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/zabbix/.ssh/id_rsa):
/home/zabbix/.ssh/id_rsa
# Enter passphrase (empty for no passphrase):
<Leave empty>
# Enter same passphrase again: 
<Leave empty>
# Your identification has been saved in /home/zabbix/.ssh/id_rsa.
# Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
# The key fingerprint is:
# 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
# The key's randomart image is:
# +--[ RSA 2048]----+
# |                 |
# |       .         |
# |      o          |
# | .     o         |
# |+     . S        |
# |.+   o =         |
# |E .   * =        |
# |=o . ..* .       |
# |... oo.o+        |
# +-----------------+

Les clés publique et privée (id_rsa.pub et id_rsa) ont été générées par défaut dans le répertoire /home/zabbix/.ssh, ce qui correspond au paramètre de configuration SSHKeyLocation du serveur Zabbix.

Les types de clés autres que "rsa" peuvent être pris en charge par l'outil ssh-keygen et les serveurs SSH, mais ils peuvent ne pas être pris en charge par libssh2 utilisé par Zabbix.

Formulaire de configuration du shell

Cette étape ne doit être effectuée qu'une seule fois pour chaque hôte qui sera surveillé par des vérifications SSH.

En utilisant les commandes suivantes, le fichier de clé publique peut être installé sur un hôte distant 10.10.10.10, afin que les vérifications SSH puissent être effectuées avec un compte root (pour une meilleure lisibilité, les invites de commande sont mises en commentaire) :

sudo -u zabbix ssh-copy-id [email protected]
# L'authenticité de l'hôte '10.10.10.10 (10.10.10.10)' ne peut pas être établie.
# L'empreinte de la clé RSA est 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
# Êtes-vous sûr de vouloir continuer la connexion (yes/no) ?
yes
# Avertissement : '10.10.10.10' (RSA) a été ajouté de façon permanente à la liste des hôtes connus.
# Mot de passe de [email protected] :
<Entrez le mot de passe root>
# Essayez maintenant de vous connecter à la machine avec "ssh '[email protected]'",
# et vérifiez que seules les clés que vous vouliez ont été ajoutées.

Il est maintenant possible de vérifier la connexion SSH en utilisant la clé privée par défaut (/home/zabbix/.ssh/id_rsa) pour le compte utilisateur zabbix :

sudo -u zabbix ssh [email protected]

Si la connexion réussit, alors la partie configuration dans le shell est terminée et la session SSH distante peut être fermée.

Configuration de l'élément

Les commandes réelles à exécuter doivent être placées dans le champ Executed script de la configuration de l'élément. Plusieurs commandes peuvent être exécutées l'une après l'autre en les plaçant sur une nouvelle ligne. Dans ce cas, les valeurs renvoyées seront également formatées sur plusieurs lignes.

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Les champs qui nécessitent des informations spécifiques pour les éléments SSH sont les suivants :

Parameter Description Comments
Type Sélectionnez SSH agent ici.
Key Clé d'élément unique (par hôte) au format ssh.run[description courte unique,<ip>,<port>,<encoding>,<ssh options>] description courte unique est obligatoire et doit être unique pour chaque élément SSH par hôte.

Le port par défaut est 22, et non le port spécifié dans l'interface à laquelle cet élément est assigné.

Les ssh options permettent de transmettre des options SSH supplémentaires au format key1=value1;key2=value2,value3. Plusieurs valeurs pour une même clé peuvent être transmises séparées par des virgules (dans ce cas, le paramètre doit être entre guillemets) ; plusieurs clés d'options peuvent être transmises séparées par des points-virgules.

Les clés d'option suivantes sont prises en charge : KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs. La prise en charge de la clé et de la valeur d'option dépend de la bibliothèque SSH ; si une option n'est pas prise en charge, une erreur sera renvoyée et l'élément deviendra non pris en charge.

Notez que le signe "+" pour l'ajout de paramètres de chiffrement et "!" pour la désactivation de paramètres de chiffrement spécifiques (comme dans GnuTLS et OpenSSL) ne sont pas pris en charge.

Exemples :
=> ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]
=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]
Authentication method L'une des options "Password" ou "Public key".
User name Nom d'utilisateur (jusqu'à 255 caractères) pour l'authentification sur l'hôte distant. Obligatoire.
Public key file Nom du fichier de clé publique si Authentication method est "Public key". Obligatoire. Exemple : id_rsa.pub - nom de fichier de clé publique par défaut généré par la commande ssh-keygen.
Private key file Nom du fichier de clé privée si Authentication method est "Public key". Obligatoire. Exemple : id_rsa - nom de fichier de clé privée par défaut.
Password or
Key passphrase
Mot de passe (jusqu'à 255 caractères) pour l'authentification ou
phrase secrète si elle a été utilisée pour la clé privée.
Laissez le champ Key passphrase vide si aucune phrase secrète n'a été utilisée.
Voir aussi les problèmes connus concernant l'utilisation des phrases secrètes.
Executed script Commande(s) shell exécutée(s) via une session distante SSH. La valeur de retour de la ou des commande(s) shell exécutée(s) est limitée à 16 Mo (y compris les espaces blancs de fin qui sont tronqués) ; les limites de la base de données s'appliquent également.

Notez que la bibliothèque libssh2 peut tronquer les scripts exécutables à \~32 kB.

Exemples :
date +%s
systemctl status mysql-server
ps auxww | grep httpd | wc -l