Linux
Вернуться 20-01-2026, 09:07 Просмотров: 2 Автор: xlop
Настройка уведомлений Fail2Ban в Telegram
Настройка уведомлений Fail2Ban в Telegram
В этом гайде настроим отправку уведомлений Fail2Ban в Telegram через кастомный action. Также есть улучшенная версия с геолокацией по IP.
Содержание
- Создание скрипта для уведомлений
- Настройка Fail2Ban
- Подключение в jail.local
- Применение настроек
- Тестирование
- Улучшенная версия с геолокацией
Создание скрипта для уведомлений
Создаем файл скрипта:
mcedit /etc/fail2ban/scripts/fail2ban-telegram.sh
Содержимое скрипта:
#!/bin/bash
TOKEN="ТВОЙ_ТОКЕН_БОТА"
CHAT_ID="ТВОЙ_CHAT_ID"
TEXT="$1"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d text="${TEXT}" \
-d parse_mode="Markdown"
Делаем скрипт исполняемым:
chmod +x /etc/fail2ban/scripts/fail2ban-telegram.sh
Настройка Fail2Ban
Копируем стандартный action:
cp /etc/fail2ban/action.d/mail.conf /etc/fail2ban/action.d/telegram.conf
Редактируем конфигурацию:
mcedit /etc/fail2ban/action.d/telegram.conf
Содержимое файла
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = /etc/fail2ban/scripts/fail2ban-telegram.sh "🚫 [Fail2Ban] Бан: <ip> из тюрьмы <name>"
actionunban = /etc/fail2ban/scripts/fail2ban-telegram.sh "✅ [Fail2Ban] Разбан: <ip> из тюрьмы <name>"
[Init]
Подключение в jail.local
mcedit /etc/fail2ban/jail.d/defaults-debian.conf
Пример конфигурации:
[DEFAULT]
maxretry = 2
findtime = 480
bantime = 720
action = iptables-allports
telegram
ignoreip = 127.0.0.1/8 192.168.10.0/24
Применение настроек
sudo systemctl restart fail2ban
Тестирование
sudo fail2ban-client set sshd banip 1.2.3.4
Улучшенная версия с геолокацией
Установка зависимостей:
sudo apt install geoip-bin whois jq curl -y
Создание улучшенного скрипта:
sudo mcedit /etc/fail2ban/scripts/fail2ban-telegram-geo.sh
Содержимое скрипта
#!/bin/bash
TOKEN="ТВОЙ_ТОКЕН_БОТА"
CHAT_ID="ТВОЙ_CHAT_ID"
IP="$1"
JAIL="$2"
REASON="$3"
DATE="$(date '+%Y-%m-%d %H:%M:%S %Z')"
# Геолокация через ipinfo.io
INFO=$(curl -s "https://ipinfo.io/${IP}/json")
COUNTRY=$(echo "$INFO" | jq -r '.country // "Unknown"')
CITY=$(echo "$INFO" | jq -r '.city // "Unknown"')
ORG=$(echo "$INFO" | jq -r '.org // "Unknown"')
# Формируем сообщение
TEXT="🚫 *Fail2Ban ВНИМАНИЕ*
📅 Дата: ${DATE}
🔒 Тюрьма: ${JAIL}
❌ IP: ${IP}
🌍 Страна: ${COUNTRY}
🏙 Город: ${CITY}
🏢 Организация: ${ORG}
📄 Причина: ${REASON}"
# Отправка в Telegram
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d text="${TEXT}" \
-d parse_mode="Markdown"
Делаем исполняемым:
sudo chmod +x /etc/fail2ban/scripts/fail2ban-telegram-geo.sh
Создаем action для Геолокации:
sudo mcedit /etc/fail2ban/action.d/telegram-geo.conf
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = /etc/fail2ban/scripts/fail2ban-telegram-geo.sh "<ip>" "<name>" "Превышено число неудачных попыток входа"
actionunban = /etc/fail2ban/scripts/fail2ban-telegram-geo.sh "<ip>" "<name>" "Разбан"
[Init]
Обновляем конфигурацию jail
[DEFAULT]
maxretry = 2
findtime = 480
bantime = 720
action = iptables-allports
telegram-geo
ignoreip = 127.0.0.1/8 192.168.10.0/24
Применяем изменения:
sudo systemctl restart fail2ban
sudo fail2ban-client set sshd banip 1.2.3.4
sudo fail2ban-client set sshd unbanip 1.2.3.4
Пример уведомления:
🚫 Fail2Ban Alert
📅 Дата: 2025-08-12 14:23:45 UTC
🔒 Тюрьма: sshd
❌ IP: 1.2.3.4
🌍 Страна: US
🏙 Город: Los Angeles
🏢 Организация: AS12345 Example ISP
📄 Причина: Превышено число неудачных попыток входа
Вернуться 20-01-2026, 09:07 Просмотров: 2 Автор: xlop
Авторизация
Мониторинг Серверов
Голос на TopCraft
Голос на McTop
Голос на Hotmc
Голос на M-inside
Голос на MineCraftrating
Голос на ServerList
Голос на Misterlauncher
Голос на Mmonitoring
Голос на Minecraft-Statistic
Голос на Tmonitoring
Голос на Mcrate.su
Мы в Вконтакте



