Тарпит (сетевые технологии)

Тарпит (от англ. tarpit) — это сервис на вычислительной системе (обычно на сервере), который преднамеренно задерживает обработку входящих соединений. Этот подход был разработан как средство защиты от спама и компьютерных червей. Основная идея состоит в том, что злоупотребления компьютерными сетями, такие как спам-рассылка или массовое сканирование, становятся менее эффективными и менее привлекательными, если на их выполнение уходит слишком много времени. Концепция аналогична природному асфальтовому озеру («тёрпит»), в котором животные могут увязнуть и постепенно утонуть под поверхностью, как в болоте.

Тарпиты представляют собой специализированные приманки (honeypots), истощающие вычислительные ресурсы злоумышленников[1].

История

К 2000 году SMTP-серверы электронной почты, такие как Postfix, получили возможность ограничения числа соединений — эта функция в сообществе получила название «тарпитинг»[2]. В 2001 году, после эпидемии червя Code Red, Том Листон разработал сетевой тарпит-программу LaBrea[3]. Эта программа позволяла одному компьютеру реализовывать тарпит на всех неиспользуемых адресах в сети.

Примеры

SMTP-тарпиты

Один из предложенных способов борьбы с массовым спамом — введение небольшой платы за каждое отправленное письмо. Искусственное увеличение стоимости массовой рассылки сразу снижает её привлекательность для злоумышленников, практически не затрагивая обычных пользователей. Тарпитинг можно рассматривать как схожий, но технологически менее сложный метод: стоимость для спамера здесь выражается во времени и потере эффективности, а не в деньгах[4].

Процедуры аутентификации, как правило, замедляют отклик при неправильном вводе пароля, однако для передачи писем между серверами SMTP (этот этап используется для распространения спама) аутентификация не требуется. Для SMTP были реализованы различные методы тарпитинга: либо как подключаемые модули к агенту транспортировки почты (MTA), либо как отдельные прокси-сервисы.

Один из способов — задерживать доставку всех писем на несколько секунд из-за искусственного промедления при отправке приветственного сообщения («greet delay»). Предполагается, что небольшая задержка неощутима для легитимной почты, однако для спамеров, обрабатывающих тысячи сообщений, такие задержки существенно увеличивают затраты времени. Недостатком является то, что пострадают и рассылочные листы, и другие легальные массовые рассылки, если не добавить их в «белый список».

В некоторых почтовых системах, таких как sendmail начиная с версии 8.13, реализована более строгая форма приветственного сообщения: соединение при установлении удерживается в ожидании; если от клиента придёт трафик до приветственного сообщения (что нарушает RFC 2821), соединение тут же закрывается. Поскольку подавляющее большинство спамерских SMTP-реализаций не придерживается стандартов, это позволяет отсекать часть нежелательной почты.

Другой способ — задерживать только известных спамеров, например, по чёрным спискам. В системе OpenBSD с версии 3.3 этот подход встроен на уровне системы: специальный демон (spamd) и модуль файрвола (pf) направляют рассылки от известных спамеров в тарпит[5].

В платформе Microsoft Exchange для тарпитинга используется параметр TarpitInterval (по умолчанию 5 секунд), который поддерживается в локальных версиях Exchange Server, но недоступен в Exchange Online[6][7].

Более изящная идея — серый список, когда первый коннект от незнакомого IP-адреса отклоняется. Предполагается, что спамерский бот пробует отправить письмо только одну-две попытки подряд, а реальные почтовые сервера — повторно соединяются спустя время. После нескольких попыток легитимный адрес попадает в белый список.

Иной, более комплексный подход состоит в объединении тарпитинга с фильтрацией в реальном времени: проверяются отдельные строки или байты письма, и чем выше вероятность спама (по индикатору фильтра), тем больше задержка сообщения для данного отправителя.

Техническая основа

SMTP работает на основе команд (в основном из четырёх букв, например MAIL), и ответов — трёхзначных чисел. В последней строке ответа после числа — пробел, в остальных — дефис. Таким образом, если сервер определяет, что отправляемое сообщение — спам, он может отвечать:

