Когда ты работаешь с публичным VPS, особенно если он принимает SSH-подключения или обслуживает веб-приложения, важно быть начеку. Брутфорс, попытки подбора паролей, подозрительные запросы — всё это происходит чаще, чем хотелось бы. Один из самых простых и надёжных способов защитить сервер от подобных атак — это fail2ban. А если хочешь получать алерты напрямую в Telegram, можно всё связать через webhook. Я так и сделала — и делюсь пошаговой инструкцией.
Что такое fail2ban и зачем он нужен
fail2ban — это инструмент, который мониторит логи (например,
/var/log/auth.log
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
/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
- — IP, которые никогда не будут забанены (добавь свой домашний IP сюда!).
ignoreip
Отправка алертов в Telegram
Теперь к самому интересному — уведомления в Telegram. Удобно получать сообщение сразу, как кто-то стучится в SSH или на сайт.
1. Создай Telegram-бота
Зайди в Telegram и найди
@BotFather
/newbot
Дай имя и username (должен оканчиваться на
bot
2. Получи свой Chat ID
Напиши что-нибудь своему боту и открой в браузере:
https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates
Там будет
chat.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 на год? Мы добавим сверху
Сэкономьте месяц — просто введите