Когда ты работаешь с публичным 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-ами один раз и спать спокойнее.