Защитные тарпиты:Ловим брутфорс-ботов — законно
Не обрушивайте атакующего — вымотайте его. Как направить трафик credential-stuffing в honeypot, который сжигает время бота и фиксирует каждый его шаг, — без незаконного «ответного взлома».
Бот заваливает вашу страницу входа крадеными парами «логин-пароль». Напрашивается ответ, который кочует по форумам по безопасности, — огрызнуться «бомбой из вкладок»: страницей, которая в цикле вызывает window.open(), пока браузер или вся машина атакующего не повиснет. Не делайте этого. Это незаконно даже в отношении атакующего; это может намертво повесить браузер обычного клиента, который всего лишь опечатался в пароле; а блокировщик всплывающих окон сводит весь приём на нет за миллисекунды. Приём, который действительно изматывает атакующего, тише — и полностью законен: распознать злоупотребление, увести соединение в honeypot и затянуть его в тарпит так, чтобы каждый запрос висел целую вечность, пока вы спокойно пишете лог. Это и есть защитный тарпит.
ОпределениеЧто такое защитный тарпит на самом деле
Тарпит отвечает назойливым клиентам настолько медленно, насколько это вообще возможно: он удерживает соединение открытым и бесполезным, вместо того чтобы его разорвать. Файрвол отвечает «нет» за миллисекунду и отпускает атакующего к следующей цели; тарпит же бесконечно тянет «почти…», связывая сокеты, потоки и терпение бота на вашей стороне. «Перенаправление при сбое аутентификации» — это всего лишь тарпит, встроенный в процесс входа: как только IP пересекает порог, его запросы тихо уводят с настоящего эндпоинта в ловушку, и внятного ответа он больше не получает.
Всё происходит на вашем собственном оборудовании. Вы сами задаёте задержку, решаете, какие байты цедить по капле и что записывать в лог, — и ничто из этого не дотягивается до машины атакующего. Раз ничто не покидает ваш периметр, ничто и не пересекает юридическую черту.
МифПочему «обрушить атакующего» бьёт по вам
Отдавать в ответ пейлоад, который должен обрушить клиент, — это «ответный взлом» (hacking back), и он проваливается сразу по трём направлениям:
- Это преступление. Вывод из строя чужого компьютера — да, даже компьютера атакующего — подпадает под несанкционированный доступ по законам вроде американского Computer Fraud and Abuse Act, британского Computer Misuse Act и их аналогов по всему миру. Вы сами вручаете противнику жертву — себя.
- Вы бьёте вслепую. За исходным IP обычно стоит узел ботнета, общий прокси, выходной узел VPN или взломанное устройство ни в чём не повинного человека. Разрушительный пейлоад прилетит тому, кто окажется по ту сторону адреса.
- Это попросту не сработает. Браузеры душат и блокируют безудержный window.open(), а любой толковый атакующий работает через headless-клиент в одноразовом контейнере, до которого никакой «бомбе из вкладок» не дотянуться.
Настоящая активная защита поднимает издержки атакующего на тех системах, что подконтрольны вам, — тарпиты, ловушки-приманки, обманные сценарии, телеметрия. Она никогда не тянется ломать систему, которая вам не принадлежит. Удержите все последствия внутри собственного периметра — и юридически вы на твёрдой почве.
МеханизмКак работает перенаправление при сбое аутентификации
По сути это одно правило обнаружения, которое запускает одно правило маршрутизации. Когда IP пересекает поведенческий порог, обратный прокси перестаёт пускать его на настоящий бэкенд и начинает заворачивать в ловушку, единственная задача которой — выглядеть достоверно, оставаясь медленной и нашпигованной телеметрией. От выбранной для ловушки стратегии зависит, во сколько она обойдётся атакующему:
| Ответ | Что видит атакующий | Защитная ценность |
|---|---|---|
| Мгновенный 401 / жёсткая блокировка | Мгновенный, однозначный отказ — сразу уходит дальше | Низкая: быстро отпускает его и выдаёт, где проходит ваш порог |
| Тарпит соединения | Каждый запрос висит десятки секунд, пропускная способность падает до нуля | Высокая: сжигает его время и сокеты на вашей машине |
| Логин-приманка | Фальшивая форма, которая вечно «почти» срабатывает | Высокая: фиксирует каждую пару учётных данных и всю сигнатуру атаки |
| Обманные ответы 200 | Правдоподобные ответы, которые на деле бесполезны | Средняя: отравляет собранные им данные и замедляет разбор |
Тарпит соединения — безопасный и проверенный временем вариант: примите запрос, а затем отдавайте ответ по одному байту, удерживая сокет открытым ровно столько, сколько клиент готов ждать. Специализированные инструменты делают это уже годами — endlessh для SSH, классические SMTP-тарпиты против спама. Та же идея умещается в несколько строк в виде маршрута-приманки; обратите внимание: вся задержка уходит на то, чтобы держать открытым ваш собственный ответ:
// Express honeypot: divert flagged IPs here, then trickle a response
// out slowly. All latency is on OUR server — nothing touches the client
// machine. Pair with a hard cap on concurrent tarpit sockets.
const tarpit = new Set();
app.use((req, res, next) => {
if (flaggedIps.has(req.ip)) return res.redirect(307, "/trap");
next();
});
app.all("/trap", (req, res) => {
// Log the full attack signature for blacklisting + threat intel.
logger.warn("tarpit", { ip: req.ip, ua: req.get("user-agent"), body: req.body });
res.setHeader("Content-Type", "text/html");
tarpit.add(res);
// Drip one harmless byte every 10s; the bot's socket stays stuck on us.
const drip = setInterval(() => res.write(" "), 10_000);
req.on("close", () => { clearInterval(drip); tarpit.delete(res); });
});Тарпит связывает соединение и у атакующего, и у вас. Ограничьте число одновременных тарпит-сокетов, держите ловушку на отдельном хосте и убедитесь, что наплыв пойманных ботов никогда не отнимет ресурсы у настоящего приложения.
АрхитектураСтек blue team вокруг ловушки
Тарпит — лишь пейлоад; безопасным и полезным его делают обнаружение и изоляция вокруг него. Полноценное развёртывание состоит из четырёх слоёв:
- Обнаружение — WAF или IDS, который следит за ключевыми путями (/admin, /login) со строгим порогом, скажем 5 неудачных входов за 10 секунд, и срабатывает лишь после того, как ограничение частоты запросов и CAPTCHA уже отсеяли обычный шум.
- Перенаправление — правило обратного прокси, которое, как только IP помечен, заворачивает весь его дальнейший трафик на хост-ловушку вместо настоящего бэкенда.
- Ловушка — изолированный honeypot (ни в коем случае не ваш продакшен-сервер) с тарпитом соединения, фальшивой формой входа, фиксирующей каждую испробованную пару, — или с тем и другим сразу.
- Логирование и реакция — сохраняйте IP, User-Agent и сигнатуру атаки, передавайте их инструменту вроде fail2ban, чтобы расширять и продлевать блокировки, и выгружайте подтверждённые индикаторы в свои блок-листы.
Меры предосторожностиКак развернуть это, не навредив настоящим пользователям
- Изоляция не обсуждается. Держите ловушку на отдельном, изолированном сервере. Логике активной защиты не место в вашем основном продакшен-приложении.
- Сначала ограничение частоты запросов и CAPTCHA. Отсейте обычный спам и невинные ошибки ещё до того, как что-либо будет помечено, — чтобы ловушка имела дело только с подтверждённой автоматикой.
- Точность важнее полноты охвата. Ложное срабатывание ударит по настоящему клиенту, который всего лишь забыл пароль, — смещайте пороги в сторону уверенности и давайте добросовестным пользователям очевидный и быстрый путь восстановления доступа.
- Держите все последствия на своей стороне провода. Медленные ответы, фальшивые страницы и логирование защитимы; всё, что задумано исполняться на машине клиента или вредить ей, — нет. Такое не выпускайте.
Часто задаваемые вопросы
Защитный тарпит — это сервис, который намеренно отвечает назойливым клиентам как можно медленнее — удерживая соединение открытым и выдавая ответ по капле — вместо того чтобы сразу их блокировать. Он расходует время, потоки и сокеты брутфорс-бота на инфраструктуре, которой владеете вы, пока вы фиксируете в логе всю сигнатуру атаки. Поскольку все издержки ложатся на ваш собственный сервер, юридическая черта не пересекается.
Нет. Намеренный вывод из строя чужой машины — даже машины атакующего — это несанкционированный доступ по законам вроде американского Computer Fraud and Abuse Act и британского Computer Misuse Act. «Ответный взлом» делает нарушителем и вас, а IP, по которому вы бьёте, часто оказывается узлом ботнета, общим прокси или взломанным устройством ни в чём не повинного человека. Законная активная защита поднимает издержки только на тех системах, которыми владеете вы.
Это тарпит, встроенный в процесс входа. Когда IP пересекает поведенческий порог — например, 5 неудачных входов за 10 секунд, — обратный прокси тихо уводит все дальнейшие запросы этого IP прочь от настоящего бэкенда в ловушку-приманку: медленную, нашпигованную телеметрией и изолированную от продакшена.
Поставьте впереди ограничение частоты запросов и CAPTCHA, чтобы обычный спам и забытые пароли вообще не доходили до ловушки; настройте пороги обнаружения в сторону уверенности, чтобы свести ложные срабатывания почти к нулю; разместите ловушку на изолированном сервере, а не в продакшене; и дайте добросовестным пользователям быстрый путь восстановления доступа. Делайте ставку на точность — каждое ложное срабатывание бьёт по настоящему клиенту.
Внедрите приватный ИИ в свою регулируемую нагрузку
Мы проведём вашу команду по архитектуре, договорам и средствам контроля — исходя из ваших реальных требований, а не из шаблонной презентации.