Recevoir des notifications Discord à chaque connexion SSH sur votre serveur

Si vous gérez un serveur Linux et que vous souhaitez être alerté immédiatement lorsqu’un utilisateur se connecte via SSH, ce guide est fait pour vous. Nous allons voir comment envoyer des notifications directement sur Discord grâce à un script simple et efficace.

Pourquoi recevoir des notifications SSH sur Discord ?

Recevoir des notifications pour chaque connexion SSH présente plusieurs avantages :

  • Sécurité renforcée : vous êtes alerté en temps réel des connexions sur votre serveur.
  • Suivi des utilisateurs : vous identifiez facilement quel utilisateur s’est connecté et depuis quelle IP.
  • Ping personnalisé : vous pouvez notifier un utilisateur Discord spécifique si nécessaire.

1) Créer un webhook Discord

Pour que Discord reçoive les notifications :

  1. Ouvrez Discord et accédez à votre serveur.
  2. Cliquez sur le nom du serveur → Paramètres du serveurIntégrationsWebhooks.
  3. Créez un nouveau webhook ou utilisez un webhook existant.
  4. Copiez l’URL du webhook : elle sera utilisée dans le script pour envoyer les notifications.

2) Récupérer l’ID d’un utilisateur Discord (optionnel)

Si vous souhaitez notifier un utilisateur spécifique :

  1. Activez le Mode développeur dans Discord (Paramètres → Apparence → Mode développeur).
  2. Cliquez droit sur le pseudo de l’utilisateur → Copier l’identifiant.
  3. Collez cet ID dans la variable $USER_PING du script.

Si vous ne souhaitez pas de ping, laissez cette variable vide.

3) Installer le script sur votre serveur

Créez le fichier :

sudo nano /usr/local/bin/ssh-notify.sh

Collez ce script (en remplaçant l’URL du webhook et l’ID utilisateur) :

#!/bin/bash

WEBHOOK_URL="VOTRE_WEBHOOK_ICI"
SITE="mataucarre.fr"
USER_PING="ID_UTILISATEUR"

if [ "$PAM_TYPE" != "open_session" ]; then
    exit 0
fi

USER=$PAM_USER
IP=$PAM_RHOST
DATE=$(date '+%Y-%m-%d %H:%M:%S')

if [ -n "$USER_PING" ]; then
    PING="<@$USER_PING>"
else
    PING=""
fi

MESSAGE="# :bell: Nouvelle connexion SSH sur le serveur [$SITE] détectée !
**Utilisateur** : $USER
**IP** : $IP
**Date** : $DATE
$PING"

curl -H "Content-Type: application/json" \
     -X POST \
     -d "{\"content\": \"$MESSAGE\"}" \
     $WEBHOOK_URL

Rendez le script exécutable :

sudo chmod +x /usr/local/bin/ssh-notify.sh

4) Configurer PAM pour SSH

Éditez le fichier PAM :

sudo nano /etc/pam.d/sshd

Ajoutez à la fin :

session optional pam_exec.so /usr/local/bin/ssh-notify.sh

5) Tester et sécuriser

  1. Connectez-vous via SSH depuis un autre terminal ou une autre machine.
  2. Vérifiez Discord : vous devriez recevoir le message avec l’utilisateur, l’IP, la date et éventuellement le ping.

Pour sécuriser le script :

sudo chown root:root /usr/local/bin/ssh-notify.sh
sudo chmod 700 /usr/local/bin/ssh-notify.sh

6) Résultat

Personnalisation

  • Modifiez la variable $SITE pour changer le nom affiché dans Discord.
  • Laissez $USER_PING vide si vous ne souhaitez pas notifier un utilisateur.

Le projet complet et le script sont disponibles sur GitHub : SSH Discord Notify

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *