web-dev-qa-db-fra.com

Email sur tentative de connexion a échoué?

Je me demandais s'il était possible de le configurer de telle sorte qu'en cas d'échec de la connexion, Ubuntu m'enverrait un courrier électronique. Et bien sûr, si l'ordinateur n'est pas connecté à Internet au moment de la tentative, il devrait alors m'envoyer le courrier électronique une fois la connexion Internet rétablie, plutôt que de simplement tenter, sans succès, de ne jamais m'avertir de cette connexion. L’e-mail doit contenir la date et l’heure (day/month/year - hour:minute:second) de la tentative de connexion infructueuse, ainsi que (bien que facultatif - en d’autres termes, une réponse qui n’explique pas comment faire cela est acceptable, car cela peut être un gros problème. demander) n'importe quelle action entreprise, donc par exemple si je l'ai configuration pour verrouiller la personne pendant 5 minutes ou quelque chose du genre alors il devrait m'avertir du fait qu'il a pris cette action. J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18, est-ce possible?

3
user364819

Accéder aux journaux

Une personne avec des privilèges root peut utiliser la commande lastb pour voir toutes les tentatives de connexion infructueuses sur l'ordinateur. Vous trouverez également un fichier journal beaucoup plus détaillé qui enregistre les tentatives de connexion infructueuses au cours de la semaine à l'adresse /var/log/auth.log (pas de privilèges root) et les tentatives de connexion infructueuses seront listées comme ceci:

MONTH  DAY HH:MM:SS MACHINE lightdm: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=USER

Scénario

Vous pouvez écrire un script pour lire ces fichiers journaux et vous les envoyer par courrier électronique chaque fois qu'une nouvelle tentative de connexion incorrecte est consignée. Voici mon point de vue sur cela:

Tout d'abord, déclenchons l'exécution du script chaque fois que quelqu'un tente de se connecter et échoue. PAM conserve le /var/log/auth.log afin que nous puissions l'utiliser pour déclencher notre script. Ouvrez /etc/pam.d/common-auth:

Sudo vim /etc/pam.d/common-auth

Puis, juste avant la ligne:

auth    requisite                       pam_deny.so

Ajoute ça:

auth [default=ignore] pam_exec.so seteuid /usr/bin/report_badlogin

Et dans les lignes ci-dessus, modifiez toute occurrence de success=1 en success=2 et, le cas échéant, success=2 en success=3, etc.

Maintenant, créez le script spécifié:

Sudo vim /usr/bin/report_badlogin

Écrivez-y les commandes pour vous envoyer l'email du rapport:

#! /bin/sh
# report_badlogin

if grep -F -x -v -f /var/log/auth.log.old /var/log/auth.log | grep -n 'authentication failure' | mail -s "Bad login attempt notification" "[email protected]"; then
  cp -f /var/log/auth.log /var/log/auth.log.old
  chown YOURUSERNAME /var/log/auth.log.old
fi

exit 0

Brève explication : First grep récupère les modifications apportées au fichier journal en le soustrayant de la dernière copie enregistrée (.old). La seconde grep obtient uniquement la ligne qui compte, celle qui vous informe de la date, de l'heure et de l'utilisateur pour lequel la connexion a été tentée. mail vous envoie cette ligne sous forme d'e-mail avec le sujet Notification de tentative de connexion incorrecte . Si l'e-mail a été envoyé avec succès, auth.log.old est mis à jour, mais comme le script est exécuté en tant que root, nous rétablissons la propriété du fichier sur votre utilisateur.

Enregistrez-le et fermez-le (commande VIM :wq).

Assurez-vous que le script dispose d'une autorisation d'exécution:

Sudo chmod a+x /usr/bin/report_badlogin

Créez manuellement une première copie de auth.log:

cp /var/log/auth.log{,.old}

Traitement sans scénarios de connexion Internet

L’envahisseur potentiel peut déconnecter votre PC d’Internet pendant qu’il tente de deviner le mot de passe pour empêcher l’e-mail de notification, mais même dans ce cas, ses tentatives de connexion incorrectes sont toutes consignées sur auth.log.

Pour recevoir les notifications dès que possible, vous pouvez déclencher un script légèrement différent si vous vous connectez correctement à votre ordinateur connecté à Internet. Pour ce faire, utilisons le script ~/.bashrc, exécuté chaque fois que vous vous connectez:

vim ~/.bashrc

Ajoutez ces lignes à la fin du fichier:

# Pending bad login attempts notification
sh /usr/bin/report_pending

Enregistrez-le et quittez. Maintenant, créez ce script:

Sudo vim /usr/bin/report_pending

Et écrivez dedans ce qui suit:

#! /bin/sh
# report_pending

if grep -F -x -v -f /var/log/auth.log.old /var/log/auth.log | grep -n 'authentication failure'; then
    if grep -F -x -v -f /var/log/auth.log.old /var/log/auth.log | grep -n 'authentication failure' | mail -s "Bad login attempt notification" "[email protected]"; then
        cp -f /var/log/auth.log /var/log/auth.log.old
    fi
fi

exit 0

Brève explication : ce script a presque la même fonction que le premier, mais comme il est toujours exécuté à la connexion, nous vérifions d'abord l'existence de rapports en attente, sinon, chaque fois que vous vous connecterez, vous recevrez un email vide. Notez que ce script ne fonctionne pas avec les privilèges root. Il n’est donc pas nécessaire de modifier la propriété de auth.log.old après sa mise à jour.

Ajoutez maintenant une autorisation d'exécution au script:

Sudo chmod a+x /usr/bin/report_pending

Configurer les paramètres SMTP

Pour envoyer le courrier électronique, installez mailutils et sSMTP :

Sudo apt-get install mailutils ssmtp

Configurez sSMTP :

Sudo vim /etc/ssmtp/ssmtp.conf

Modifiez-le comme suit:

[email protected]    
mailhub=smtp.gmail.com:587    
AuthUser=yoursmtpemail    
AuthPass=PASSWORD    
UseSTARTTLS=YES    
[email protected]    
FromLineOverride=YES

Si vous n'utilisez pas GMail, il suffit de le changer pour votre fournisseur.

Je vous recommande de créer un email uniquement pour être utilisé en tant que serveur SMTP ([email protected]) et de ne pas utiliser votre email personnel, car comme vous pouvez le voir, vous stockez le mot de passe de cet email dans un fichier en texte brut (seul le root peut y accéder). ce fichier, mais ce n’est pas une bonne pratique de toute façon, même si je ne sais pas comment le faire autrement ...).

Dans le cas de GMail (je n'ai pas essayé avec d'autres fournisseurs), vous devez toujours autoriser l'accès aux applications moins sécurisées . Si vous essayez d’exécuter echo "Test mail" | mail -s "Testing" [email protected], vous devriez recevoir un courrier électronique dans [email protected] vous informant que l’accès à cet email a été refusé à une application ne répondant pas au niveau de sécurité de GMail et que si vous le souhaitez, vous pouvez En savoir plus sur l’autorisation d’accéder à des applications moins sécurisées, cliquez dessus et GMail vous présentera éventuellement l’option pour l’autoriser.

Terminé!

6
Rodrigo Martins

Ceci est probablement excessif, mais Pare-feu ConfigServer (CSF) et LFD peuvent aider à surveiller et à protéger vos machines.

L'envoi de notifications sur les tentatives de connexion infructueuses n'est qu'une de ses nombreuses fonctionnalités. Cela devrait fonctionner immédiatement, en envoyant un courrier électronique de notification à root.

Pour recevoir du courrier sur un autre ordinateur, vous aurez besoin d’un programme capable d’envoyer du courrier. Installer le paquetage mail-transport-agent peut être suffisant, mais j’installe généralement un serveur exim4, qui peut mettre la livraison en attente si vous êtes hors ligne (jusqu’à trois jours, je crois).

CSF ne vient pas comme un paquet Ubuntu, vous devrez donc suivre leurs instructions d'installation :

cd /usr/src
rm -fv csf.tgz
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
1
joeytwiddle