Bei einem erfolgreichen SSH-Login auf meinem RaspberryPi möchte ich eine Benachrichtigung per E-Mail erhalten, so dass ich unautorisierte Logins frühzeitig erkennen und Gegenmaßnahmen einleiten kann.

Mit folgenden einfachen Schritten lässt sich eine einfache Login-Überwachung und -Alarmierung mit Linux-Boardmitteln (Named Pipes) umsetzen:

1. In /etc/ssh/sshd_config dafür sorge tragen, dass eine korrekte Login-Facility eingetragen ist.

2. Anschließen den Syslog-Daemon anpassen, so dass die Daten in eine Named Pipe geschrieben werden. Daher passend zur sshd_config folgenden Eintrag zur rsyslog.conf hinzufügen und den Syslog-Daemon mit sudo service rsyslog restart neu starten:

3. Anschließen das Skript zur Überwachung erstellen und mit  chmod 755 /usr/local/sbin/sshwatcher.sh  ausführbar machen. Beim erstellen des Scriptes darauf achten, dass die Konfigurationsparameter am Anfang des Scriptes entsprechend angepasst werden. Mit dem Whitelisting-Parameter können IP-Adressen bzw. DDNS-Namen hinterlegt werden von denen aus ein Login ohne Benachrichtigung aus möglich sein soll.

4. Nun kann das Script geprüft werden. Dazu das Script einfach als Root starten und einloggen. Wenn alles korrekt funktioniert, sollte unter /var/log/syslog entsprechende Meldungen beim einloggen auftauchen. Wenn die IP-Adresse nicht in der Whitelist ist und die Zugangsdaten für den E-Mail-Account korrekt gesetzt wurden, sollte auch eine Mail verschickt werden.

Aufgrund eines Fehler funktioniert die SSL/TLS-verschlüsselte Übertragung der E-Mail mit dem Programm sendEmail leider nicht korrekt. Bei mir hat es gereicht die Datei /usr/share/perl5/IO/Socket/SSL.pm wie im Script beschrieben anzupassen. Alertnativ kann die Option -o tls=no bei sendEmail verwendet werden. Dann werden allerdings die Zugangsdaten im Klartext übertragen.

5. Abschließend muss noch dafür Sorge getragen werden, dass das Script beim Systemstart ausgeführt wird. Dazu folgenden Eintrag in der /etc/inittab ergänzen und danach den inittab mit sudo init q  neu laden: