BASH_HELP Telegram 849
⚙️ Bash + Telegram: мониторинг сервера и мгновенные уведомления

✔️В этой статье будет рассказано о том, как написать bash-скрипт для отправки мгновенных уведомлений об активности на сервере в Telegram.

➡️ Что нам потребуется:
💠Установить fail2ban
💠Установить curl
💠Создать telegram бота, получить его токен и chat_id (это идентификатор чата, куда нам будут приходить сообщения)

▶️Для начала установим fail2ban и curl
sudo apt update
sudo apt install fail2ban curl

▶️После установки Fail2ban не настроен по умолчанию для активной защиты. Однако, он уже включает в себя некоторые предустановленные конфигурации и фильтры, которые можно использовать. Если вы хотите подробнее узнать о его работе, то обратитесь к официальной документации.

▶️Создадим пустой файл в каталоге
touch ~/usr/local/bin/telegram_notification.sh


▶️Приступим к написанию самого скрипта
#!/bin/bash 

# Замените на ваш токен и chat_id
TOKEN="123456789:ABCDEFGHIJKLMN_OPQRSTUVWXYZ123456"
CHAT_ID="987654321"

# Функция для отправки сообщения в Telegram
send_telegram_message() {
local message="$1"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$message" \
-d "parse_mode=HTML"
}

# Переменная для отслеживания времени последнего уведомления о неудачных попытках и блокировках
last_failed_time=0
# Время (1 день) через которое следует посылать уведомления о неудачных попытках входа
track_time_range=86400

# Функция для проверки и отправки уведомлений о неудачных попытках и блокировках
check_failed_attempts() {
current_time=$(date +%s)
# Проверка, прошло ли больше суток с последнего уведомления
if (( current_time - last_failed_time >= track_time_range )); then
# Получаем информацию о неудачных попытках и блокировках за последние сутки
failed_attempts=$(grep "Failed password" /var/log/auth.log | wc -l)
bans=$(grep "Ban" /var/log/fail2ban.log | wc -l)

# Формируем сообщение
message=" Статистика за последние сутки:\n"
message+=" Неудачных попыток входа: $failed_attempts\n"
message+=" Заблокированных IP: $bans"

# Отправляем сообщение
send_telegram_message "$message"
last_failed_time=$current_time
fi
}

# Отслеживание логов аутентификации и Fail2Ban
tail -F /var/log/auth.log /var/log/fail2ban.log | while read line; do
# Проверка на успешные попытки входа
if echo "$line" | grep "Accepted password" &> /dev/null; then
send_telegram_message " Успешный вход: $line"
fi

# Проверка на неудачные попытки входа
if echo "$line" | grep "Failed password" &> /dev/null; then
check_failed_attempts
fi

# Проверка на заблокированные IP-адреса
if echo "$line" | grep "Ban" &> /dev/null; then
check_failed_attempts
fi
done

▶️Стоит заострить свое внимание на нескольких моментах:
tail -F /var/log/auth.log /var/log/fail2ban.log | while read line;

▶️Команда tail -F отслеживает все изменения в log файлах и через pipe (|) передает их в цикл while, где изменения записываются в переменную line. В дальнейшем, цикл пробегается по условиям и формирует статистику неудачных попыток входа, а в случае удачной попытки, сообщение об этом немедленно отправляется в телеграмм.

▶️Теперь осталось запустить данный скрипт. Для простоты, воспользуемся командой nohup. Эта команда позволяет запускать процессы, игнорируя сигнал HUP (hangup). Это полезно, когда вы хотите, чтобы процесс продолжал работать даже после выхода из системы или закрытия терминала. Однако, лучшей альтернативой будет использование systemd или supervisor.

▶️Чтобы запустить команду с использованием nohup, просто добавьте nohup перед командой:
nohup telegram_notification.sh &

▶️Теперь проверим, работает ли наш скрипт
ps aux |  telegram_notification*

▶️В окне терминала, должен отобразиться запущенный процесс и его PID. Теперь вы будете получать уведомления о удачных и неудачных попытках входа по ssh на ваш сервер.

🖼️ Статья на Habr'e

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/bash_help/849
Create:
Last Update:

⚙️ Bash + Telegram: мониторинг сервера и мгновенные уведомления

✔️В этой статье будет рассказано о том, как написать bash-скрипт для отправки мгновенных уведомлений об активности на сервере в Telegram.

➡️ Что нам потребуется:
💠Установить fail2ban
💠Установить curl
💠Создать telegram бота, получить его токен и chat_id (это идентификатор чата, куда нам будут приходить сообщения)

▶️Для начала установим fail2ban и curl

sudo apt update
sudo apt install fail2ban curl

▶️После установки Fail2ban не настроен по умолчанию для активной защиты. Однако, он уже включает в себя некоторые предустановленные конфигурации и фильтры, которые можно использовать. Если вы хотите подробнее узнать о его работе, то обратитесь к официальной документации.

▶️Создадим пустой файл в каталоге
touch ~/usr/local/bin/telegram_notification.sh


▶️Приступим к написанию самого скрипта
#!/bin/bash 

# Замените на ваш токен и chat_id
TOKEN="123456789:ABCDEFGHIJKLMN_OPQRSTUVWXYZ123456"
CHAT_ID="987654321"

# Функция для отправки сообщения в Telegram
send_telegram_message() {
local message="$1"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$message" \
-d "parse_mode=HTML"
}

# Переменная для отслеживания времени последнего уведомления о неудачных попытках и блокировках
last_failed_time=0
# Время (1 день) через которое следует посылать уведомления о неудачных попытках входа
track_time_range=86400

# Функция для проверки и отправки уведомлений о неудачных попытках и блокировках
check_failed_attempts() {
current_time=$(date +%s)
# Проверка, прошло ли больше суток с последнего уведомления
if (( current_time - last_failed_time >= track_time_range )); then
# Получаем информацию о неудачных попытках и блокировках за последние сутки
failed_attempts=$(grep "Failed password" /var/log/auth.log | wc -l)
bans=$(grep "Ban" /var/log/fail2ban.log | wc -l)

# Формируем сообщение
message=" Статистика за последние сутки:\n"
message+=" Неудачных попыток входа: $failed_attempts\n"
message+=" Заблокированных IP: $bans"

# Отправляем сообщение
send_telegram_message "$message"
last_failed_time=$current_time
fi
}

# Отслеживание логов аутентификации и Fail2Ban
tail -F /var/log/auth.log /var/log/fail2ban.log | while read line; do
# Проверка на успешные попытки входа
if echo "$line" | grep "Accepted password" &> /dev/null; then
send_telegram_message " Успешный вход: $line"
fi

# Проверка на неудачные попытки входа
if echo "$line" | grep "Failed password" &> /dev/null; then
check_failed_attempts
fi

# Проверка на заблокированные IP-адреса
if echo "$line" | grep "Ban" &> /dev/null; then
check_failed_attempts
fi
done

▶️Стоит заострить свое внимание на нескольких моментах:
tail -F /var/log/auth.log /var/log/fail2ban.log | while read line;

▶️Команда tail -F отслеживает все изменения в log файлах и через pipe (|) передает их в цикл while, где изменения записываются в переменную line. В дальнейшем, цикл пробегается по условиям и формирует статистику неудачных попыток входа, а в случае удачной попытки, сообщение об этом немедленно отправляется в телеграмм.

▶️Теперь осталось запустить данный скрипт. Для простоты, воспользуемся командой nohup. Эта команда позволяет запускать процессы, игнорируя сигнал HUP (hangup). Это полезно, когда вы хотите, чтобы процесс продолжал работать даже после выхода из системы или закрытия терминала. Однако, лучшей альтернативой будет использование systemd или supervisor.

▶️Чтобы запустить команду с использованием nohup, просто добавьте nohup перед командой:
nohup telegram_notification.sh &

▶️Теперь проверим, работает ли наш скрипт
ps aux |  telegram_notification*

▶️В окне терминала, должен отобразиться запущенный процесс и его PID. Теперь вы будете получать уведомления о удачных и неудачных попытках входа по ssh на ваш сервер.

🖼️ Статья на Habr'e

🔨 bash_help

BY BashMaster




Share with your friend now:
tgoop.com/bash_help/849

View MORE
Open in Telegram


Telegram News

Date: |

According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. Users are more open to new information on workdays rather than weekends. With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether.
from us


Telegram BashMaster
FROM American