Benachrichtigung in Mattermost bei SSH Login

01.05.2024 | Server, Linux | 0 comments

Möchtest du automatisch in Mattermost benachrichtigt werden, sobald sich jemand per SSH auf deinem Server einloggt? Soll die Nachricht so aussehen wie im Bild unten?

2024 05 01 14 59 57 Mattermost Desktop App

In diesem Artikel zeigen wir dir, wie du bei jedem SSH Login eine Benachrichtigung in Mattermost erhälst. In der Benachrichtigung steht auch, welcher Benutzer sich mit welcher IP-Adresse einloggt.

Mattermost Webhook

Sofern der Channel noch nicht existiert, in dem später die Benachrichtigungen landen sollen, erstelle diesen Channel bitte als erstes. Der Channel könnte „SSH Notifications“ lauten.

Wir brauchen zunächst eine Webhook-URL, an welche unser Script Nachrichten senden soll.

Öffne dazu zunächst Mattermost und klicke oben links auf das Kachel-Symbol (1), anschließend auf „Integrations“ (2).

2024 05 01 15 02 42 Mattermost Desktop App

Wähle dort „Incoming Webhooks“. Auf Deutsch dürfte es „Eingehende Webhooks“ lauten.

2024 05 01 15 07 04 Mattermost Desktop App

Klicke oben rechts auf den blauen Button „Add Incoming Webhook“.

Danach öffnet sich folgendes Fenster:

2024 05 01 15 08 37 Mattermost Desktop App

Fülle die Felder wie folgt aus.

  1. Hier kannst du deiner Webhook einen sprechenden Namen vergeben. Dieser ist nur für dich wichtig, damit du nachher weißt, warum du dieses „Incoming Webhook“ erstellt hast. Du kannst hier zum Beispiel „SSH Notifications“ schreiben.
  2. Die Description bzw. Beschreibung ist optional und dir überlassen.
  3. Wähle hier ein Channel bzw. ein Kanal aus, in dem später die Benachrichtigungen über die SSH Logins ankommen sollen. Ich habe zuvor einen Channel namens „Netcup vServer Monitoring“ erstellt.
  4. Für unser Script ist das nicht wichtig, aber sicherheitshalber habe ich die Checkbox hier angeklickt. Das bedeutet, dass Nachrichten, die über diese Webhook-URL ankommen nur in dem zuvor ausgewählten Channel posten können.
  5. Speichern.

Anschließend siehst du eine Webhook-URL:

2024 05 01 15 15 49 Mattermost Desktop App

Aus Sicherheitsgründen haben wir unsere Webhook-URL im Screenshot zensiert, sonst könnte jeder in den Channel posten. Notiere dir diese URL, da wir sie nachher in den Script einbauen werden.

SSH

Stelle sicher, dass in der Datei

/etc/ssh/sshd_config

„UsePAM yes“ steht. Siehe Screenshot:

2024 05 01 15 19 39 Joplin

Script

Erstelle eine Datei mit folgendem Pfad:

/var/ops/ssh_login_notification_mattermost.sh

Im Grunde kannst du die Datei auch in einem anderen Verzeichnis mit einem anderen Dateinamen erstellen, aber du musst wissen wo, da wir diese Information später noch einmal brauchen werden.

In der oben besagten Datei sollte folgender Code drin stehen:

#!/bin/bash

if [ "$PAM_TYPE" != "close_session" ]; then

        # Mattermost Webhook URL; TODO
        URL=""

        # Benutzername des sich einloggenden Benutzers, PAM_USER verwenden
        USER=$PAM_USER

        # Remote-Host-Adresse des sich einloggenden Benutzers
        IP=$PAM_RHOST

        # Hostname des Servers
        HOST=$(hostname)

        # Erstellen des JSON-Inhalts für Mattermost, inklusive Benutzername und IP
        CONTENT="{\"text\": \"**SSH Login Alert** \n\nUser: **$USER** \nHost: **$HOST** \nIP: **$IP**\", \"username\": \"SSH Notifications\", \"icon_emoji\": \":inbox-tray:\"}"

        # Senden der Daten an Mattermost
        curl -X POST -H 'Content-Type: application/json' --data "$CONTENT" "$URL" &
fi

Achtung! Jetzt musst du allerdings nur noch deine Webhook-URL in dieses Script einfügen. Die Variable heißt „URL“. Deine zuvor in Mattermost erstellte Webhook-URL sollte also dort zwischen den Anführungszeichen stehen. Beispiel:

URL="https://mattermost.example.org/hooks/owbnigwoiebgowenbgowregheor"

Speichere diese Datei und stelle sicher, dass diese ausführbar ist.

PAM

Nun müssen wir nur noch sicherstellen, dass dieser Script bei jedem SSH-Login aufgerufen wird.

Öffne dazu die Datei

/etc/pam.d/sshd

Ganz an’s Ende dieser Datei fügst du folgendes ein:

session required pam_exec.so /var/ops/ssh_login_notification_mattermost.sh

Das sieht dann wie folgt aus:

2024 05 01 15 27 41 akay@v2202310178903240160

Speichere diese Datei.

Im Grunde war’s das. Teste einfach mal, indem du dich nochmal per SSH einloggst. Du solltest ab sofort immer eine Benachrichtigung in Mattermost erhalten mit dem Namen des Users und seiner IP-Adresse, sobald ein SSH Login erfolgt.

0 Comments

Submit a Comment

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!