Настройка fail2ban + Telegram alerts на VPS: защита и уведомления в одном флаконе

ГлавнаяНастройка fail2ban + Telegram alerts на VPS: защита и уведомления в одном флаконе

Содержание

Когда ты работаешь с публичным VPS, особенно если он принимает SSH-подключения или обслуживает веб-приложения, важно быть начеку. Брутфорс, попытки подбора паролей, подозрительные запросы — всё это происходит чаще, чем хотелось бы. Один из самых простых и надёжных способов защитить сервер от подобных атак — это fail2ban. А если хочешь получать алерты напрямую в Telegram, можно всё связать через webhook. Я так и сделала — и делюсь пошаговой инструкцией.


Что такое fail2ban и зачем он нужен

fail2ban — это инструмент, который мониторит логи (например,

/var/log/auth.log
) и банит IP-адреса, замеченные в подозрительной активности. Например, если кто-то несколько раз подряд неправильно ввёл пароль при попытке входа по SSH — fail2ban автоматически добавит этот IP в
iptables
или
nftables
и заблокирует доступ.

🔥 Ключевые возможности:

  • защита SSH, nginx, postfix, dovecot и других сервисов;
  • гибкая настройка
    bantime
    ,
    findtime
    ,
    maxretry
    ;
  • whitelist IP;
  • интеграция с Telegram, email и другими способами уведомлений.

Установка fail2ban на Ubuntu / Debian

На моём сервере стоит Ubuntu 22.04, но аналогично работает и на Debian:

sudo apt update sudo apt install fail2ban -y

После установки он уже готов к работе — по умолчанию включена защита SSH.


Базовая настройка
/etc/fail2ban/jail.local

Создай файл

jail.local
, чтобы не трогать оригинальный
jail.conf
:

sudo nano /etc/fail2ban/jail.local

Добавим базовые настройки:

[DEFAULT] bantime = 1h findtime = 10m maxretry = 5 ignoreip = 127.0.0.1/8 ::1

[sshd]

enabled = true port = ssh logpath = %(sshd_log)s backend = systemd

Параметры:

  • bantime
    — сколько длится бан (можно
    bantime = -1
    для вечного);
  • findtime
    — за какой период считаются попытки;
  • maxretry
    — сколько попыток до блокировки;
  • ignoreip
    — IP, которые никогда не будут забанены (добавь свой домашний IP сюда!).

Отправка алертов в Telegram

Теперь к самому интересному — уведомления в Telegram. Удобно получать сообщение сразу, как кто-то стучится в SSH или на сайт.

1. Создай Telegram-бота

Зайди в Telegram и найди

@BotFather
. Введи:

/newbot

Дай имя и username (должен оканчиваться на

bot
), получишь токен — сохрани его.

2. Получи свой Chat ID

Напиши что-нибудь своему боту и открой в браузере:

https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates

Там будет

chat.id
— это твой ID, куда слать алерты.


Создание action-скрипта для fail2ban

Создай новый action-файл, например:

sudo nano /etc/fail2ban/action.d/telegram-ban.conf

Вставь:

[Definition] actionstart = echo "fail2ban started on <hostname>" | /usr/bin/curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="fail2ban started on <hostname>" actionstop = echo "fail2ban stopped" | /usr/bin/curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="fail2ban stopped" actionban = /usr/bin/curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="🚨 IP <ip> заблокирован fail2ban на <hostname>" actionunban = /usr/bin/curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="ℹ️ IP <ip> разблокирован fail2ban"

Замените

<TOKEN>
и
<CHAT_ID>
на свои значения. Не забудь дать права на выполнение:

sudo chmod +x /etc/fail2ban/action.d/telegram-ban.conf

Подключение action в jail.local

Допиши в

[sshd]
:

action = telegram-ban

Теперь после каждой блокировки IP ты получаешь Telegram-оповещение с IP, датой и типом события.


Полезные команды для fail2ban

Чтобы не забыть, вот краткий справочник:

  • Проверить статус:
sudo fail2ban-client status
  • Посмотреть статус конкретного jail (например, sshd):
sudo fail2ban-client status sshd
  • Разблокировать IP:
sudo fail2ban-client set sshd unbanip 123.123.123.123
  • Перезапустить fail2ban:
sudo systemctl restart fail2ban
  • Просмотреть логи:
sudo journalctl -u fail2ban

Получается, что…

интеграция fail2ban с Telegram — это не просто красиво, а действительно полезно. Ты мгновенно узнаешь о попытках взлома и можешь оперативно реагировать. Особенно важно, если на сервере хостится важный проект.

Эта связка особенно хороша на VPS, где нет внешней панели безопасности — ты сам себе и админ, и охранник, и монитор. Поэтому стоит настроить fail2ban с Telegram alert-ами один раз и спать спокойнее.

VPS на год? Мы добавим сверху

Сэкономьте месяц — просто введите

Месяц в подарок
COPIED
NEWCOMM COPIED