Notifications Telegram pour les connexions SSH
Un arrière goût de 2FA ?
Il n’y aucune sécurisation comme dans le 2FA, juste la partie “alerte” mais en même temps je ne voudrais pas confier les clés (enfin la moitié, il faut quand même un user+pass valide pour rentrer) d’un serveur à un service tiers sur lequel je n’ai aucun contrôle (ni sur sa propre sécurité, ni sur ses intentions envers moi : j’aurais l’air fin avec un serveur bloqué parce qu’une entreprise a supprimé/bloqué mon compte)
Je vais donc (en ce qui concerne Telegram) me contenter d’une notification instantanée à chaque connexion réussie au serveur, c’est très simple à mettre en oeuvre et peut-être que ça m’aidera un jour (ou pas)
Le script Telegram
On va commencer par créer un script bash pour gérer l’envoi de messages dans notre chat Telegram par notre bot Telegram
#!/bin/bash
CHAT_ID="l'identifiant du chat où envoyer la notif"
BOT_TOKEN="le token du bot"
if [ "$1" == "-h" ]; then
echo "Utilisation: `basename $0` \"message\""
exit 0
fi
if [ -z "$1" ]
then
echo "Il manque le texte à envoyer comme argument"
exit 0
fi
if [ "$#" -ne 1 ]; then
echo "Un seul argument possible ! Utilisez des guillements"
exit 0
fi
curl -s --data "text=$1" --data "chat_id=$CHAT_ID" 'https://api.telegram.org/bot'$BOT_TOKEN'/sendMessage' > /dev/null
A sauvegarder dans /usr/bin/telegram-send-chan-server
ou ce que vous voulez avec un chmod +x
et un chown root:root
pour rester constant avec tout ce qui est dans ce répertoire.
Le script peut être testé avec telegram-send-chan-server "Hello World"
pour vérifier que l’ID et le token sont corrects (et c’est une bonne base pour tout type de notification)
Le script de notification
Tous les scripts dans /etc/profile.d/
sont exécutés au lancement d’une session bash et donc à chaque connexion SSH qui finit dans un shell
#!/bin/bash
login_ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
login_date="$(date +"%e %b %Y, %a %X")"
login_name="$(whoami)"
message="Nouvelle connexion au serveur MACHIN BIDULE !"$'\n\n'"login : $login_name"$'\n'"Adresse IP : $login_ip"$'\n'"Date : $login_date"
telegram-send "$message"
A sauvegarder dans /etc/profile.d/telegram-notification.sh
par exemple. Pas besoin de chmod +x
ici pour une raison que j’ignore mais quand même un chown root:root
pour rester constant aussi.
Et voilà c’est tout !