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
).