Ich habe gerne einen Überblick darüber wann eine SSH Verbindung auf einen Server aufgebaut wird. Deshalb lasse ich mir bei jeder neuen Verbindung eine E-Mail-Benachrichtigung schicken. Unter Ubuntu Linux 16.04 und anderen auf Debian basierten Linux Distributionen wird PAM (Pluggable Authentication Modules) zum Authentifizieren von Benutzern verwendet. Dies kann relativ einfach so konfiguriert werden, dass bei einer neuen SSH Verbindung ein bestimmtes Skript aufgerufen wird, welches dann eine E-Mail-Benachrichtigung versendet. In diesem Beitrag beschreibe ich, wie PAM so konfiguriert werden und ein Skript zum Versenden der E-Mail-Benachrichtigungen aussehen kann.
Installieren
Damit die Benachrichtigung funktioniert muss ein Tool zum Senden von E-Mails auf der Kommandozeile installiert sein. Unter Ubuntu Linux 16.04 liefert das Paket mailutils ein solches Tool. Falls das Paket noch nicht installiert ist kann es mit nachfolgendem Befehl installiert werden. Der Befehl sollte auch bei anderen auf Debian basierenden Linux Distributionen wie Raspbian funktionieren.
$ sudo apt install mailutils
Konfigurieren
Nun muss noch ein Skript erstellt werden, welches eine E-Mail versendet. Ich nutze nachfolgendes Skript und speichere es als /etc/ssh/login_notification.sh ab. In dem Skript muss <receiver> durch die E-Mail-Adresse des Empfängers der Benachrichtigung ersetzt werden.
#!/bin/sh if [ "$PAM_TYPE" != "open_session" ] then exit 0 else { echo "User: $PAM_USER" echo "Remote Host: $PAM_RHOST" echo "Service: $PAM_SERVICE" echo "TTY: $PAM_TTY" echo "Date: `date`" echo "Server: `uname -a`" } | mail -s "$PAM_SERVICE login on `hostname` for account $PAM_USER" <receiver> fi exit 0
Das Skript muss jetzt noch ausführbar gemacht werden.
$ sudo chmod 755 /etc/ssh/login_notification.sh
Abschließend muss PAM noch so konfiguriert werden, dass bei einem erfolgreichen Login das gerade angelegte Skript ausgeführt wird. Dazu muss die Datei /etc/pam.d/sshd angepasst werden. Es muss folgendes ganz am Ende der Datei hinzugefügt werden.
[...] # Send notification mail on login session optional pam_exec.so seteuid /etc/ssh/login_notification.sh
Nun wird bei jedem erfolgreichen Login eine E-Mail von root@host mit dem Titel „sshd login on <host> for account <user>“ und nachfolgendem Inhalt an den im Skript angegebenen Empfänger gesendet.
User: <Benutzername>
Remote Host: <IP des Clienst>
Service: sshd
TTY: ssh
Date: <Datum>
Server: Linux <host> 5.X.X-XX-generic #XX-Ubuntu SMP Xxx Xxx XX XX:XX:XX UTC XXXX x86_64 x86_64 x86_64 GNU/Linux
Hammer! Simple und sauber gelöst. Viele Lösungen arbeiten über bash_rc oder ähnliches. Diese Lösung gefällt mir deutlich besser!