Уведомления в телеграм о входе по ssh или sftp

Так как уже не первый раз обращаются, решил сделать простенький скрипт для уведомлений в телеграм о входе по ssh или sftp с указанием логина и ip адреса клиента на базе лог файла /var/log/auth.log и сервиса systemd в ОС Debian 11. Так же по аналогии можете переделать и для другой ОС.

1.Создайте файл `/etc/systemd/system/ssh-telegram.service` с содержимым:

[Unit]
Description=SSH Telegram Notification Service
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/ssh-telegram.sh
Restart=always

[Install]
WantedBy=multi-user.target

2.Создайте файл `/usr/local/bin/ssh-telegram.sh` с содержимым:

#!/bin/bash

# Путь к лог-файлу 
LOG_FILE="/var/log/auth.log"

TELEGRAM_BOT_TOKEN="<TELEGRAM_BOT_TOKEN>"
TELEGRAM_CHAT_ID="<TELEGRAM_CHAT_ID>"

# Функция отправки данных методом POST
send_data() {
  curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
    -d chat_id=$TELEGRAM_CHAT_ID \
    -d parse_mode=html \
    -d text="$1" > /dev/null  
            }

# Хвост лог-файла
tail -F -n0 $LOG_FILE | while read LINE; do
  
  # Проверяем строку лога на сообщение о входе
  if [[ $LINE =~ "Accepted password for" ]]; then

      send_data "SSH: $LINE"
fi 
done

3.Сделайте файл `ssh-telegram.sh` исполняемым:

chmod +x /usr/local/bin/ssh-telegram.sh

4.Перезапустите systemd:

systemctl daemon-reload

5.Запустите сервис:

systemctl start ssh-telegram

6.Проверьте, что сервис работает правильно:

systemctl status ssh-telegram

7.Добавьте сервис в автозагрузку:

systemctl enable ssh-telegram

Теперь вы будете получать уведомления о входе по ssh или sftp в телеграм. Замените `<TELEGRAM_BOT_TOKEN>` и `<TELEGRAM_CHAT_ID>` на свой токен бота и ID чата соответственно.

0
Оставьте комментарий! Напишите, что думаете по поводу заметки.x
()
x