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:
- Server Gotify;
- Un VPS o una VM Linux;
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:

