Настройка 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-ами один раз и спать спокойнее.