Licence CC BY

Prévenir par email d'une connexion SSH

Utilisation de PAM, sendmail et ssmtp

Dernière mise à jour :
Auteur :
Catégorie :
Temps de lecture estimé : 6 minutes

Ceci est la deuxième version de : Prévenir d’une connexion SSH

Si vous souhaitez recevoir un mail dès que vous avez une connexion, voici un script qui vous sera bien utile. Avant de copier ce code assurez vous que vous pouvez envoyer des mails et que vous avez configuré correctement sSMTP et sendmail.

Vous pouvez tester votre configuration avec le code ci-dessous, vous devriez recevoir un email à votre@email sous une dizaine de secondes :

    printf %b "    __|__   \n -----o----- \n$(date -R)" | sendmail votre@email

Si ça ne fonctionne pas, je vous invite à lire la partie explicative pour configurer ssmtp et sendmail puis à vérifier tail -f /var/log/mail.log.

Ajout de la notification au démarrage avec PAM

Tout se passe en privilège root.

Insérer une entrée dans pam.d/sshd

Dans le fichier /etc/pam.d/sshd rajoutez la ligne :

session    optional     pam_exec.so /usr/bin/firewall-ssh.sh

Vous n’avez pas besoin de reload, le changement se fait automatiquement.

Créer firewall-ssh.sh

Donc on crée le fichier : /usr/bin/firewall-ssh.sh avec les permissions suivantes -rwxr-xr-x soit :

chmod 755 firewall-ssh.sh
ls -l firewall-ssh.sh
-rwxr-xr-x 1 root root 887 févr.  2 22:26 firewall-ssh.sh

Pour le contenu vous aurez besoin de changer votre@email. Voici le contenu du fichier :

#!/bin/sh

dest=votre@email

#################################################################################
############################# Alerte connexion SSH. #############################
#################################################################################

user=${PAM_USER:-$USER}
vpshost=$(hostname -f)

if [ ! "$PAM_TYPE" = "open_session" ]; then
  heure=$(/bin/date +"%T %A %d %B %Y")
  printf "Subject: $PAM_TYPE for $user@$vpshost\n\n$heure" | /usr/sbin/sendmail $dest
  exit 0
fi

printf %b "Subject: Notification de connexion SSH à votre VPS
From: $user <$user@$vpshost>
Date: $(/bin/date -R)
To: $dest

Bonjour,

Un utilisateur vient de se connecter en SSH à votre VPS.

\t Utilisateur          : $user@$vpshost
\t Ip de connexion      : $PAM_RHOST
\t Heure de connexion   : $(/bin/date +"%T %A %d %B %Y")

Cordialement,

Firewall SSH - Approuvé par un avion" | /usr/sbin/sendmail -f "$user@$vpshost" $dest

SSMTP : Envoyer des emails

Commençons par mettre à jour toutes les applications : apt-get update && apt-get upgrade.

Pour pouvoir envoyer des emails installez SSMTP avec : apt-get install ssmtp. Si vous cherchez sur un moteur de recherche, vous trouverez tout de suite les informations appropriées à votre adresse email par exemple : ssmtp gmail.

Modifions la configuration vim /etc/ssmtp/ssmtp.conf.

Par exemple, pour activer le TLS, utilisez UseSTARTTLS et UseTLS, vous devriez obtenir :

AuthUser=a@gmail.com
AuthPass=airbus
mailhub=smtp.gmail.com:587

UseTLS=YES
UseSTARTTLS=YES
FromLineOverride=YES

Pour un email chez OVH, on remplace la première ligne avec mailhub=ssl0.ovh.net:465 (comme indiqué sur la documentation.

N’oubliez pas de relancer sendmail avec : service sendmail reload pour qu’il prenne en compte votre nouvelle configuration. ;)

Vous pouvez tester votre configuration avec le code ci-dessous, vous devriez recevoir un email à votre@email sous une dizaine de secondes :

    printf %b "    __|__   \n -----o----- \n$(date -R)" | sendmail votre@email

En cas de soucis, vous pouvez avoir besoin de modifier hostname (voir la commande hostname) avec l’ip ou nom de domaine approprié.

En cas d’erreur

Allez vérifier vos logs : tail -f /var/log/mail.log. ;)

Impossible d’envoyer à une adresse gmail avec sendmail

Selon cette article vous devez ajouter à la fin du fichier /etc/mail/sendmail.mc :

CLIENT_OPTIONS(`Family=inet6,Addr=::ffff:127.0.0.1')dnl

Puis faire la commande (et répondre Y à toutes les questions) :

sendmailconfig

Voila. ;)

NB : Si vous utilisez votre propre nom de domaine, pensez à vérifier votre DNS et votre entrée SPF pour prévenir d’erreur silencieuse (présente dans tail -f /var/log/mail.log).

1 commentaire

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte