TimVin

Отправка уведомлений в Телеграм о входе любого пользователя по ssh

Не важно, как часто приходится пользоваться консолью удаленных серверов, эта опция не помешает.

Для начала установим jq, чтобы скрипт отправлял местоположение в сообщении:

apt install jq

Теперь сам скрипт. Его нужно сохранить в /etc/profile.d/
Открываем любимым редактором:

nano /etc/profile.d/ssh-to-telegram.sh

Скрипт выглядит следующим образом:

#! /bin/bash
USERID
="-XXXXXXXXXX" KEY="XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" TIMEOUT="10" URL="https://api.telegram.org/bot$KEY/sendMessage" DATE_EXEC="$(date "+%d %b %Y %H:%M")" TMPFILE='/tmp/ipinfo-$DATE_EXEC.txt' if [ -n "$SSH_CLIENT" ]; then IP=$(awk '{print $1}' <<< $SSH_CLIENT) PORT=$(awk '{print $3}' <<< $SSH_CLIENT) HOSTNAME=$(hostname -f) IPADDR=$(hostname -I | awk '{print $1}') curl http://ipinfo.io/$IP -s -o $TMPFILE CITY=$(jq -r '.city' < $TMPFILE) REGION=$(cat $TMPFILE | jq '.region' | sed 's/"//g') COUNTRY=$(cat $TMPFILE | jq '.country' | sed 's/"//g') ORG=$(cat $TMPFILE | jq '.org' | sed 's/"//g') TEXT="$DATE_EXEC: Вход пользователя ${USER} по ssh на $HOSTNAME ($IPADDR) из $IP - $ORG - $CITY, $REGION, $COUNTRY через порт $PORT" curl -s --max-time $TIMEOUT -d "chat_id=$USERID&disable_web_page_preview=1&text=$TEXT" $URL > /dev/null rm $TMPFILE fi

Где USERID=«-XXXXXXXXXX» это id чата для отправки сообщения,

 KEY=«XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX» это токен вашего бота.

Сделаем скрипт исполняемым

chmod +x /etc/profile.d/ssh-to-telegram.sh

Теперь после каждой успешной аутентификации по ssh мы получим уведомление:

Рубрики: Linux