Wie erhalte ich eine Benachrichtigung, wenn sich andere Benutzer bei "meinem" System anmelden?

9

Ich kenne den whoBefehl, der mir alle angemeldeten Benutzer anzeigt. Aber ich möchte irgendwie informiert werden, wenn sich jemand außer mir in mein System einloggt. Irgendein Applet? Wäre auch schön, wenn das Applet die Anzahl der angemeldeten Benutzer anzeigt, dh eine Anmeldeshell und eine hergestellte SSH-Verbindung.

Mathematik
quelle
Übrigens: Kann jemand eine Unterbrechung der Versuche kommentieren? Wird dann noch /etc/profile.d ausgeführt? Ich denke, es hängt vom Einbruch ab, also könnte dies bei Brute-Force-SSH-Angriffen durch eine Eskalation der Rechte bei laufenden Diensten nicht der Fall sein. Ahh, es scheint, dass die Benutzerüberwachung keine leichte Aufgabe ist.
Mathe

Antworten:

10

Für den Teil der Benachrichtigung, wenn sich jemand in Ihrem System anmeldet, können Sie versuchen, ein kleines Skript in ein /etc/profile.dSkript einzufügen . Mit notify -send (Teil des libnotify-bin-Pakets) können Sie Folgendes versuchen:

/etc/profile.d/notify_log.sh

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

Jedes Mal, wenn sich jemand in Ihrem System anmeldet, werden Sie benachrichtigt.

EDIT: Also, es funktioniert nicht gut :( Wenn Sie einen Mailserver auf Ihrem Computer konfiguriert haben, können Sie stattdessen den Mail- Befehl verwenden notify-send.

Laut dem Beitrag hier wäre die bessere Lösung ein pam_exec- Skript.

Cédric Julien
quelle
Gute Idee, aber keine Notwendigkeit, es ausführbar zu machen, und keine Notwendigkeit, einen Schebang zu haben, da Dateien in /etc/profile.d/bezogen werden. Nur Login-Shells (virtuelle Terminals und SSH-Login) und einige GUI-Logins führen die Profilinitialisierung aus.
Enzotib
@enzotib: danke für die Tipps, ich habe meine Antwort korrigiert :)
Cédric Julien
Ok, ich habe es versucht, aber bisher ohne Glück. Der Grund ist, dass ein Benutzer einen anderen Benutzer nicht einfach benachrichtigen kann. Daher müssen einige Umgebungsvariablen festgelegt werden, siehe: g-loaded.eu/2007/11/18/… . Bisher habe ich eine ausführbare Datei, die das Zeug macht, aber nicht, wenn ich mich anmelde!?! Wenn ich mich kurz source /etc/profile.d/notify_log.shnach der Anmeldung über ssh anmelde, wird die Benachrichtigung gesendet. Ich denke, es wird nach dem Login nicht richtig ausgeführt. Ich habe /var/log/auth.log ohne Glück beobachtet. Irgendeine Hilfe?
Mathe
Ich habe den Grund gefunden: Ich benutze ZSH und / etc / zsh / zprofile ist leer. Es sollte / etc / profile geben, was wiederum /etc/profile.d/*.sh geben sollte, aber überhaupt nichts tut! > - (.. Ich werde dies dann explizit beschaffen und alle anderen installierten Shells überprüfen, da ich nicht weiß, welche Login-Shells von allen LDAP-Benutzern verwendet werden. Wie auch immer, danke.
Mathe
@ Brubelsabs: oups, ich habe meine Antwort mit anderen Lösungen bearbeitet
Cédric Julien
2

Dazu erstellen wir eine Datei /etc/profile.d/notify.shmit folgendem Inhalt:

#!/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"

Angenommen, mailx ist installiert.

Antonio
quelle
Ja, manchmal verpassen Sie möglicherweise eine Desktop-Benachrichtigung, aber die E-Mail bleibt normalerweise erhalten.
Mathe
@Antonio Müssen Sie das Skript zu crontab hinzufügen? Es scheint nicht zu funktionieren.
Kokedude