451-Ophiomyia prima is an agromyzid fly
451-Ophiomyia secunda is an agromyzid fly
451-Ophiomyia tertia is an agromyzid fly
451-Ophiomyia quarta is an agromyzid fly
451-Ophiomyia quinta is an agromyzid fly
451-Ophiomyia sexta is an agromyzid fly
451-Ophiomyia septima is an agromyzid fly
451 Ваш IP-адрес включён в DNSBL. Пожалуйста, попробуйте позже.

Тарпит может делать паузу по 15 секунд и более между строками (в данном случае это допустимо по стандарту SMTP, так как пользователи иногда тестируют работу почтовых серверов вручную). Такой подход блокирует процесс отправки писем со стороны спамера, ограничивая таким образом количество доставляемых сообщений.

LaBrea и тарпиты на уровне IP

Компьютер с LaBrea слушает в сети запросы ARP, оставшиеся без ответа (что указывает на неиспользуемый адрес), затем подхватывает такие запросы, принимает начальный SYN-пакет от сканера и посылает в ответ SYN/ACK[3]. При этом программа не открывает сокет и не устанавливает соединение — после отправки SYN/ACK она может «забыть» про соединение. Удалённая сторона в ответ посылает ACK (который игнорируется), полагая, что произошло успешное формирование TCP-соединения (трёхстороннее рукопожатие). После этого она начинает слать данные, которые никогда не достигнут цели. В итоге соединение со временем прерывается, но операционная система злоумышленника «держит» его как активное и повторяет попытки передачи. В современных облачных средах (например, Azure) метод ARP-тарпитов не работает. Это связано с использованием программно-определяемых сетей (SDN), где архитектура платформы строго блокирует подмену ARP (ARP spoofing) и MAC-адресов, что делает невозможным перехват обращений к неиспользуемым IP-адресам[8].

Ядро Linux допускает патчинг для тарпитинга входящих соединений вместо банального сброса пакетов; поддержка реализована в iptables через специальную цель TARPIT. К тарпит-целям применяются те же методы фильтрации, что и ко всем другим целям iptables. Механизм на уровне сокетов работает за счёт манипуляции размером окна TCP (TCP Window Size). Вместо сброса нежелательного соединения сервер отвечает пакетом SYN/ACK с нулевым размером окна (Zero Window). Это сообщает клиенту, что буфер приёма заполнен, в результате чего TCP-стек атакующего переходит в режим ожидания, удерживая соединение открытым и расходуя системные ресурсы без фактической передачи данных[9][10].

Смешанные SMTP/IP-тарпиты

Сервер может определить, что конкретное письмо — спам (например, если оно было адресовано в спам-ловушку или после жалоб пользователей). После этого IP-адрес источника может быть помещён в тарпит. Проверка по DNSBL позволяет избежать попадания невинных форвардеров в базу тарпита. Демон, использующий библиотеку Linux libnetfilter_queue (пришедшую на смену удалённой из ядра libipq)[11], может проверять адреса подключающихся SMTP-клиентов по этой базе. Программное обеспечение SpamCannibal (GPL) реализует эту идею[12]; аналогичный проект Stockade реализован на базе FreeBSD ipfirewall.

Преимущество IP-уровневого тарпитинга в том, что обычные TCP-соединения, обрабатываемые MTA, являются сохранёнными по состоянию (stateful): пусть MTA не тратит ЦП, пока «спит», на каждое соединение требуется некоторая память. В LaBrea-подобных тарпитах реализация без выделения состояния (stateless), что снижает издержки для системы-защитника. Однако спамеры могут интегрировать свои издержки в ботнетах, перекладывая ресурсоёмкие задачи на внешние компьютеры.

Тарпиты против ИИ

Тарпиты могут применяться и для противодействия искусственным интеллектуальным скрейперам. Для этого организуется конечная точка, отдающая бессвязный текст, сгенерированная, например, марковскими цепями, чтобы «отравлять» датасет ИИ. URL таких ресурсов добавляется в robots.txt во избежание попадания легитимных поисковых краулеров. Пример такого программного обеспечения — Nepenthes[13]. Проект Nepenthes остаётся активным, при этом список инструментов пополнился такими решениями, как Iocaine и корпоративная система Cloudflare AI Labyrinth[14]. Для защиты от ИИ-краулеров также применяются HTTP-тарпиты, включающие генераторы бесконечных страниц, рекурсивные ловушки и замедленную отдачу данных в стиле Slowloris[9].[14] Помимо генерации текста марковскими цепями, используются методы «отравления» датасетов синтетическими данными, созданными нейросетями, что приводит к деградации обучаемых моделей[15].[14]

