Notificaciones telegram SSH

25 June, 2019 - Reading time: 3 minutes

Para recibir notificaciones necesitas un bot y su clave, y nuestro chat id. Para crear un bot nos dirigmos a Botfather y escribimos:

/start

Después escribimos

newbot

Y guardamos el token de la API

A continuación para conseguir nuestro chat id vamos a cid bot (nada que ver conmigo) y damos en "send message" y escribimos /start si no se escribe solo

Copia este script en un directorio, modificanos la KEY y TARGET. Este script no lo he escrito yo si no Cao Xuan Nam

#!/bin/bash
# ^Shebang is good^

KEY="BOT API"
URL="https://api.telegram.org/bot$KEY/sendMessage"
TARGET="CHAT ID" # Telegram ID of the conversation with the bot, get it from /getUpdates API

DATE_EXEC="$(date "+%d-%b-%Y-%H:%M")"
TMPFILE=/tmp/ipinfo-${DATE_EXEC}.txt

curl http://ip-api.com/json/$PAM_RHOST -s -o $TMPFILE
CITY=$(cat $TMPFILE | jq '.city' | sed 's/"//g')
REGION=$(cat $TMPFILE | jq '.regionName' | sed 's/"//g')
COUNTRY=$(cat $TMPFILE | jq '.country' | sed 's/"//g')
ORG=$(cat $TMPFILE | jq '.as' | sed 's/"//g')

TEXT="User *$PAM_USER* logged in on *$HOSTNAME* at $(date '+%Y-%m-%d %H:%M:%S %Z') from $PAM_RHOST - $ORG - $CITY, $REGION, $COUNTRY"
#Remote host: $PAM_RHOST"

PAYLOAD="chat_id=$TARGET&text=$TEXT&parse_mode=Markdown&disable_web_page_preview=true"

# Run in background so the script could return immediately without blocking PAM
curl -s --max-time 10 --retry 5 --retry-delay 2 --retry-max-time 10 -d "$PAYLOAD" $URL > /dev/null 2>&1 &

Le damos permisos

$ chmod +x ssh2telegram

Editamos el archivo /etc/pam.d/common-session añadiendo esta línea al final:

session optional pam_exec.so type=open_session seteuid /ruta/hacia/el/script

Fuentes:

About



Soy administrador de sistemas, documento mis proyectos aquí y a veces escribo sobre otras cosas