Предварительные замечания
- Будем считать, что новый бот в Telegram уже создан, а его токен нам известен
- Считаем, что уже есть группа с оригинальным названием, в которую добавлен новый бот
Данная методика проверена на операционных системах Debian 11, Ubuntu 22.04. Также работает на Rocky 8.7 (а значит, и на AlmaLinux и RHEL).
Установка
В случае, если установлена утилита git, установка проходит в одну команду
cd /opt/ && git clone https://github.com/MyTheValentinus/ssh-login-alert-telegram
Если же у нас нет git, и его нельзя установить (да, бывает и такое), самостоятельно создаём три файла.
cd /opt
mkdir ssh-login-alert-telegram && cd ssh-login-alert-telegram/
touch alert.sh credentials.config deploy.sh
Вставляем в alert.sh:
#!/usr/bin/env bash
. /opt/ssh-login-alert-telegram/credentials.config
for i in "${USERID[@]}"
do
URL="https://api.telegram.org/bot${KEY}/sendMessage"
DATE="$(date "+%d %b %Y %H:%M")"
if [ -n "$SSH_CLIENT" ]; then
CLIENT_IP=$(echo $SSH_CLIENT | awk '{print $1}')
SRV_HOSTNAME=$(hostname -f)
SRV_IP=$(hostname -I | awk '{print $1}')
IPINFO="https://ipinfo.io/${CLIENT_IP}"
TEXT="Connection from *${CLIENT_IP}* as ${USER} on *${SRV_HOSTNAME}* (*${SRV_IP}*)
Date: ${DATE}
More informations: [${IPINFO}](${IPINFO})"
curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
fi
done
Вставляем в deploy.sh:
#!/usr/bin/env bash
add_profiled(){
cat <<EOF > /etc/profile.d/telegram-alert.sh
bash $ALERTSCRIPT_PATH
EOF
}
add_zsh () {
cat <<EOF >> /etc/zsh/zshrc
bash $ALERTSCRIPT_PATH
EOF
}
ALERTSCRIPT_PATH="/opt/ssh-login-alert-telegram/alert.sh"
echo "Deploying alerts..."
add_profiled
echo "Check if ZSH is installed.."
HAS_ZSH=$(grep -o -m 1 "zsh" /etc/shells)
if [ ! -z $HAS_ZSH ]; then
echo "ZSH is installed, deploy alerts to zshrc"
add_zsh
else
echo "No zsh detected"
fi
echo "Success!"
Вставляем в credentials.config:
USERID=(-97160441299)
KEY="573414141899:AAFxoC51krUaLEInlPGJwEEQICUp8QvVs99"
Здесь USERID - это ID пользователя в Телеграм или ID канала; KEY - это токен нашего нового бота.
Внедрение
Делаем файлы скриптов выполнимыми:
chmod 700 deploy.sh && chmod 700 alert.sh
Одной командой единовременно проводим внедрение
bash deploy.sh
Использование
Для проверки попробуем вручную запустить скрипт:
./alert.sh
В Telegram должно появиться сообщение о входе.
Выходит, всё сделано правильно, теперь мы будем всегда предупреждены, если кто-то зашёл на сервер.
Оркестр
Для целого набора серверов можно воспользоваться средствами Ansible
_https://github.com/MyTheValentinus/Deploy-Telegram-SSH-Alerting-with-Ansible
Опробовано на боевых серверах билетной системы:
Калуга
Брянск
Обнинск
Серпухов
Смоленск
Тула
Орел
Чехов
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux