Comment obtenir une notification lorsque d'autres utilisateurs se connectent à «mon» système?

9

Je connais la whocommande me montrant tous les utilisateurs connectés. Mais je veux en quelque sorte être informé lorsque quelqu'un, sauf moi, se connecte à mon système. Une applet? Ce serait également bien si l'applet affiche le nombre d'utilisateurs distincts connectés, ce qui signifie avoir un shell de connexion et une connexion ssh établie.

math
la source
BTW: quelqu'un peut-il commenter les tentatives d'interruption. Est-ce que /etc/profile.d est toujours exécuté? Je suppose que cela dépend de l'effraction, donc pour les attaques ssh par force brute, cela pourrait tenir, par une escalade des droits des services en cours d'exécution, ce ne serait pas le cas. Ahh il semble que la surveillance des utilisateurs ne soit pas une tâche facile.
math

Réponses:

10

Pour la partie de la notification lorsque quelqu'un se connecte à votre système, vous pouvez essayer de mettre un petit script dans un /etc/profile.dscript. En utilisant notify-send (qui fait partie du paquet libnotify-bin), vous pouvez essayer ceci:

/etc/profile.d/notify_log.sh

notify-send -t 3000 "User logged in" `whoami`

puis, chaque fois que quelqu'un se connectera à votre système, vous serez averti.

EDIT: Donc, cela ne fonctionne pas bien :( Si vous avez configuré un serveur de messagerie sur votre machine, vous pouvez utiliser la commande mail à la place de notify-send.

Mais selon l' article ici , la meilleure solution serait un script pam_exec .

Cédric Julien
la source
Bonne idée, mais pas besoin de le rendre exécutable et pas besoin d'avoir un shebang, car les fichiers en /etc/profile.d/sont originaires. Seuls les shells de connexion (terminaux virtuels et connexion ssh) et certaines connexions GUI exécutent l'initialisation du profil.
enzotib
@enzotib: merci pour les conseils, j'ai corrigé ma réponse :)
Cédric Julien
Ok, j'ai essayé mais sans succès jusqu'à présent. La raison en est qu'un utilisateur ne peut pas en aviser un autre facilement. Par conséquent, certaines variables d'environnement doivent être définies, voir: g-loaded.eu/2007/11/18/… . Jusqu'à présent, j'ai un exécutable qui fait le truc mais pas quand je me connecte!?! Si je viens de me source /etc/profile.d/notify_log.shconnecter via ssh, la notification est envoyée. Je suppose qu'il n'est pas exécuté correctement après la connexion. J'ai observé /var/log/auth.log sans chance. De l'aide?
math
J'ai trouvé la raison: j'utilise ZSH et / etc / zsh / zprofile est vide, il devrait être censé source / etc / profile qui à son tour devrait source /etc/profile.d/*.sh, mais ne fait rien du tout! > - (.. Je vais alors m'approvisionner explicitement et vérifier tous les autres shells installés, car je ne sais pas quels shells de connexion sont utilisés par tous les utilisateurs LDAP .. Quoi qu'il en soit, merci.
math
@brubelsabs: oups, j'ai édité ma réponse avec d'autres solutions
Cédric Julien
2

Nous le faisons en créant un fichier /etc/profile.d/notify.shavec le contenu suivant:

#!/bin/sh

sender="[email protected]"
recepient="[email protected]"
subject="Privileged Account logon used"
message="`env`"
    echo "$message" | mail -s "$subject" -r "$sender" -Smtp=mail.example.com "$recepient"

En supposant que mailx est installé.

Antonio
la source
Oui, vous pouvez parfois manquer une notification sur le bureau, mais le courrier reste généralement.
math
@Antonio Devez-vous ajouter le script à crontab? Cela ne semble pas fonctionner.
cokedude