SSH-тарпиты

Для защиты протокола SSH применяется инструмент Endlessh. Он бесконечно отправляет случайно сгенерированные строки баннера по одной за раз с задержкой (по умолчанию 10 секунд), что позволяет удерживать соединения ботов для подбора паролей открытыми на часы или даже дни[16]..

Критика

Известно, что тарпитированные соединения могут генерировать значительный трафик в сторону получателя, поскольку отправитель считает соединение установленным и делает попытки передачи (и повторной передачи) полезных данных. На практике, учитывая средние современные размеры ботнетов, более разумно полностью сбрасывать подозрительный трафик, а не «завязывать» его в тарпите: тогда будет происходить только повторная попытка пересылки TCP SYN-сегментов, а не HTTP/HTTPS запросов[17].

Коммерческие реализации

Кроме MS Exchange, существуют и другие коммерчески успешные реализации тарпитов. Первая была создана компанией TurnTide, стартапом из Филадельфии, который в 2004 году был приобретён Symantec за $28 млн. TurnTide Anti Spam Router содержит модифицированное ядро Linux, позволяющее изменять параметры TCP, например, оконный размер. Группировка отправителей по классам и ограничение полосы пропускания для каждого класса позволяют эффективно сокращать поток спама — особенно если вредоносный трафик поступает от явно выделяющихся по объёму источников.

После покупки Symantec канадский стартап MailChannels выпустил продукт Traffic Control, использовавший другой подход: Traffic Control представляет собой полуреальный SMTP-прокси, который осуществляет ограничение трафика не на сетевом, а на уровне приложений — для каждого отдельного отправителя. Такой подход оказался более эффективным против ботнетов, так как позволял замедлять работу конкретного спамера-зомби, а не целого класса.

Примечания

  1. Honeypots. Palo Alto Networks Cyberpedia. Palo Alto Networks. Дата обращения: 26 августа 2026.
  2. Postfix Rate Controls. Postfix. Дата обращения: 6 мая 2025. Архивировано 19 августа 2000 года.
  3. 1 2 LaBrea. FW Systems. Дата обращения: 20 октября 2001. Архивировано 20 октября 2001 года.
  4. Distributed Tarpitting: Impeding Spam Across Multiple Servers (англ.). Usenix. Usenix (16 октября 2003). Дата обращения: 26 августа 2026.
  5. Документация по spamd (man-страница). OpenBSD. Дата обращения: 26 августа 2026.
  6. Set-ReceiveConnector. Microsoft Learn. Microsoft. Дата обращения: 26 августа 2026.
  7. Message rate limits and throttling. Microsoft Learn. Microsoft. Дата обращения: 26 августа 2026.
  8. Is it possible to enable ARP spoofing in Azure Virtual Machines? Microsoft Q&A. Microsoft. Дата обращения: 26 августа 2026.
  9. 1 2 What are Tarpits? Hedgehog Security. Дата обращения: 26 августа 2026.
  10. TCP Tarpit and Port Scanning Barricades on Both Sides. Onsec Blog. Дата обращения: 26 августа 2026.
  11. libnetfilter_queue. netfilter.org. Дата обращения: 26 августа 2026.
  12. SpamCannibal. Spamcannibal.org. Дата обращения: 26 августа 2026. Архивировано 14 октября 2003 года.
  13. Belanger, Ashley. AI haters build tarpits to trap and trick AI scrapers that ignore robots.txt (англ.), Ars Technica (28 января 2025). Дата обращения: 26 августа 2026.
  14. 1 2 3 AI Tar Pits Are Drowning LLM Scrapers. Toxsec. Дата обращения: 26 августа 2026.
  15. Training Data Poisoning. Lakera. Дата обращения: 26 августа 2026.
  16. Endlessh - an SSH tarpit. GitHub. skeeto. Дата обращения: 26 августа 2026.
  17. Sebastian, Walla (2019). “MALPITY: Automatic Identification and Exploitation of Tarpit Vulnerabilities in Malware”. IEEE European Symposium on Security and Privacy (EuroS&P): 590—605.