Contexte
Les tentatives d'intrusion pour corruption ou vol de données ne doivent pas être sous-estimées dans le cadre de votre supervision de vos postes et serveurs Linux. Ce check a donc été conçu pour vous permettre de garder le maximum de vigilance sur les échecs de connexion sur votre parc.
Le check Connection Failed by SNMPv3 va vérifier vos logs dans un laps de temps donné ( 24h par défaut, modifiable dans les données ) et vous donner le nombre total de tentatives de connexions échouées, et un tableau comportant une ligne par trio IP-Host-Interface ( dans le cas d'une connexion réseau ) ou couple Host-Interface ( dans le cas d'une connexion locale sans adresse IP ).
- Vous obtiendrez alors le nombre de tentatives au cas par cas, la date de la première et de la dernière tentative, et les informations précédemment énoncées.
- Le tableau est classé par le nombre total de tentatives de connexion pour le trio IP-Host-Interface ou Host-Interface.
- Deux seuils configurables permettent de déterminer quand le check passe en ATTENTION, puis en CRITIQUE.
Paramétrage
Le check utilise une des lignes de commandes suivantes selon le modèle d'hôte utilisé :
$LINUX-BY-SNMP__SHINKEN__PLUGINSDIR$/check_linux_health_by_snmp_rust --check check_connection_failed
-H "$HOSTADDRESS$"
-p "$_HOSTLINUX-BY-SNMP__PORT$"
-t "$_HOSTLINUX-BY-SNMP__TIMEOUT$"
-w "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN$"
-c "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT$"
-i "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__INTERFACES$"
-n "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__TIME-LIMIT$"
--snmp_version "3"
--user "$_HOSTLINUX-BY-SNMP__V3-LOGIN$"
--level "noAuthNoPriv"
$LINUX-BY-SNMP__SHINKEN__PLUGINSDIR$/check_linux_health_by_snmp_rust --check check_connection_failed
-H "$HOSTADDRESS$"
-p "$_HOSTLINUX-BY-SNMP__PORT$"
-t "$_HOSTLINUX-BY-SNMP__TIMEOUT$"
-w "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN$"
-c "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT$"
-i "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__INTERFACES$"
-n "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__TIME-LIMIT$"
--snmp_version "3"
--user "$_HOSTLINUX-BY-SNMP__V3-LOGIN$"
--auth_password "$_HOSTLINUX-BY-SNMP__V3-PASSPHRASE-AUTH$"
--auth_protocol "$_HOSTLINUX-BY-SNMP__V3-PROTOCOL-AUTH$"
--level "authNoPriv"
$LINUX-BY-SNMP__SHINKEN__PLUGINSDIR$/check_linux_health_by_snmp_rust --check check_connection_failed
-H "$HOSTADDRESS$"
-p "$_HOSTLINUX-BY-SNMP__PORT$"
-t "$_HOSTLINUX-BY-SNMP__TIMEOUT$"
-w "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN$"
-c "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT$"
-i "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__INTERFACES$"
-n "$_HOSTLINUX-BY-SNMP__CONNECTION-FAILED__TIME-LIMIT$"
--snmp_version "3"
--user "$_HOSTLINUX-BY-SNMP__V3-LOGIN$"
--auth_password "$_HOSTLINUX-BY-SNMP__V3-PASSPHRASE-AUTH$"
--priv_passphrase "$_HOSTLINUX-BY-SNMP__V3-PASSPHRASE-PRIV$"
--auth_protocol "$_HOSTLINUX-BY-SNMP__V3-PROTOCOL-AUTH$"
--priv_protocol "$_HOSTLINUX-BY-SNMP__V3-PROTOCOL-PRIV$"
--level "authPriv"
Données utilisées provenant des modèles
Données communes pour les checks des modèles
l'Hôte ( Onglet Données ) l'Hôte ( Onglet Données ) --- l'Hôte ( Onglet Données ) Un nom d'utilisateur SNMPv3 défini sur votre linux : Pas de données communes supplémentaires pour ce type de connexion SNMPv3 l'Hôte ( Onglet Données ) l'Hôte ( Onglet Données ) l'Hôte ( Onglet Données ) l'Hôte ( Onglet Données ) l'Hôte ( Onglet Données ) Protocole utilisé pour chiffrer les données SNMPv3. l'Hôte ( Onglet Données ) Chaîne secrète utilisée pour chiffrer et déchiffrer les données SNMPv3.Commun à tout les modes de connexion
Nom Modifiable sur Unité Défaut Valeur par défaut à l'installation de Shinken Description LINUX-BY-SNMP__TIMEOUT
seconde 5 5 Temps maximal en seconde pour réussir une connexion SNMP avant que le check ne renvoi une erreur INCONNU ( La valeur doit être comprise entre 2 et 60 ). LINUX-BY-SNMP__PORT
161 161 Port pour la connexion SNMP. LINUX-BY-SNMP__V3-LOGIN
-- shinken shinken Mode de connexion noAuthNoPriv
Mode de connexion authNoPriv
Nom Modifiable sur Unité Défaut Valeur par défaut à l'installation Description LINUX-BY-SNMP__V3-PROTOCOL-AUTH
-- sha sha Protocole utilisé pour vérifier l'authenticité des messages SNMPv3 LINUX-BY-SNMP__V3-PASSPHRASE-AUTH
-- shinkenpassword shinkenpassword Chaîne secrète utilisée pour vérifier l'authenticité des messages SNMPv3 Mode de connexion authPriv
Nom Modifiable sur Unité Défaut Valeur par défaut à l'installation Description LINUX-BY-SNMP__V3-PROTOCOL-AUTH
-- sha sha Protocole utilisé pour vérifier l'authenticité des messages SNMPv3.
Valeurs possibles : sha, md5LINUX-BY-SNMP__V3-PASSPHRASE-AUTH
-- shinkenpassword shinkenpassword Chaîne secrète utilisée pour vérifier l'authenticité des messages SNMPv3. LINUX-BY-SNMP__V3-PROTOCOL-PRIV
-- aes aes
Valeurs possibles : aesLINUX-BY-SNMP__V3-PASSPHRASE-PRIV
-- shinkencryptionkey shinkencryptionkey
Données spécifiques pour ce check
| Nom | Modifiable sur | Unité | Valeur par défaut | Description |
|---|---|---|---|---|
LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN | l'Hôte ( Onglet Données ) | - | 5 | Définit le nombre de connexions échouées à partir duquel le check passe en ATTENTION. |
LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT | l'Hôte ( Onglet Données ) | - | 10 | Définit le nombre de connexions échouées à partir duquel le check passe en CRITIQUE. |
LINUX-BY-SNMP__CONNECTION-FAILED__TIME-LIMIT | l'Hôte ( Onglet Données ) | heures | 24 | Les X dernières heures de logs lus pour identifier les connexions échouées. |
LINUX-BY-SNMP__CONNECTION-FAILED__INTERFACES | l'Hôte ( Onglet Données ) | - | ssh,tty | Filtres des interfaces de connexion à prendre en compte dans le check, séparées par des virgules. Exemples :
La valeur ALL peut être utilisé afin de prendre en compte toutes les interfaces. |
Données DFE ( Duplicate Foreach )
Pas de données DFE pour ce check
Données utilisées provenant du check
Pas de données provenant du check pour ce modèle
Non modifiable ( Sauf Admin Shinken ) Chemin absolu contenant les sondes installés par Shinken Non modifiable ( Sauf Admin Shinken ) Dossier fournit par shinken Non modifiable ( Sauf Admin Shinken ) Dossier contenant les sondes Non modifiable ( Sauf Admin Shinken ) Chemin absolu du dossier contenant les sondes du pack linux-by-SNMP__shinken ( non modifiable )Données globales
Nom Modifiable sur Unité Défaut Valeur par défaut à l'installation Description USERPLUGINSDIR
-- /var/lib/shinken/libexec /var/lib/shinken/libexec LINUX-BY-SNMP__SHINKEN__VENDOR
-- shinken-additional-packs shinken-additional-packs LINUX-BY-SNMP__SHINKEN__PACKNAME
linux-by-SNMP__shinken linux-by-SNMP__shinken LINUX-BY-SNMP__SHINKEN__PLUGINSDIR
-- USERPLUGINSDIR/LINUX-BY-SNMP__SHINKEN__VENDOR/
LINUX-BY-SNMP__SHINKEN__PACKNAME
/var/lib/shinken-user/libexec/shinken-additional-packs/linux-by-SNMP__shinken
l'Hôte ( Onglet Général ) -- Adresse de l'hôtePropriétés de l'hôte
Nom Modifiable sur Unité Défaut Valeur par défaut Description HOSTADDRESS
Nom de l'hôte Nom de l'hôte
Résultat
Exemple
Interprétation des données
Statut
Il peut prendre 4 valeurs OK / CRITIQUE / ATTENTION / INCONNU .
Le statut va dépendre du retour de sonde et de la configuration spécifique du check pour les données suivantes :
- LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN
- LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT
Voici un tableau récapitulatif du statut attendu suivant le retour de sonde :
la colonne "Affichage des seuils" montre les paramètres utilisés et leur valeur définie sur l'équipement supervisé.
Situation | Statut | Exemple |
|---|---|---|
| CRITIQUE
|
|
| ATTENTION |
|
Résultat
Le résultat contient un message indiquant le nombre de tentatives de connexions échoués et le status de la sonde.
Résultat long
Le résultat long contient un tableau affichant l'ensemble des tentatives de connexions échoués par :
- IP
- nom d'utilisateur
- Nombre de tentatives
- Date de dernière connexion
- Date de première connexion
Métriques
Définition
| Nom de la métrique | Unité | Description | Seuil d'avertissement | Seuil Critique |
|---|---|---|---|---|
| total | -- | Nombre de connexions échouées | LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-WARN | LINUX-BY-SNMP__CONNECTION-FAILED__CONNECTION-CRIT |
Exemple
Erreurs et pré-requis
Erreurs de configuration de l'hôte à superviser ( spécifique à ce check )
Le check va exécuter à distance la commande 'lastb' mais qui n'est pas disponible sur votre machine.
Le check va exécuter à distance la commande 'lastb' qui nécessite les droits de lecture sur le fichier '/var/log/btmp'.
Cette erreur est très fréquemment généré par le module de sécurité SELinux. Vous devriez observer parmi le résultat les ligne suivante : RÉSOLUTION MANUELLE : Sur l'hôte distante, exécutez les commandes suivantes : Dans le fichier, remplissez et sauvegardez : Puis exécutez : Ces commandes vont compiler, empaqueter et installer le module SELinux créé. Sur Debian, un utilisateur est créé spécifiquement pour le serveur snmpd de l'hôte supervisé : "Debian-snmp". Il suffit de lui ajouter les droits nécessaires en l'ajoutant dans le groupe "utmp", qui a accès aux fichiers demandés. Le check demande une configuration supplémentaire afin d'exécuter des commandes via des requêtes SNMP. Sans cette configuration, l'erreur suivante sera générée :
Ouvrez le fichier de configuration SNMP. ( "/etc/snmp/shinken/linux-by-SNMP__shinken.conf" ou "/etc/snmp/snmpd.conf" selon votre configuration ). Rajoutez cette ligne si elle n'y est pas : Il faudra ensuite redémarrer le serveur SNMP ( snmpd )MONITORED HOST - BAD STATE – The command 'lastb' is not found. This check may not work with your Linux distribution.
MONITORED HOST - BAD STATE – Permission denied: SNMP daemon (snmpd) cannot access /var/log/btmp using 'lastb' command.
RHEL, centOS 7 et RHEL / Alma / Rocky 8 et 9
Vous pouvez vérifier si SELinux est activé avec la commande :sestatus
SELinux status: enabled
Current mode: enforcing
Si SELinux est bien activé et en mode 'enforcing' , vous pouvez alors rajouter des règles afin de permettre au service SNMP (snmpd) à accéder aux fichiers voulus.
Si un autre module de sécurité est installé sur votre hôte distante, il faudra le configurer de façon similaire.
RÉSOLUTION PAR SCRIPT :
Dans le script de configuration d'hôte livré dans le pack, une option permet de rajouter ces règles.
Déployez le dossier 'supervised-host' sur votre hôte (scp, ftp ..).
Sur l'hôte distante, exécutez :cd supervised-host
./configure-host.sh --configure-selinux
mkdir -p /etc/selinux/shinken
vim /etc/selinux/shinken/linux-by-SNMP__shinken.te
module linux-by-SNMP__shinken 1.0;
require {
type snmpd_t;
type sysctl_rpc_t;
type faillog_t;
class file { read open getattr };
class dir { search };
}
# Rules for check Stats NFS by SNMPvXXX
# Allow snmpd to read /proc/net/rpc/nfsd
allow snmpd_t sysctl_rpc_t:file { read open getattr };
# Autorisation pour accéder au dossier /proc/net/rpc
allow snmpd_t sysctl_rpc_t:dir { search };
# Rules for check Connection Failed by SNMPvXXX
# Allow snmpd to read /var/log/btmp
allow snmpd_t faillog_t:file { read open getattr };
checkmodule -M -m -o "/etc/selinux/shinken/linux-by-SNMP__shinken.mod" "/etc/selinux/shinken/linux-by-SNMP__shinken.te"
semodule_package -o "/etc/selinux/shinken/linux-by-SNMP__shinken.pp" -m "/etc/selinux/shinken/linux-by-SNMP__shinken.mod"
semodule -i "/etc/selinux/shinken/linux-by-SNMP__shinken.pp"
Debian 13
RÉSOLUTION MANUELLE :usermod -a -G utmp Debian-snmp
service snmpd restart
MONITORED HOST - BAD STATE – No connection logs data found.
vim /etc/snmp/shinken/linux-by-SNMP__shinken.conf
# vim /etc/snmp/snmpd.conf
extend shinken__linux-by-snmp__connection-failed__lastb /bin/sh -c "export LC_LANG=C && unset LANG && lastb -F -w"
service snmpd restart
# Ou bien en utilisant systemctl
systemctl restart snmpd
La connexion SNMP est configuré par défaut pour se couper si aucune réponse n'est perçu après cinq secondes ( paramétrable avec LINUX-BY-SNMP__TIMEOUT ).
Cette erreur peut intervenir lorsque : La résolution DNS de l'hôte a échoué.
La tentative de connexion à l'hôte a échoué à atteindre l'hôte.
Cette erreur peut être générée à cause d'une mauvaise configuration de pare-feu. La tentative de connexion à l'hôte a été refusé.
Cette erreur peut intervenir lorsque : L'authentification SNMP v3 a échoué.
Cette erreur peut intervenir lorsque : L'utilisateur SNMP v3 utilisé n'existe pas.
L'authentification SNMP v3 a échoué. La méthode d'authentification n'est pas authorisé.
Cette erreur peut intervenir lorsque : Les erreurs suivantes peuvent arriver sur la version SNMPv2 et SNMPv3. Deux erreurs sont possibles :
RESOLUTION : Il faut vérifier les deux étapes suivantes de la configuration :Erreurs de connexion ( communes à tous les checks )
UNKNOWN – Session error: timeout
UNKNOWN – Failed to create SNMP session. Got error: failed to lookup address information: Name or service not known
UNKNOWN – Session error: Socket receive error: host unreachable
UNKNOWN – Session error: Socket receive error: connection refused
UNKNOWN – Session error: Unexpected report: authentication failure
UNKNOWN – Session error: Unexpected report: unknown user name
UNKNOWN – Session error: Unexpected report: unsupported security level.
Erreurs de configuration de l'hôte à superviser ( communes à tous les checks )
MONITORED HOST - BAD STATE – No [ ... ] data found. This might be due to :
















