Tarpit — это служба в компьютерной системе (обычно на сервере ), которая намеренно задерживает входящие соединения. Эта техника была разработана как защита от компьютерного червя , и идея заключается в том, что сетевые злоупотребления, такие как рассылка спама или широкое сканирование, менее эффективны и, следовательно, менее привлекательны, если они занимают слишком много времени. Эта концепция аналогична tar pit , в которой животные могут увязнуть и медленно тонуть под поверхностью, как в болоте .
Том Листон разработал оригинальную программу тарпиттинга LaBrea . [1] Она может защитить целую сеть с помощью тарпиттинга, запущенного на одной машине.
Машина прослушивает запросы протокола разрешения адресов , которые остаются без ответа (указывая на неиспользуемые адреса), затем отвечает на эти запросы, получает начальный пакет SYN сканера и отправляет в ответ SYN/ACK . Она не открывает сокет и не подготавливает соединение, фактически она может забыть о соединении после отправки SYN/ACK. Однако удаленный сайт отправляет свой ACK (который игнорируется) и считает, что трехэтапное рукопожатие завершено. Затем она начинает отправлять данные, которые никогда не достигают пункта назначения. Соединение через некоторое время прервется, но поскольку система считает, что имеет дело с живым (установленным) соединением, она консервативна в его тайминге и вместо этого будет пытаться повторно передавать, отступать, повторно передавать и т. д. в течение довольно долгого времени.
В более поздних версиях LaBrea также была добавлена функциональность для ответа на входящие данные, снова используя сырые IP-пакеты и не используя сокеты или другие ресурсы сервера tarpit, с поддельными пакетами, которые требуют, чтобы отправляющий сайт «замедлился». Это будет поддерживать установленное соединение и тратить еще больше времени сканера.
Одним из возможных путей, которые рассматривались в свое время для борьбы с массовым спамом, было установление небольшой платы за каждое отправленное письмо. Введение такой искусственной платы, с незначительным влиянием на законное использование, пока плата достаточно мала, автоматический массовый спам мгновенно стал бы непривлекательным. Tarpitting можно рассматривать как похожий (но технически гораздо менее сложный) подход, где стоимость для спамера измерялась бы с точки зрения времени и эффективности, а не денег.
Процедуры аутентификации увеличивают время отклика, поскольку пользователи пытаются ввести неверные пароли. Аутентификация SMTP не является исключением. Однако передачи SMTP с сервера на сервер, где и внедряется спам, не требуют аутентификации. Были обсуждены и реализованы различные методы для SMTP-tarpits, систем, которые подключаются к Mail Transfer Agent (MTA, т. е. программное обеспечение почтового сервера) или располагаются перед ним в качестве прокси.
Один из методов увеличивает время передачи всех писем на несколько секунд, задерживая начальное приветственное сообщение («задержка приветствия»). Идея заключается в том, что неважно, если легитимная почта будет доставляться немного дольше, но из-за большого объема это будет иметь значение для спамеров. Недостатком этого является то, что списки рассылки и другие легитимные массовые рассылки должны быть явно внесены в белый список , иначе они тоже пострадают.
Некоторые почтовые системы, такие как sendmail 8.13+, реализуют более сильную форму задержки приветствия. Эта форма приостанавливается при первой установке соединения и прослушивает трафик. Если она обнаруживает какой-либо трафик до своего собственного приветствия (в нарушение RFC 2821), она закрывает соединение. Поскольку многие спамеры не пишут свои реализации SMTP в соответствии со спецификацией, это может сократить количество входящих спам-сообщений.
Другой метод — задерживать только известных спамеров, например, используя черный список (см. Спам , DNSBL ). OpenBSD интегрировала этот метод в свою основную систему, начиная с OpenBSD 3.3, [2] с помощью специального демона ( spamd ) и функциональности в брандмауэре ( pf ) для перенаправления известных спамеров в этот тарпит.
MS Exchange может блокировать отправителей, которые отправляют на недействительный адрес. Exchange может делать это, поскольку SMTP-коннектор подключен к системе аутентификации.
Более тонкая идея — грейлистинг , который, говоря простыми словами, отклоняет первую попытку подключения с любого ранее невиданного IP-адреса. Предполагается, что большинство спамеров делают только одну попытку подключения (или несколько попыток в течение короткого периода времени) для отправки каждого сообщения, тогда как законные системы доставки почты будут повторять попытки в течение более длительного периода. После повторной попытки им в конечном итоге разрешат войти без каких-либо дальнейших препятствий.
Наконец, более сложный метод пытается склеить тарпиты и фильтрующее программное обеспечение, фильтруя электронную почту в реальном времени, пока она передается, и добавляя задержки к общению в ответ на индикатор "вероятности спама" фильтра. Например, спам-фильтр будет делать "угадывание" после каждой строки или после каждых x полученных байтов относительно того, насколько вероятно, что это сообщение будет спамом. Чем это вероятнее, тем больше MTA задержит передачу.
SMTP состоит из запросов, которые в основном представляют собой слова из четырех букв, такие как MAIL, и ответов, которые представляют собой (минимум) трехзначные числа. В последней строке ответа за числом следует пробел; в предыдущих строках за ним следует дефис. Таким образом, определив, что сообщение, которое пытаются отправить, является спамом, почтовый сервер может ответить:
451-Ophiomyia prima — агромизидная муха451-Ophiomyia secunda — агромизидная муха451-Ophiomyia tertia — агромизидная муха451-Ophiomyia quarta — агромизидная муха451-Ophiomyia quinta — агромизидная муха451-Ophiomyia sexta — муха-агромизида451-Ophiomyia septima — агромизидная муха451 Ваш IP-адрес указан в DNSBL . Повторите попытку позже.
Tarpit ждет пятнадцать или более секунд между строками (длительные задержки допускаются в SMTP, так как люди иногда отправляют почту вручную, чтобы проверить почтовые серверы). Это связывает процесс отправки SMTP на компьютере спамера, чтобы ограничить объем спама, который он может отправить.
Ядро Linux теперь можно пропатчить, чтобы разрешить тарпиттинг входящих соединений вместо более обычного отбрасывания пакетов. Это реализовано в iptables путем добавления цели TARPIT. [3] Те же функции проверки и сопоставления пакетов могут применяться к целям tarpit, что и к другим целям.
Сервер может определить, что данное почтовое сообщение является спамом, например, потому что оно было адресовано спам-ловушке или после сообщений от доверенных пользователей. Сервер может решить, что IP-адрес, ответственный за отправку сообщения, заслуживает тарпитинга. Перекрестная проверка по доступным DNSBL может помочь избежать включения невиновных пересылок в базу данных тарпитинга. Демон, эксплуатирующий Linux libipq, может затем проверить удаленный адрес входящих SMTP-подключений по этой базе данных. SpamCannibal — это программное обеспечение GPL, разработанное на основе этой идеи; [4] Stockade — это похожий проект, реализованный с использованием FreeBSD ipfirewall .
Одним из преимуществ тарпиттинга на уровне IP является то, что обычные TCP-соединения, обрабатываемые MTA, являются stateful . То есть, хотя MTA не использует много ресурсов ЦП во время сна, он все равно использует объем памяти, необходимый для хранения состояния каждого соединения. С другой стороны, тарпиттинг в стиле LaBrea не имеет stateless , таким образом получая преимущество в виде сниженной стоимости по сравнению с ящиком спамера. Однако следует отметить, что, используя ботнеты , спамеры могут вынести большую часть своих затрат на компьютерные ресурсы за пределы сети.
Известно, что тарпиттинговое соединение может генерировать значительный объем трафика к получателю, поскольку отправитель считает соединение установленным и пытается отправить (а затем повторно передать) фактические данные. На практике, учитывая текущий средний размер компьютерной ботнет-сети, более разумным решением будет полностью отбросить подозрительный трафик, без тарпиттинга. Таким образом, будут повторно переданы только сегменты TCP SYN, а не все запросы HTTP или HTTPS. [5]
Помимо MS Exchange, были еще две успешные коммерческие реализации идеи смоляной ямы. Первая была разработана TurnTide , стартапом из Филадельфии, который был приобретен Symantec в 2004 году за 28 миллионов долларов наличными. [6] TurnTide Anti Spam Router содержит модифицированное ядро Linux , которое позволяет ему проделывать различные трюки с трафиком TCP , например, изменять размер окна TCP . Группируя различных отправителей электронной почты в разные классы трафика и ограничивая пропускную способность для каждого класса, объем вредоносного трафика сокращается — особенно когда вредоносный трафик исходит из отдельных источников, которые легко идентифицируются по их высокому объему трафика.
После приобретения Symantec канадская стартап-компания MailChannels выпустила свое программное обеспечение "Traffic Control", которое использует немного другой подход для достижения схожих результатов. Traffic Control — это полу-реального времени SMTP-прокси . В отличие от устройства TurnTide, которое применяет формирование трафика на сетевом уровне, Traffic Control применяет формирование трафика к отдельным отправителям на прикладном уровне. Такой подход приводит к несколько более эффективной обработке спам-трафика, исходящего от ботнетов , поскольку он позволяет программному обеспечению замедлять трафик от отдельных спам-зомби, вместо того чтобы требовать объединения зомби-трафика в класс.