Mein vServer hat zurzeit den SSH Port offen. Dieser befindet sich zwar nicht mehr standardmäßig auf dem Port 22, um sogenannte Bots größtenteils vom Server zu halten, allerdings wollte ich bei jedem Connect informiert werden, damit ich im Falle einer Kompromittierung direkt reagieren kann.
Der Port kann in der /etc/ssh/sshd_config angepasst werden.
Die eigentliche Mail Benachrichtigung, in der es in diesem Beitrag auch geht, muss in pam.d eingerichtet werden. Eine, wie ich finde gute Seite, die pam.d beschreibt, ist
https://web.archive.org/web/20180303034326/http://www.tuxradar.com/content/how-pam-works
Kommen wir weiter zu den Änderungen der Datei.
Öffnen wir die ssh Datei mit einem beliebigen Editor, in meinem Fall ist es der vim Editor.
vi /etc/pam.d/sshd
Dort muss folgende Zeile eingetragen werden.
session optional pam_exec.so seteuid /etc/ssh/login-notify.sh
Am Anfang sollte der Flag “optional” benutzt werden, damit bei falscher Konfiguration eine Verbindung trotzdem noch möglich ist. Als letztes Argument wird das Script übergeben.
Das Script zum Versenden der Mail sieht schließlich wie folgt aus.
#!/bin/bash if [ "$PAM_TYPE" != "close_session" ]; then body="<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'> <html> <head><title>SSH Mail</title> </head> <body> <table> <tr> <th>Tag</th> <th>Value</th> </tr> <tr> <td>service</td> <td>SSH</td> </tr> <tr> <td>direction</td> <td>connected</td> </tr> <tr> <td>Timestamp</td> <td>`date '+%T %F'` </tr> </table> <p></p> <p>`env`</p> </body> </html>" echo $body | /usr/bin/mail -a "From: ssh@server.com" -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "SSH Client Connection established" mail@dns.de >> /dev/null fi exit 0
Verbindung sich nun jemand per SSH auf dem Server, wird direkt eine Mail generiert und versendet.
Der Mail Body sieht dann genau so aus, wobei RHOST die Remote Addresse enthält.
Ein Gedanke zu „SSH Email bei Client Verbindung“