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?
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
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
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é!
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