Email bei Reboot oder SSH Login

  • Guten Morgen,
    ich habe mal ein bissl mit dem Versand von Emails bei besonderen Ereignissen gespielt, und will hier mal kurz erklären, wie man Emails beim Neustarten des Servers, bzw beim Login eines Users via SSH abschickt.


    Email bei SSH Login
    Dafür kann man folgendes Script nutzen:

    Shell-Script
    1. #!/bin/bash
    2. echo "Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)"
    3. echo "Benutzer: $USER"
    4. echo
    5. finger

    finger zeigt dabei alle angemeldeten Shells an. Will man dies nicht, kann man den Befehl aber auch weglassen.
    Nun trägt man folgendes in die .bashrc des Benutzers ein:

    Code
    1. login_email_content.sh | mailx -s "SSH Login - my hostname" serverxy@example.com

    So wird jedes mal wenn sich jemand mit dem Benutzer einloggt eine Email mit dem Betreff "SSH Login - my hostname" versendet. Der Pfad zum Shellscript muss natürlich angepasst werden.


    Hier wird vorrausgesetzt, dass sich nur ein Benutzer via SSH anmelden darf. Können sich mehrere anmelden, kann man das auch in /etc/bash.bashrc und/oder in /etc/profile schreiben.


    Email bei neustart
    Auch hier verwendet man wieder ein Shellscript um Daten zu sammeln. Was da drin steht, ist wieder jedem selbst überlassen.
    Nun kann man im Cron Daemon einfach folgenden Eintrag machen:

    Code
    1. @reboot root reboot_email_content.sh | mailx -s "Server neustart - my hostname" server@example.com

    Hierbei muss man aufpassen, wo man den Eintrag macht. In der /etc/crontab kann der Eintrag so übernommen werden. Nutzt man allerdings crontab -e muss man den Benutzernamen nach @reboot entfernen.


    Hope it helps. ;)

  • Danke für die Anleitung.

    Ich hab nur ein Problem mit dem Mailversand auf meinem Root Server.


    echo "Hello World" | mailx -s "Testmail" meinemail@gmail.com


    ...liefert mir per "cat /var/mail/username" folgendes:


    Code
    1. A message that you sent could not be delivered to one or more of its
    2. recipients. This is a permanent error. The following address(es) failed:
    3. meinemail@gmail.com
    4. Mailing to remote domains not supported


    Unter rDNS in der netcup ccp Konsole ist folgendes eingetragen:

    Code
    1. v2202xxxxxxxxxxxxxxxx.ultrasrv.de


    /etc/hostname beinhaltet folgendes:

    Code
    1. v2202xxxxxxxxxxxxxxxx


    Code
    1. /etc/hosts beinhaltet folgendes:
    2. 127.0.0.1       localhost
    3. 127.0.1.1       v2202xxxxxxxxxxxxxxxx.ultrasrv.de v2202xxxxxxxxxxxxxxxx
    4. # The following lines are desirable for IPv6 capable hosts
    5. ::1     localhost ip6-localhost ip6-loopback
    6. ff02::1 ip6-allnodes
    7. ff02::2 ip6-allrouters
    8. xxx.xxx.xxx.xxx  v2202xxxxxxxxxxxxxxxx.ultrasrv.de v2202xxxxxxxxxxxxxxxx


    Reporting-MTA: dns; v2202xxxxxxxxxxxxxxxx.ultrasrv.de


    Was habe ich falsch eingestellt? Kann mir hier jemand weiterhelfen? Danke!

  • EInen Mailserver hast du aber schon komplett installiert und konfiguriert?

    Danke für deine Antwort.

    Bin mir nicht sicher, ob ich einen einrichten möchte. Das bietet wieder einer Angriffsfläch, oder? Ich würde lieber den SMTP von Google einrichten. Aber das scheint nicht geklappt zu haben.


    Jetzt versuche ich es mit dieser Anleitung:

    https://kb.novaordis.com/index…_via_a_Google_SMTP_Server


    Aber bei den Zertifikaten hänge ich noch ein wenig.

  • Uiuiui.... 10 Jahre ist der Beitrag schon alt....


    Heute wäre ich mit irgendwelchen Scripten in der bashrc oder der profile vorsichtig. Wenn man das nicht richtig macht, werden die auch ausgeführt, wenn irgendwelche automatisierten Prozesse wie zum Beispiel Cron Jobs laufen.


    Lieber einen Log Watcher benutzen, wie zum Beispiel auditd.


    https://superuser.com/question…re-is-something-to-report

  • Eine Zeitlang hatte ich das auch so gehandhabt wie im Eingangsbeitrag beschrieben.

    Leider hatte mir diese (zugegebenermaßen sehr einfach zur realisierende Maßnahme) zwei Nachteile.

    Zum einen wurde jedesmal auch eine eMail verschickt, wenn ich in meinem ssh-client ein neues Shellfenster aufgemacht habe (und das mache ich häufig :S), zum anderen wird bei dieser Methode keine eMail verschickt, wenn sich jemand nur per sftp verbindet (z.B. über WinSTP)

    Erstes war nervig, letzteres wollte ich auch mitbekommen.


    Ich lasse jetzt swatchdog die auth.log überwachen und mir eine eMail schicken, bei einem erfolgreichen ssh-Login


    EDIT:

    Sieh an, perryflynn hat auch schon was dazu geschrieben, während ich noch getippselt habe. :)

  • Hier mal, wie ich das mit swatchdog unter Ubuntu 20.04 gelöst habe:


    Swatchdog installieren:

    $ sudo apt install swatch


    config-file fürs ssh-Login in /root erstellen :

    /root/auth_watch_config :

    Code
    1. watchfor /sshd.*Accepted.*/
    2.    mail address=meinemail@meinedomain,subject="SSH login on Schubidu"


    Service erstellen, damit das auch nach reboot weiterläuft:

    /etc/systemd/system/swatch-login.service :

    Code
    1. [Unit]
    2. Description=swatchdog - monitor ssh passwort logins
    3. [Service]
    4. ExecStart=/usr/bin/swatchdog -c /root/auth_watch_config -t /var/log/auth.log
    5. [Install]
    6. WantedBy=multi-user.target


    Service starten:

    Code
    1. $ sudo systemctl daemon-reload
    2. $ sudo systemctl enable swatch-login
    3. $ sudo systemctl start swatch-login


    Man kann swatchdog dann natürlich auch noch andere Dinge überwachen lassen. :)

  • Gefällt mir sehr. Ich staune auch wie einfach das einzurichten und dabei wesentlich flexibler und unabhängig im Logging ist.

    Werde ich zukünftig wohl genauso einsetzen und meine Telegram-Pushbenachrichtigungen dahingehend anpassen.


    Thx für den Denkanstoß! :)

  • Danke für euren Input.

    Hatte mich da an diese Anleitung (https://www.thomas-krenn.com/d…rung_eines_Debian_Servers) etwas gehalten.

    Freue mich aber über Tipps, wie es besser geht :-).

    Hab jetzt zwar 2h benötigt, um msmtp zum Laufen zu bekommen, aber das werden wahrscheinlich klassische Anfängerfehler gewesen sein, und, dass ich bei Google zuerst ein App Password generieren musste. :pinch:


    Jetzt sehe ich mir mal Swatchdog von aRaphael an :)

    Danke euch nochmals!

  • Hab jetzt versucht, deine Anleitung nachzubauen.

    Aber irgendwie bekomme ich keine Mail.

    Das Mail Statement sieht bei mir etwas anders aus: echo "Hier steht Text" | mail -s "SSH Login" mailadresse@gmail.com

    Führe ich das normal in der Shell aus, erhalte ich die Mail.


    In /etc/systemd/system/ findet sich swatch-login.service mit folgenden Rechten:

    -rw-r--r-- 1 root root 183 Oct 16 10:48 swatch-login.service


    Folgendes hab ich ausgeführt

    Code
    1. sudo systemctl daemon-reload
    2. sudo systemctl enable swatch-login
    3. sudo systemctl start swatch-login

    pgrep findet mir aber swatch-login nicht.


    Kann es sein, dass der Service nicht läuft? Wo ist mein Fehler? Danke für deine Hilfe!

  • Das Mail Statement sieht bei mir etwas anders aus: echo "Hier steht Text" | mail -s "SSH Login" mailadresse@gmail.com

    Das Kannst du aber so nicht in die config-Datei von swatchdog einfügen.

    Das muss schon den entsprechenden Syntax haben, damit swatchdog damit was anfangen kann. Das ist ja kein Shellbefehl, der da drin steht.

    Kann es sein, dass der Service nicht läuft?

    Was sagt

    sudo service swatch-login status

    ?

  • Das Kannst du aber so nicht in die config-Datei von swatchdog einfügen.

    Das muss schon den entsprechenden Syntax haben, damit swatchdog damit was anfangen kann. Das ist ja kein Shellbefehl, der da drin steht.

    Was sagt

    sudo service swatch-login status

    ?

    Hab das Service jetzt zum Laufen bekommen. Aber nur mit meinem Mailscript und das funktioniert, wie Du schon schreibst, so nicht.


    Nutze ich: mail address=meinemail@gmail.com,subject="SSH login on Schubidu"


    Erhalte ich folgendes mit sudo service swatch-login status:

    Code
    1. systemd[1]: Started swatchdog - monitor ssh passwort logins.
    2. swatchdog[8986]: Global symbol "@gmail" requires explicit package name (did you forget to declare "my @gmail"?) at /.s
    3. swatchdog[8986]: Execution of /.swatchdog_script.8986 aborted due to compilation errors.
    4. systemd[1]: swatch-login.service: Succeeded.
  • Bin einen Schritt weiter:

    Code
    1. watchfor /sshd.*Accepted.*/
    2. mail=meinemail@gmail.com,subject=SSH login

    Wenn ich es so schreibe, bekommen ich keinen Fehler mehr und Status sieht so aus:


    Code
    1. ● swatch-login.service - swatchdog - monitor ssh passwort logins
    2. Loaded: loaded (/etc/systemd/system/swatch-login.service; enabled; vendor preset: enabled)
    3. Active: active (running) since Fri 2020-10-16 20:59:03 CEST; 3s ago
    4. Main PID: 9367 (swatchdog)
    5. Tasks: 3 (limit: 4915)
    6. Memory: 25.9M
    7. CGroup: /system.slice/swatch-login.service
    8. ├─9367 /usr/bin/perl /usr/bin/swatchdog -c /root/auth_watch_config -t /var/log/auth.log
    9. ├─9368 /usr/bin/perl /.swatchdog_script.9367
    10. └─9370 /usr/bin/tail -n 0 -F /var/log/auth.log


    Mail erhalte ich dennoch keine. :(

  • mail address=meinemail@gmail.com,subject="SSH login on Schubidu"

    mail=meinemail@gmail.com,subject="SSH login on Schubidu"  (ohne die Angabe von address)


    Dann sollte es funktionieren :thumbup:


    Code
    1. watchfor /sshd.*Accepted.*/
    2. mail=meinemail@gmail.com,subject=SSH login

    Mail erhalte ich dennoch keine. :(

    gibt es den überhaupt Übereinstimmungen mit deinem Suchmuster "/sshd.*Accepted.*/" in /var/log/auth.log?