TurtleGuard

Новости / 24.10.2026

Защита Telegram-бота и мини-аппа от DDoS

Где у бота и мини-приложения слабые места, почему вебхук нельзя пускать через проверку браузера и как спрятать адрес сервера. С настройками по шагам.

новость24.10.20262 минуты чтения

Сам бот атаку получает редко: сообщения пользователей приходят к нему через серверы Telegram, и флудить их бесполезно. Уязвимы три другие вещи: вебхук, мини-приложение с его API и адрес сервера. Разберём каждую и покажем, что закрыть в первую очередь.

Где у бота слабые места

  • Вебхук. Адрес, на который Telegram присылает обновления. Если его узнать, на него можно слать тысячи POST-запросов в секунду, и бот перестанет отвечать, хотя у самого Telegram всё в порядке.
  • Мини-апп и его API. Фронтенд и бэкенд мини-приложения работают как обычный сайт. Скрипт может долбить авторизацию, баланс или каталог, и приложение перестанет грузиться у всех.
  • IP сервера. Если адрес известен, атака идёт напрямую на сервер, мимо любой защиты по домену.

Long polling или вебхук

При long polling бот сам ходит в api.telegram.org за обновлениями через getUpdates. Входящих соединений у него нет, поэтому сервер можно закрыть файрволом от всех, кроме SSH с вашего адреса. Атаковать там нечего.

Вебхук удобнее под нагрузкой, но открывает порт наружу. Если бот на вебхуке, его нужно закрывать отдельно.

Как закрыть вебхук

  1. Задайте secret_token в setWebhook. Telegram будет присылать его в заголовке X-Telegram-Bot-Api-Secret-Token, а бот должен отбрасывать запросы без него. Это защищает от поддельных обновлений, но не от флуда: проверка всё равно тратит ресурсы сервера.
  2. Сделайте путь неугадываемым, например /webhook/ и длинная случайная строка. Тогда его не найти перебором.
  3. Принимайте вебхук только из сетей Telegram: 149.154.160.0/20 и 91.108.4.0/22. Этот список Telegram публикует в документации Bot API.
  4. Если домен за защитой TurtleGuard, добавьте правило «Пропустить» для пути вебхука и метода POST и разрешите его только сетям Telegram по IP. Проверку браузера серверы Telegram не пройдут, поэтому без такого правила обновления перестанут доходить.

Как защитить мини-апп

  • Проверяйте initData на сервере. Telegram подписывает данные запуска ключом от токена бота (HMAC-SHA256). Без проверки подписи любой может слать запросы от имени любого пользователя.
  • Ставьте лимиты на API. Живой пользователь редко делает больше нескольких запросов в секунду. Ограничение на адрес отсекает скрипты и не мешает людям.
  • Кешируйте тяжёлое. Каталог, тарифы и другие общие для всех данные можно отдавать из кеша, чтобы флуд по ним не доходил до базы.
  • Подключите домен мини-аппа через защиту. Проверка браузера TurtleGuard работает во встроенном браузере Telegram, а данные запуска в адресе (#tgWebAppData) после проверки сохраняются. Приложение получает их как обычно.

Как спрятать адрес сервера

  • Разрешите входящие на 80 и 443 только с адресов узлов защиты. Иначе атакующий узнает IP и пойдёт в обход.
  • Не держите на этом же сервере сайты и сервисы без защиты, не отправляйте с него почту: адрес утекает через заголовки писем и DNS-записи поддоменов. Подробнее в статье «Как скрыть IP-адрес сервера».
  • Если адрес уже засветился, проще сменить IP, чем прятать старый.

Вебхуки платёжных систем

ЮKassa, CryptoBot, Platega и другие шлют уведомления об оплате со своих адресов. Им нужно то же самое: правило «Пропустить» для пути колбэка, только метод POST, и обязательная проверка подписи на сервере. Иначе пользователь оплатит, а бот об этом не узнает.

С чего начать

  1. Если бот на вебхуке, задайте secret_token и ограничьте путь сетями Telegram.
  2. Вынесите мини-апп на отдельный поддомен, например app.example.com, и подключите его к защите одной записью CNAME.
  3. Добавьте правила «Пропустить» для вебхуков бота и платёжек.
  4. Закройте сервер от прямых подключений.

Как это настроить у нас и сколько стоит, описано на странице «Защита Telegram мини-аппа и бота».

Подключить мини-апп