Aktionen

Email nach SSH Login auf Linux-Server

Aus znilwiki

Ich nutze den SSh Zugang zu meinem Webserver ausschliesslich allein - wenn sich also jemand anders einloggt ist ALARM angesagt!

Von meinem Kollegen Timo F. habe ich die Idee eine Email nach dem Login versenden zu lassen. Dann ist es nämlich schon zu spät um eine Meldung zu verhindern :-)
Die eine geht auf jeden Fall noch raus!



1 Changelog

  • 31.07.2014 erste Version
  • 22.03.2015 Nachbesserung sendemail Aufruf + Voraussetzungen




2 Voraussetzungen

Das Programm sendemail muss installiert sein:

apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl perl




3 Email Benachrichtigung per sshrc

Meldet euch per SSH an und macht folgendes:

sudo -i
touch /etc/ssh/sshrc
nano /etc/ssh/sshrc

Im Normalfall gibt es die Datei noch nicht und ist ergo leer. Fügt folgende Zeilen ein:

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
name=`nslookup $ip | grep "name =" | cut -d " " -f 3`

logger -t ssh-login $USER login from $ip - $name
echo "Benutzer -> $USER <- hat sich von IP: $ip / Hostname: $name per SSH angemeldet" | sendemail -q -o tls=no -u "SSH Login: $USER" -f "SSH Spy <sshspy@znil.net>" -t "Bernhard Linz <bernhard@znil.de>" -s localhost &


Erklärung:

  • In Zeile 1 ermitteln wir die IP von welcher der SSH Login kommt
  • In Zeile 2 ermitteln wir den DNS-Namen zur IP
  • In Zeile 4 schreiben wir das ganze ins SYSLOG, siehe /var/log/syslog
  • In Zeile 5 senden wir eine Email mit
    • Betreff "SSH Login: $USER" -> $USER wird durch den Login Namen ersetzt, z.B. root
    • Text "Benutzer -> $USER <- hat sich von IP: $ip / Hostname: $name per SSH angemeldet"
    • Absender Email-Adresse: "SSH Spy <sshspy@znil.net>"
    • Empfänger Email-Adresse: "Bernhard Linz <bernhard@znil.de>"
    • Über Mailserver: localhost
    • & startet den Task/das Senden im Hintergrund

Hinweis: In Zeile 1 und 2 müssen die Befehle hinter dem = unbedingt in diesen Hochkommas von mitte-nach-rechts-unten stehen, zu erreichen mit Shift und der Taste links neben Löschen / Backspace, Rechts neben dem ß
Nun speichern und nano verlassen - und FINGER WEG! Erst lesen!
Wenn Ihr die Nachricht verschlüsselt senden wollt so entfernt das -o tls=no aus der letzten Zeile



4 Testen

Lasst eure erste SSH Sitzung in der Ihr gerade die Einstellungen gemacht habt in Ruhe und eröffnet eine 2. SSH Sitzung!
Wenn etwas schiefgeht habt Ihr so noch eine Türe offen um es rückgängig zu machen!

Sobald Ihr euch zum 2. mal angemeldet hat sollte folgendes passieren:
1. ein Eintrag im SYSLOG, kontrollieren wir wie folgt:

cat /var/log/syslog | grep ssh-login

Ausgabe:

Apr 23 22:43:59 h2108591 ssh-login: root login from 87.167.192.162 - p57A7C0A2.dip0.t-ipconnect.de.



2. Ihr bekommt eine Email wie folgt:

Betreff: SSH Login: root
Benutzer -> root <- hat sich von IP: 87.167.192.162 / Hostname: p57A7C0A2.dip0.t-ipconnect.de. per SSH angemeldet




5 Fehler?

Deshalb sollt Ihr die erste Sitzung offen lassen - falls Ihr euch nicht mehr per SSH anmelden könnt ist nun die Zeit der Fehlersuche gekommen!



6 Kommentare


Anonymer Benutzer #1

21 Monaten zuvor
Punktzahl 0++

echo "Benutzer -> $USER <- hat sich von IP: $ip / Hostname: $name per SSH angemeldet" | sendemail -q -u "SSH Login: $USER" -f yourusername@gmail.com -t yourusername@gmail.com -s smtp.gmail.com:587 -o -xu yourusername -xp yourpassword

So ging es bei mir. Die andere Variante hat keine Mails verschickt
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung