In un ecosistema selfhosted è indispensabile (a mio avviso) avere un sistema di notifiche affidabile per monitorare l’accesso dei propri server e VPS.

In questo articolo, vedremo come integrare Gotify con SSH per ricevere le notifiche in maniera istantanena ogni volta che viene effettuato o sbagliato un accesso, questo ci permette di tenere sotto controllo l’attività dei nostri sistemi senza dover continuamente consultare i log.


Requisiti:

Installazione

Per prima cosa, accediamo alla dashboard del nostro server Gotify da web-ui e, dal menù interattivo in alto a destra, rechiamoci sulla voce “CLIENTS” clicchiamo successivamente su “CREATE APPLICATION”:

Dal menù di creazione inseriamo, un nome ed una descrizione (facoltativo), successivamente clicchiamo su “Create”:

Finita di creare l’applicazione sul server gotify andiamo a copiarci il token ed ad appuntarcelo, ci servirà successivamente.

A questo punto effettuiamo l’accesso al server che vogliamo collegare con le notifiche e, dal nostro terminale, digitiamo il seguente comando:

sudo nano /usr/local/bin/notifica-ssh

Copiamo ed incolliamo il seguente contenuto:

#!/bin/bash

exec &> /dev/null

Gotify_URL='https://gotify.domains.com' # Inseririamo l'url del nostro server gotify
Gotify_Token='gotify-app-token' # Inseririamo il token copiato in precedenza

if [ "$PAM_TYPE" = "open_session" ]; then
    NOW=$(date +"%d/%m/%Y %H:%M")
    TITLE="Accesso SSH su $(hostname)"
    MESSAGE="Utente: $PAM_USER
IP Remoto: $PAM_RHOST
Ora: $NOW"

    /usr/bin/curl -X POST -s \
        -F "title=$TITLE" \
        -F "message=$MESSAGE" \
        -F "priority=5" \
        "${Gotify_URL}/message?token=${Gotify_Token}"
fi

Modifichiamo l’URL ed il Token, salviamo il file cliccando la combinazione di tasti CTRL + X e successivamente confermiamo con “Y”.

Adesso dobbiamo rendere eseguibile il file che abbiamo appena creato quindi lanciamo il comando:

chmod +x /usr/local/bin/notifica-ssh

Successivamente andiamo nel file di configurazione PAM (Pluggable Authentication Modules) e gli diciamo di eseguire il programma sshnotif ogni volta che qualcuno apre una sessione SSH:

sudo nano /etc/pam.d/sshd

Inseriamo la password, se richiesta ed aggiungiamo (all’ultimo) la seguente linea:

# 👉 Nota: viene usato optional per evitare che il login SSH fallisca.
session optional pam_exec.so /usr/local/bin/notifica-ssh

Effettuiamo un reload del servizio ssh:

sudo systemctl reload sshd

Adesso quando accederemo tramite SSH riceveremo una bella notifica sul nostro server Gotify: