Cette page a pour but de décrire la mise en place d'une configuration minimale nécessaire pour un Linux supervisé par le pack linux_by_ssh
Pour l'exécution correcte des commandes du pack linux_by_ssh, vous aurez besoin d'une connexion SSH.
Quelques informations au préalable sont nécessaires pour la bonne compréhension de cette partie.
Nous conseillons l'utilisation d'un utilisateur spécifique ( pour le service de supervision ) ainsi que l'utilisation d'une connexion via clé SSH, afin d'éviter l'utilisation du super utilisateur root qui n'est pas requis par les checks.
Si votre utilisateur de supervision n'est pas déjà créé sur votre linux à superviser, depuis un terminal de la machine supervisée "linux-1" ( en root ), il faut créer un nouvel utilisateur local avec mot de passe.
[root@linux-1 ~]# useradd -m -r -s /bin/bash user-service-shinken [FACULTATIF] : [root@linux-1 ~]# passwd user-service-shinken |
| Notez que la mise en place d'un mot de passe pour cet utilisateur n'est pas obligatoire, mais il vous faudra copier la clé SSH via la méthode manuelle expliquée plus bas, car la commande automatique ssh-copy-id requiert un mot de passe pour l'utilisateur du système de destination. |
Par défaut, l'utilisateur "shinken" sur le serveur Poller possède une clef RSA : "/var/lib/shinken/.ssh/id_rsa".
Si vous générez de nouvelles clefs SSH, voici la liste non exhaustive des clefs supportées ou non :
Clefs supportées |
Les clefs SSH suivantes sont supportées :
Les ssh-dss ( DSA ) ne sont pas supportés par la sonde pour des raisons de sécurités. Elles sont dépréciées par OpenSSH depuis Janvier 2024, et ne sont officiellement plus supportés depuis Janvier 2025. Article sur le sujet : https://lwn.net/Articles/958048/ |
Copie de la clé SSH de votre utilisateur de supervision "shinken" depuis le serveur Poller "shinken-poller" ( pour cet exemple ), vers le serveur supervisé "linux-1" pour l'utilisateur "user-service-shinken" ( dans cet exemple, IP : 192.168.1.19 )
Soit via la méthode "automatique" via la commande ssh-copy-id en se connectant au préalable via l'utilisateur shinken sur le ou les serveurs pollers :
[root@shinken-poller ~]# su - shinken [shinken@shinken-poller ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub user-service-shinken@linux-1 The authenticity of host '192.168.1.19 (192.168.1.19)' can't be established. RSA key fingerprint is 00:ff:ee:dd:cc:bb:aa:d6:d3:79:1d:f6:93:47:80:27. Are you sure you want to continue connecting (yes/no)? yes user-service-shinken@linux-1's password: XXXXXXXXXXX Now try logging into the machine, with "ssh 'user-service-shinken@linux-1'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. |
Soit via une commande SSH depuis le serveur Poller, il s'agit d'ajouter la clé publique au fichier "authorized_keys" du serveur supervisé ( ici linux-1 ) :
cat /var/lib/shinken/.ssh/id_rsa.pub | ssh root@linux-1 "cat >> /home/user-service-shinken/.ssh/authorized_keys" |
Ici la connexion se fait via l'utilisateur root du serveur linux-1 ( mais vous pouvez utiliser votre propre utilisateur ), le but étant de rajouter, en une commande SSH, la clé de l'utilisateur shinken du Poller /var/lib/shinken/.ssh/id_rsa.pub à la fin du fichier /home/user-service-shinken/.ssh/authorized_keys du serveur supervisé.
Soit via méthode "manuelle" via rajout de la clé dans le fichier authorized_keys
Récupérez la clé publique de l'utilisateur qui va établir la connexion SSH, et la copier
[root@shinken-poller ~]# su - shinken [-bash-4.1]$ cat .ssh/id_rsa.pub -> copiez la clé |
Connectez-vous sur le serveur linux supervisé avec votre utilisateur de supervision et collez cette clé dans le fichier "authorized_keys" de l'utilisateur de supervision :
[root@linux-1 ~]# su - user-service-shinken [-bash-4.1]$ vi .ssh/authorized_keys -> collez la clé |
Test de connexion au serveur "linux-1" en tant qu'utilisateur "user-service-shinken" via l'utilisateur du Poller ( shinken ) :
[root@shinken-poller ~]# su - shinken [shinken@shinken-poller ~]# ssh -i .ssh/id_rsa user-service-shinken@linux-1 |
La connexion doit s'établir avec succès.
Si la connexion échoue, les logs du service "sshd" peuvent donner des indications précieuses sur la cause de l'échec. La méthode de consultation de ces informations dépend de la distribution utilisée et de son ancienneté.
Ci-dessous, la liste non exhaustive des méthodes connues pour consulter les logs, sur les distributions officiellement supportées par Shinken :
Pour Redhat / Almalinux / Rockylinux / Centos :
la commande journactl permet d'afficher les logs du service :
journalctl -xf -u sshd |
Le fichier de log "secure" contient les informations concernant les dernières connexions :
cat /var/log/secure |
Pour Debian :
la commande journactl permet d'afficher les logs du service (le nom de service utilisé n'est pas le même que pour les autres distributions) :
journalctl -xf -u ssh |
Ces logs permettent, entre autres, de savoir :
Exemple :
Dans l'exemple ci-dessous, les droits n'ont pas été correctement appliqués au répertoire de Shinken contenant les clés SSH. La connexion n'a pas pu s'établir
[root@alpachouette-shinken01 shinken]# journalctl -xf -u sshd -- Logs begin at Wed 2025-09-03 14:44:35 CEST. -- Sep 04 15:32:21 shinken-server sshd[1372868]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh Sep 04 15:32:21 shinken-server sshd[1372868]: Connection closed by authenticating user shinken 172.17.0.37 port 48152 [preauth] Sep 04 15:32:25 shinken-server sshd[1372968]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh Sep 04 15:32:25 shinken-server sshd[1372968]: Connection closed by authenticating user shinken 172.17.0.37 port 48160 [preauth] Sep 04 15:32:25 shinken-server sshd[1372971]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh |
Dans chaque hôte héritant du modèle d'hôte "linux_by_ssh", "linux_by_ssh_advanced" ou "linux_by_ssh_extra",
| Donnée | Description | Valeur par défaut | Valeur par défaut à l'installation de shinken |
|---|---|---|---|
| SSH_KEY | Chemin vers la clé générée sur votre serveur hébergeant le démon Poller | $SSH_KEY$ | ~/.ssh/id_rsa |
| SSH_KEY_PASSPHRASE | Phrase secrète utilisé pour déverrouiller la clé privée de l'utilisateur (si celle-ci est protégée par une passphrase). La clé privée déverrouillée est ensuite utilisée pour authentifier l'utilisateur. | $SSH_KEY_PASSPHRASE$ | '' |
| SSH_PORT | Port de connexion SSH | $SSH_PORT$ | 22 |
| SSH_USER | Utilisateur pour la connexion SSH | $SSH_USER$ | shinken |
|
|
Par exemple, voici le paramétrage d'une connexion via Utilisateur/Mot de passe :
|
Certains checks requièrent un accès spécifique à des fichiers. Pour ce faire, nous vous mettons à disposition une série de commandes.
Cette série de commandes ne peut être effectuée qu'en ayant les droits root. Donc en étant connecté au compte root ou en ayant fait la commande "su" au préalable. Il faut aussi vérifier que le groupe 'user-service-shinken' existe avec la commande :
Si vide, créer le groupe et y ajouter l'utilisateur :
|
Commandes à éxecuter :
sed -i -e "s/btmp 0600/btmp 0640/g" /usr/lib/tmpfiles.d/var.conf chmod 640 /var/log/btmp usermod -aG utmp user-service-shinken |
1. La commande sed -i -e "s/btmp 0600/btmp 0640/g" /usr/lib/tmpfiles.d/var.conf modifie les droits par défaut du fichier /var/log/btmp dans le fichier de configuration des fichiers temporaires.
2. La commande chmod 640 /var/log/btmp applique immédiatement les droits nécessaires sur le fichier.
3. La commande usermod -aG utmp user-service-shinken ajoute l'utilisateur user-service-shinken au groupe utmp, qui a la responsabilité des logs système.
Commandes à éxecuter :
sed -i -e "s/create 0600/create 0640/g" /etc/logrotate.conf chmod 640 /etc/ssh/sshd_config chown root:user-service-shinken /etc/ssh/sshd_config |
1. La commande sed -i -e "s/create 0600/create 0640/g" /etc/logrotate.conf modifie les droits par défaut dans le fichier de configuration de logrotate.
2. La commande chmod 640 /etc/ssh/sshd_config applique immédiatement les droits nécessaires.
3. La commande chown root:user-service-shinken /etc/ssh/sshd_config modifie le groupe du fichier.
Commandes à éxecuter :
shinken_tmp_dirname="shinken" mkdir --parents /tmp/$shinken_tmp_dirname chown root:user-service-shinken /tmp/$shinken_tmp_dirname chmod g+rwx /tmp/$shinken_tmp_dirname |
1. La commande mkdir --parents /tmp/$shinken_tmp_dirname crée un récursivement un répertoire.
2. La commande chown root:user-service-shinken /tmp/shinken modifie le groupe du dossier /tmp/shinken.
3. La commande chmod g+rwx /tmp/shinken applique immédiatement les droits nécessaires au dossier /tmp/shinken pour le groupe user-service-shinken.