Warnung: Laut den Kommentaren funktioniert dies nicht, wenn der Benutzer eine Datei mit dem Namen erstellt ~/.ssh/rc
. *
Ändern oder erstellen Sie /etc/ssh/sshrc
mit den folgenden Inhalten:
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
logger -t ssh-wrapper $USER login from $ip
echo "User $USER just logged in from $ip" | sendemail -q -u "SSH Login" -f "Originator <[email protected]>" -t "Your Name <[email protected]>" -s smtp.server.com &
Dies benachrichtigt Sie effektiv per E-Mail, wenn sich jemand über SSH anmeldet, und die Anmeldung wird im Syslog protokolliert.
Hinweis: Sie benötigen das sendemail
Paket ( sudo apt-get install sendemail
), damit die E-Mail-Benachrichtigung funktioniert.
Hinweis: Funktioniert mit der Portweiterleitung, nicht jedoch mit der Option -N.
ssh -N
nur mit Portweiterleitung.~/.ssh/rc
sodass sie aus Sicherheitsgründen völlig unbrauchbar ist. Die Antwort von @adosaiguas bezüglichpam_exec
ist die richtige.~/.ssh/rc
Datei nicht ändern oder löschen können . Die Verwendung einer systemweiten Methode, die auf basiert,pam
ist nur zuverlässiger und sicherer, da sie nurroot
mit ihr zu tun haben kann. Die Antwort lautet also: Diesshrd
Methode funktioniert in Ordnung für Einzelplatzsysteme, aberpam
zuverlässig für alle Systeme.Da die
sshrc
Methode nicht funktioniert, wenn der Benutzer eine eigene~/.ssh/rc
Datei hat, erkläre ich, wie dies mitpam_exec
@adosaiguas vorgeschlagen wird. Das Gute daran ist, dass dies auch leicht an anderessh
Anmeldetypen als (wie lokale Anmeldungen oder sogar alle Anmeldungen) angepasst werden kann, indem Sie sich in eine andere Datei einhängen/etc/pam.d/
.Zunächst müssen Sie in der Lage sein, E-Mails über die Befehlszeile zu senden. Es gibt noch andere Fragen dazu. Auf einem Mailserver ist es wahrscheinlich am einfachsten zu installieren
mailx
(was wahrscheinlich sowieso schon installiert ist).Dann benötigen Sie eine ausführbare Skriptdatei
login-notify.sh
(/etc/ssh/
zum Beispiel) mit folgendem Inhalt. Sie können die Variablen ändern, um den Betreff und den Inhalt der E-Mail-Benachrichtigung zu ändern. Vergiss nicht, es auszuführenchmod +x login-notify.sh
, um es ausführbar zu machen.Sobald Sie das haben, können Sie die folgende Zeile hinzufügen
/etc/pam.d/sshd
:Zu Testzwecken ist das Modul als enthalten
optional
, sodass Sie sich auch dann anmelden können, wenn die Ausführung fehlschlägt. Nachdem Sie sich vergewissert , dass es funktioniert, können Sie ändernoptional
zurequired
. Dann ist die Anmeldung erst möglich, wenn die Ausführung Ihres Hook-Skripts erfolgreich war (wenn Sie dies wünschen).Für diejenigen unter Ihnen, die eine Erklärung darüber benötigen, was PAM ist und wie es funktioniert, ist hier eine sehr gute .
quelle
/etc/ssh/login-notify.sh failed: exit code 13
direkt nach dem Login :(UsePAM
aufyes
Ihrer sshd_config.unconfined_u:object_r:bin_t:s0
. Dann habe ichchmod +x /bin/login-notify.sh
und es funktioniert.Wir haben Monit verwendet , um Prozesse auf unseren Linux-Boxen zu überwachen. Über ssh kann monit auch per E- Mail auf erfolgreiche Logins hinweisen. Unsere Monit- Konfiguration sieht so aus
Hinweis: Die Mailserver-Konfiguration, das E-Mail-Format usw. sollten in der
monitrc
Datei festgelegt werdenUpdate: Schrieb einen detaillierteren Blog-Beitrag dazu
quelle
Geben Sie Folgendes ein
/etc/profile
:Wie das Skript funktioniert
/etc/profile
wird bei jedem Login ausgeführt (für bash shell Benutzer). Die if-Anweisung gibt nur dann true zurück, wenn sich der Benutzer über ssh angemeldet hat, wodurch der eingerückte Codeblock ausgeführt wird.Als nächstes erstellen wir den Text der Nachricht:
$(date)
wird durch die Ausgabe desdate
Befehls ersetzt${USER}
wird durch den Anmeldenamen des Benutzers ersetzt$(hostname -f)
wird durch den vollständigen Hostnamen des Systems ersetzt, bei dem Sie angemeldet sindIn der zweiten
TEXT
Zeile wird die IP-Adresse des Systems angegeben, von dem aus sich dieser Benutzer anmeldet. Schließlich wird der generierte Text in einer E-Mail an Ihre Adresse gesendet.Zusammenfassung Linux zeichnet standardmäßig alle Systemanmeldungen, ob per ssh oder nicht, in den Systemprotokolldateien auf. Manchmal kann jedoch - insbesondere bei einem System, auf das selten per ssh zugegriffen wird - eine schnelle und fehlerhafte Benachrichtigung hilfreich sein.
quelle
Bei dieser anderen Frage haben Sie wahrscheinlich das, wonach Sie suchen. Grundsätzlich können Sie dem Mail-Befehl im Skript einen Aufruf hinzufügen , der ausgeführt wird, wenn sich ein Benutzer über ssh: /etc/pam.d/sshd anmeldet
quelle
Ich habe einige der hervorragenden Antworten aus diesem Thread genommen und etwas gemacht, das mehr oder weniger kopier- und klebbar ist. Es verwendet Mailgun, um die E-Mails zu senden, damit Sie keine Probleme mit der Einrichtung von STMP haben. Sie benötigen lediglich einen Mailgun-API-Schlüssel und eine sendende Domain.
Bei der SSH-Anmeldung sendet das Skript Details zur Anmeldung (Benutzer, Hostname, IP-Adresse und alle aktuellen Umgebungsvariablen) an eine E-Mail-Adresse. Es ist einfach, andere Parameter hinzuzufügen, die Sie senden möchten, indem Sie die
message
Variable anpassen .quelle
Mailgun-Anpassung von @Fritz beantwortet
Nach dem Posten bemerkte ich, dass @pacharanero auch über Mailgun schreibt, aber ich verstehe nicht, was sie mit dig machen, also werde ich auch meine Lösung posten.
Wenn Sie sich auf einer VM ohne SMTP befinden, müssen Sie möglicherweise Mailgun, Sendgrid oder ähnliches verwenden. Das hat bei mir in Google Cloud funktioniert.
Ein Risiko dieses Ansatzes besteht darin, dass ein Angreifer Ihre ausgehenden E-Mail-Anmeldeinformationen erhalten kann, wenn er
sudo su
das Skript findet, oder Sie lassen das Skript zum Senden von E-Mails lesbar. mailgun hat eine IP-Whitelist, die Sie einrichten sollten, aber das ist natürlich für diesen speziellen Anwendungsfall unvollkommen.Dieses Skript sollte mit Mailgun funktionieren, nachdem Sie
mydomain.com
zu Ihrer eigentlichen Domain gewechselt haben . Sie können das Skript an/root/login-alert.sh
einem anderen Ort speichern .Danach kannst du @Fritz answer folgen, um Folgendes zu ändern
/etc/pam.d/sshd
:Ich stelle fest, dass dies ohne Leseberechtigungen für ankommende Benutzer (
chmod 700 /root/login-alert.sh
) funktioniert, sodass ankommende Benutzer keinen Lesezugriff auf das Skript benötigen.quelle
Dieses Skript
/etc/ssh/sshrc
sendet eine E-Mail und fügt dem Systemlogger ein Protokoll hinzu. Es wird ein Unterschied zwischen Ihrem persönlichen Subnetz und dem World Wide Web (erforderlichsudo apt-get install mailutils
) gemacht (Sie können es also deaktivieren, wenn Sie möchten ).quelle
Ich verwende Swatchdog aus dem Swatch- Paket, um in /var/log/auth.log nach Zeilen zu suchen , die den Ausdruck " fail " (ohne Berücksichtigung der Groß- und Kleinschreibung) enthalten . Ich habe es so eingerichtet, dass es als einfacher systemd-Dienst ausgeführt wird.
Erstelle eine Konfigurationsdatei /etc/swatch/swatch-auth-log.conf mit dem Besitzer root, Erlaubnis 644 -
Das "/ fail / i" ist ein regulärer Ausdruck, wobei das "i" angibt, dass zwischen Groß- und Kleinschreibung unterschieden wird. (Mein sendmail ist ein Skript, das alles per Mailgun an eine feste Adresse sendet , daher spielt die Adresse keine Rolle).
Erstellen Sie eine systemd- Servicedatei /etc/systemd/system/swatch-auth-log.service mit dem Besitzer root und der Berechtigung 644 -
Aktivieren, starten und zeigen Sie dann den Status des Dienstes an.
Ein Beispiel für einen erfolgreichen Statusbericht -
Der Dienst wird beim Booten automatisch gestartet und von systemd überwacht .
Diskussion
Ursprünglich habe ich eine Pam- Lösung ähnlich der oben genannten verwendet, aber in /etc/pam.d/common-auth nicht sshd . Das war ssh, sudo und logins zu fangen. Aber nach einem Update funktionierten alle meine Passwörter nicht mehr, selbst nachdem ich die Passwörter im Rettungsmodus geändert hatte. Irgendwann habe ich /etc/pam.d/common-auth wieder auf das Original zurückgesetzt und die Passwörter haben wieder funktioniert. Hier finden Sie eine Beschreibung der Stack Exchange UNIX- und Linux-Karte
Ich entschied, dass es sicherer wäre, schwer zu verstehende Sicherheitseinstellungen nicht anzufassen. Und alles ist sowieso in den Protokolldateien.
quelle
Ich habe gerade die @ SirCharlo-Antwort geändert
Dies funktioniert auf den Servern 14.04, 16.04 und Centos 6.5.x, die ich eingerichtet habe. Ich bin mir ziemlich sicher, dass Sie sicherstellen müssen, dass mta konfiguriert ist. Nächster Schritt twilio alerts
quelle