TGViewer
LinuxSkill - Сводки с прода и Шпаргалки LinuxSkill - Сводки с прода и Шпаргалки @linuxskill · 10.7K subscribers
Post #1049 2.68K
🚨 Fail2ban → Telegram: уведомления о банах за секунды

Эй, страж сервера!

SSH-брутфорс каждые 500 попыток в день? Bash-скрипт шлет уведомления в Telegram: входы, баны, статистика.

Fail2ban + curl/tail — реал-тайм алерты без Jail-хака.

Что нужно:
- fail2ban + curl.
- Bot токен + chat_id.

sudo apt update
sudo apt install fail2ban curl



Оригинальный скрипт (~/.bashrc или /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



Запуск:
chmod +x telegram_notification.sh
nohup ./telegram_notification.sh &
ps aux | grep telegram_notification



💡 Вывод:
Мгновенные алерты: входы/баны/статистика. Лучше Jail-шаблонов — гибче.

#Fail2ban #Bash #Telegram #Monitoring #Linux #SSH
  • 👍 10
  • 👎 1
More from @linuxskill
  1. Oct 7, 2026Post #1243
  2. Oct 6, 2026GitOps-практики: развёртываем сервис через ArgoCD Классический CI/CD запускает деплой. Но…
  3. Oct 5, 2026Post #1241
  4. Oct 2, 2026📊 Диск тормозит, а iostat показывает норму? Ищем хвост задержек Приложение подвисает на з…
  5. Sep 30, 2026💀 CPU под 100%, а в top пусто? Ловим невидимые процессы через eBPF Сервер греется, в шапк…
  6. Sep 28, 2026🔥 Знаешь только ip a? 10 неочевидных команд ip для Linux Большинство админов знают про ip…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →