Je crois que ma machine Linux est raisonnablement protégée contre les connexions externes. Mais comme je suis un peu paranoïaque, je voudrais être alerté lorsqu'une tentative de connexion au serveur est effectuée, qu'elle soit réussie ou non.
En parcourant le site, je ne trouve aucun moyen à l’unisson de le faire. Autant que je sache, pour les tentatives infructueuses la vérification de journal a été recommandée , et pour les tentatives réussies la méthode sshrc ou (peut-être même davantage) pam_exec . J'aime les méthodes deux pierres en un lancer et je me demande si l'un de vous, les pros, sait s'il existe un moyen d'obtenir l'une de ces méthodes pour faire les deux? PAM en particulier semble être un endroit intelligent pour faire des choses, car il est après tout, d'après ce que je peux dire, le système d'authentification central de ma machine Ubuntu.
Aucun conseil?
Bien, vous pouvez utiliser cron
avec un petit script idiot pour vérifier /var/log/auth.log
toutes les 10 minutes. Si vous le configurez correctement, cron
enverra la sortie par courrier électronique où vous le souhaitez, nous avons donc besoin d'un script à exécuter:
#!/bin/bash
cat /var/log/auth.log | Perl -MDate::Parse -ne '
print if /login|ssh/ && /^(\S+\s+\d+\s+\d+:\d+:\d+)\s/ && str2time($1) > time-600'
Ceci est basé autour de cette réponse sur SO par F. Hauri .
Il suffit de rechercher des éléments avec login
ou ssh
in. Vous pouvez en ajouter ou en exclure simplement. Mais sur mon système, voici ce qu'il génère:
Aug 29 10:19:50 bert Sudo: oli : TTY=pts/10 ; PWD=/home/oli ; USER=root ; COMMAND=/bin/login
Aug 29 10:19:52 bert login[15544]: pam_unix(login:session): session opened for user oli by oli(uid=0)
Aug 29 10:19:54 bert login[15544]: pam_unix(login:session): session closed for user oli
Aug 29 10:20:11 bert sshd[15614]: Accepted publickey for oli from ::1 port 41663 ssh2: RSA XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aug 29 10:20:11 bert sshd[15614]: pam_unix(sshd:session): session opened for user oli by (uid=0)
Enregistrez ce script sous le nom /usr/local/sbin/checkauth
(et chmod u+x
it), puis vous pourrez ajouter une ligne de crontab racine avec Sudo crontab -e
:
*/10 * * * * /usr/local/sbin/checkauth
Collez également une ligne MAILTO="[email protected]"
en haut du fichier cron et (si un serveur de courrier est installé - installez postfix
sinon), vous obtiendrez des courriels de la sortie, ssi il n’ya pas de sortie.