9 Vérifications SSH
Aperçu
Les vérifications SSH sont effectuées en tant que supervision 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é à la place de 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 une authentification basée sur des clés 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ù seront stockées les clés publique et privée :
SSHKeyLocation=/home/zabbix/.ssh
Enregistrez le fichier, puis redémarrez le serveur Zabbix.
Le chemin /home/zabbix correspond ici 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.
Habituellement, les paquets d'installation du serveur Zabbix provenant de différentes distributions de systèmes d'exploitation 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 du serveur Zabbix SSHKeyLocation
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 en cours qui l'utilisent doivent être arrêtés :
systemctl stop zabbix-agent
systemctl stop zabbix-server
Pour modifier l'emplacement du répertoire personnel en essayant 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 de le faire est :
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
À présent, les étapes de génération des clés publique et privée peuvent être effectuées à l'aide des commandes suivantes (pour une meilleure lisibilité, les invites de commande sont commentées) :
sudo -u zabbix ssh-keygen -t rsa
# Génération de la paire de clés rsa publique/privée.
# Entrez le fichier dans lequel enregistrer la clé (/home/zabbix/.ssh/id_rsa) :
/home/zabbix/.ssh/id_rsa
# Entrez la phrase secrète (laisser vide pour ne pas utiliser de phrase secrète) :
<Leave empty>
# Entrez à nouveau la même phrase secrète :
<Leave empty>
# Votre identification a été enregistrée dans /home/zabbix/.ssh/id_rsa.
# Votre clé publique a été enregistrée dans /home/zabbix/.ssh/id_rsa.pub.
# L'empreinte de la clé est :
# 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
# L'image randomart de la clé est :
# +--[ 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,
qui correspond au paramètre de configuration du serveur Zabbix SSHKeyLocation.
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
La ou les commande(s) réelles à exécuter doivent être placées dans le champ Script exécuté 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 :
| Parameter | Description | Comments |
|---|---|---|
| Type | Sélectionnez SSH agent ici. | |
| Key | Clé d'élément unique (par hôte) au format ssh.run[courte description unique,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] | La courte description 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 affecté. 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 en les séparant par une virgule (dans ce cas, le paramètre doit être entre guillemets) ; plusieurs clés d'option peuvent être transmises en les séparant par un point-virgule. Les clés d'option suivantes sont prises en charge : KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. La prise en charge des clés et valeurs d'option dépend de la bibliothèque SSH (par exemple, PubkeyAcceptedKeyTypes n'est pris en charge qu'avec libssh) ; 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 ajouter des paramètres de chiffrement et "!" pour désactiver des 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"]=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]subsystem permet de transmettre un sous-système SSH, limitant la connexion SSH à des opérations spécifiques autorisées par le sous-système (par exemple, les transferts de fichiers via SFTP ou la gestion d'équipements réseau via NETCONF). Notez que l'utilisation d'un sous-système peut également nécessiter l'utilisation d'une syntaxe de script spécifique dans le paramètre Script exécuté. Exemples : => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | L'une des méthodes « 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 une 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 de la phrase secrète. |
| Executed script | Commande(s) shell exécutée(s) à l'aide d'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 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 à \~32kB. Exemples : date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lExemple (pour le sous-système NETCONF) : <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |