Эй, страж сервера!
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