| Scroll Ignore | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
| Panel | ||||||||||||||||
| ||||||||||||||||
| style | none
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 script check a donc été conçu pour vous permettre de garder le maximum de vigilance sur les échecs de connexion sur votre parc.
DescriptionLe check " Connections Failed SSH " 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 ) et 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
Mise à jour d'OpenSSH
Sur CentOS 6.6, ce script peut ne pas fonctionner correctement avec les versions d'OpenSSH antérieure à la 6 (dû à une impossibilité de modifier les droits des fichiers et donc de faire fonctionner le script hors root lors des accès à la commande "lastb" à distance).
Nous vous conseillons donc de mettre à jour votre version d'OpenSSH, ce qui garantira également une meilleure sécurité sur votre environnement. Attention, par précaution, assurez vous d'avoir une session console au serveur sur lequel vous souhaitez réaliser la mise à jour.
En général
Sur la plupart des distributions encore à jour les versions d'OpenSSH 6 ou supérieures se trouvent déjà dans les dépôts officiels, il vous suffit donc de réaliser votre commande de mise à jour, quelques exemples :
| Info | ||
|---|---|---|
| ||
Les commandes peuvent s'étendre à d'autres distributions non répertoriées |
Centos 7 et Redhat et AlmaLinux
| Code Block |
|---|
yum update openssh |
Debian et Ubuntu
| Code Block |
|---|
apt-get upgrade openssh |
ArchLinux et autres
| Code Block |
|---|
pacman -Syu openssh |
Sur Centos 6.6
Voici les différentes commandes : (un exemple ici avec la version OpenSSH 7.6 Officielle, mais vous pouvez prendre la dernière version disponible sur le site officiel d'OpenSSH)
Installation de quelques paquets
| Code Block |
|---|
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel |
Téléchargement
| Code Block |
|---|
wget https://mirrors.ircam.fr/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz |
Extractions et copies
| Code Block |
|---|
tar xvf openssh-7.6p1.tar.gz
mkdir -p /root/rpmbuild/{SOURCES,SPECS}
cp ./openssh-7.6p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
cp openssh-7.6p1.tar.gz /root/rpmbuild/SOURCES/ |
Paramétrage Specs
| Code Block |
|---|
cd /root/rpmbuild/SPECS/
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.spec
sed -i -e "s/BuildPreReq/BuildRequires/g" openssh.spec |
Build du RPM et installation
| Code Block |
|---|
rpmbuild -bb openssh.spec
cd /root/rpmbuild/RPMS/x86_64/
rpm -Uvh *.rpm |
Redémarrez votre service sshd :
| Code Block |
|---|
service sshd restart |
Vous pouvez vérifier votre version avec :
| Code Block |
|---|
rpm -qa | grep openssh |
Si vous avez quelconques problèmes vous pouvez revenir sur l'ancienne version avec :
| Code Block |
|---|
yum downgrade openssh-server |
| Info |
|---|
Si vous utilisez l'utilisateur "shinken" (par défaut) avec une connexion via clé RSA, il se peut que suite à la mise à jour, vos scripts affichent un message de problème d'authentification ([ERROR] Connection failed 'Authentification failed'), sur le serveur sur lequel vous avez mis à jour SSH, veuillez réinitialiser l'utilisateur en lui supprimant son mot de passe (par défaut) avec la commande : passwd -d shinken |
Exemple
Exemples de résultat
| Panel |
|---|
| Panel |
|---|
| Info | ||
|---|---|---|
| ||
Si vous souhaitez archiver ponctuellement les logs de tentatives de connexion, vous pouvez utiliser la commande : logrotate -f /etc/logrotate.conf Si vous purger les logs de tentatives de connexion, vous pouvez utiliser la commande : cat /dev/null > /var/log/btmp |
Cas spécifiques (Retour UNKNOWN)
- Si le check a le statut "Unknown" avec le message :
Appliquez la ligne de commande ou le script advanced_pack_read_rights.py disponible dans la page Modèle Linux avancé. (droits spécifiques à des fichiers)
- Si vous recevez ce message :
Référez vous à la section de Mise à jour d'OpenSSH
- permettent de déterminer quand le check passe en ATTENTION, puis en CRITIQUE.
| Panel |
|---|
Paramétrage
Le check utilise la ligne de commande suivante :
| Code Block | ||||
|---|---|---|---|---|
| ||||
$SHINKEN_LINUXBYSSH_PLUGINSDIR$/check_linux_health_by_ssh_rust --check check_connection_failed -H "$HOSTADDRESS$" -u "$_HOSTSSH_USER$" -p "$_HOSTSSH_PORT$" -i "$_HOSTSSH_KEY$" -P "$_HOSTSSH_KEY_PASSPHRASE$" -w "$_HOSTCONNECTION_WARNING$" -c "$_HOSTCONNECTION_CRITICAL$" -l "$_HOSTCONNECTION_INTERFACE$" -t "$_HOSTCONNECTION_TIME_LIMIT$" |
Données utilisées provenant du modèle
Données communes pour les checks des modèles
Authentification
| Excerpt Include | ||||||
|---|---|---|---|---|---|---|
|
Données spécifiques pour ce check
| Donnée | Modifiable sur | Unité | Valeur par défaut | Description | ||
|---|---|---|---|---|---|---|
| l'Hôte ( Onglet Données ) | -- | 5 | Définit le nombre de connexions échouées à partir duquel le check passe en ATTENTION. | ||
| l'Hôte ( Onglet Données ) | -- | 10 | Définit le nombre de connexions échouées à partir duquel le check passe en CRITIQUE. | ||
| l'Hôte ( Onglet Données ) | heures | 24 | Les X dernières heures de logs lus, pour identifier les connexions échouées. | ||
| l'Hôte ( Onglet Données ) | ssh,tty | Interface de connexion à prendre en compte dans le check, séparées par des virgules. Les interfaces supportées sont : pts,tty,ssh,all |
Données utilisées provenant du check
Pas de données spécifiques pour ce check
Résultat
Exemple
| Panel |
|---|
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 :
- CONNECTION_WARNING
- CONNECTION_CRITICAL
Voici un tableau récapitulatif du statut attendu suivant le retour de sonde :
| Info | ||
|---|---|---|
Affichage des Seuils
|
Situation | Statut | Exemple |
|---|---|---|
| CRITIQUE | |
| ATTENTION | |
Métriques
| Nom de la métrique | Description |
|---|---|
| total | Nombre de connexions échouées |
Mise en place ( pré-requis pour ce check )
Certains checks requièrent un accès spécifique à des fichiers.
- Pour ce faire, nous vous mettons à disposition une série de commandes.
- Ces commandes permettront au groupe de l'utilisateur choisi pour votre supervision Shinken d'avoir un accès ( en lecture seule ) au fichier /var/log/btmp, fichier comportant vos logs de connexions échouées.
- Sans cet accès, la sonde ne fonctionnera pas et vous renverra le statut INCONNU.
| Info | ||
|---|---|---|
| ||
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. |
Commandes à éxecuter :
| Code Block | ||||
|---|---|---|---|---|
| ||||
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.
- Cette modification garantit que, même après un redémarrage, les permissions de btmp resteront correctes (lecture pour le groupe).
- Note : Si le fichier /usr/lib/tmpfiles.d/var.conf n'existe pas sur votre système, une erreur "no such file or directory" peut apparaître. Cela n'affecte en rien l'application de la commande.
2. La commande chmod 640 /var/log/btmp applique immédiatement les droits nécessaires sur le fichier.
- Les utilisateurs du groupe pourront lire les journaux des tentatives de connexion échouées.
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.
- Cela permet à l'utilisateur de supervision de lire le fichier /var/log/btmp.
| title | Remarques |
|---|
Pareillement un tableau de plus de 50 lignes sera tronqué à ce stade, et ce afin d'empêcher des soucis de visibilité.
Si le check n'aboutit pas, vous pouvez purger les logs de tentatives de connexion avec la commande : cat /dev/null > /var/log/btmp (si besoin, faites un backup de /var/log/btmp au préalable)
Données et métriques
Données
5







