Vai al contenuto

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

Bash
sudo nano /usr/bin/apprise-ssh-login.sh

Inserire lo script con la seguente sintassi:

Bash
#! /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:

Bash
sudo chmod +x /usr/bin/apprise-ssh-login.sh

Inserire alla file del file /etc/pam.d/sshd:

Bash
session optional pam_exec.so /usr/bin/apprise-ssh-login.sh

Infine riavviare sshd:

Bash
sudo systemctl restart sshd