SSH Login Alert
Apprise
Per le notifiche mi avvalgo del server selfhost di Apprise che inoltra le notifiche a N servizi, nel mio caso un bot di Telegram e su Ntfy.sy.
Cloudflare
Il server è dietro Zerotrust di Cloudflare e l'autenticazione è possibile solo tramite autenticazione con acount Google.
Per permettere l'accesso dello script al server, è necessario creare su Cloudflare un token Service Auth. Questo rilascia due token, CF-Access-Client-Id e CF-Access-Client-Secret che devono essere poi utlizzati nello script. Su Applications in Zerotrust è necessario inserire una ulteriore Policy in Policies di tipo Service Auth e dal menu a tendina scegliere quello creato precedentemente in Service Auth.
Ubuntu
Sulla macchina su cui si vogliono monitorare gli accessi ssh, creare un file.sh su /usr/bin/, ad esempio apprise-ssh-login.sh
Inserire lo script con la seguente sintassi:
#! /bin/bash
if [ "${PAM_TYPE}" = "open_session" ]; then
TITLE="SSH Login Alert"
DATA="$(date +'%d/%m/%Y - %H:%M:%S')"
TEXT="[${PAM_RHOST}]\n$DATA\nSSH login su ${PAM_USER}@${HOSTNAME}"
TGRAM_TOKEN="<inserire-token-del-bot-telegram>"
TGRAM_ID="<inserire-id-telegram>"
CF_ACCESS_CLIENT_ID="<inserire-cf-access-client-id>"
CF_ACCESS_CLIENT_SECRET="<inserire-cf-access-client-secret>"
APPRISE_KEY="<inserire-apprise-key>"
curl \
-X POST -d "{\"urls\":\"tgram://$TGRAM_TOKEN/$TGRAM_ID/\",\"body\":\"$TEXT\",\"title\":\"$TITLE\"}" \
-H "Content-Type: application/json" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
"https://apprise.enricomarogna.com/notify/$APPRISE_KEY"
fi
Assegnare al file i permessi di esecuzione:
Inserire alla file del file /etc/pam.d/sshd:
Infine riavviare sshd: