понедельник, 10 ноября 2008 г.

Восемь способов борьбы со спамом

Один способ, девятый, я выбросил, так как автор оригинала признал там же, что девятый способ таковым не является. Эта статья является достаточно свободным переводом публикации "Nine ways to combat spam" автора Lorenzo Simionato. Оригинала по тому адресу на http://www.linux.com/ , по которому он публиковался уже нет. Но тем не менее, информация, изложенная там на мой взгляд вряд ли устареет, так как эти методы (и идеи, заложенные в них) будут действенны всегда.
Любой, кто в наши дни пользуется электронной почтой, знает, что спам это очень серьезная проблема. К счастью, имеется достаточное количество способов, которые вы можете применить для сдерживания этого явления и уменьшить количество нежелательной почты, которую вы получаете.
1)
Искажение адреса (Address munging). Обсуждение значения слова "munging" (произноситься "MUHN-jing" или "MUHN-ging") можно прочитать тут.
Спамеры собирают адреса электронной почты с помощью так называемых ботов, которые "прочесывают" Сеть в поисках жертвы. Если адрес как-нибудь "замаскирован" при его публикации в Сети, то бот может его и не заметить. Искажение адреса - это и есть такой процесс маскировки адреса. Например, вы можете публиковать свой адрес так: myaccaunt[at]my[dot]domain[dot]ua, или создать картинку на которой "нарисован" Ваш адрес, или написать адрес в ASCII кодах (например, когда Вы в HTML коде пишете & # 6 4 (без пробелов) браузер переводит это "слово" в @).
2)
Фильтрация содержимого письма.
Как только спамеры заполучили Ваш адрес, борьба с ними перемещается непосредственно на почтовый сервер и почтовый ящик. Одним из подходов к решению задачи борьбы со спамом - это фильтрация содержимого каждого письма. Текст письма просматривается на наличие в нем "слов-триггеров", таких как "виагра" или "отдых в Турции". Когда количество таких триггеров превышает некую межу, то письмо метится как спам. В некоторых реализациях вы можете захотеть использовать более развернутую классификацию писем, чем "спам - не спам". Каждому письму, в зависимости от определенных признаков, присваивается некоторое число баллов. Чем больше балл, тем больше шансов, что письмо является спамом.
Основным недостатком этого метода является то, что спамеры искажают слова-триггеры так, чтобы автоматическое распознавание их было затруднено, но человек в конечном счете мог их читать. Более того, использование большого списка слов-триггеров может увеличить число ложных срабатываний.
Эволюция этих методов привела к использованию статистического анализа содержимого сообщения (обычно Байесовского классификатора) для распознования спама. В почтовом клиенте, в котором реализован Байесовский фильтр, пользователь "вручную" метит отдельное письмо как спам или как не спам. И через какое-то время фильтр, набрав определенное количество помеченной пользователем почты, сам начнет предлагать, какое письмо считать спамом, а какое - нет. Этот метод может быть использован как на стороне сервера (например SpamAssassin), так и на стороне клиента (например Mozilla Thunderbird).
Байесовский метод пытается решить некоторые ограничения фильтров текста писем, но все равно возможны ложные срабатывания. Более того, спамеры могут спрятать текст письма в картинке и тем самым защитить его от фильтрации.
3)
Cтруктура политики отправителя (Sender Policy Framework).
Спамеры часто рассылают почту с поддельных адресов. Система, названная Sender Policy Framework (SPF), использует службу DNS для выработки решения, принимать или нет пришедшее письмо.
Для применения этого метода необходимо добавить TXT запись в DNS вашего домена, используя специальный синтаксис. Для автоматической генерации этой записи вы можете использовать wizard на домашней странице SPF. Это поле определяет какому хосту и какому IP адресу разрешено слать почту с Вашего домена. Когда Ваш почтовый сервер принимает письмо от name@domain.com, он посылает DNS запрос на domain.com для поиска SPF записи. Если таковая найдена, то почтовик смотрит в ней, находится ли хост отправителя письма в списке тех, кому разрешено отправлять письма от имени этого домена. В противном случае в доставке будет отказано.
SpamAssassin, приложение с открытым исходным кодом, может работать с SPF. Многие популярные сервера реализуют этот метод напрямую, либо после наложения патчей или подключения плагинов.
SPF - хороший метод, но он имеет две помехи. Первая: SPF записи широко не используются и в доменах, где нет SPF записи, SMTP сервер будет принимать любые письма. Вторая: часто очень трудно определить какому хосту разрешено слать почту, используя данный домен как отправитель.
4)
Блок листы (черные списки) реального времени.
Еще одним методом на стороне сервера являются черные списки реального времени, которые используют центральную базу данных (у каждого своя), содержащую "ненадежные" IP адреса, которые известны как "поставщики" спама. В этом случае, когда SMTP сервер получает письмо, он посылает запрос на один или более из этих списков для поиска там IP адреса отправителя. Если отправитель там обнаружен, то его письму отказывается в приеме с соответствующим сообщением.
Имеется большое число таких блоксписков.
Этот метод работает хорошо, но некоторые блоклисты слишком строгие, другие - слишком "добрые". Также возможны ложные срабатывания - если автор письма имеет домашний сервер с динамическим IP или если он случайно попал в блоклист, то вы не сможете получить его письмо.
5)Серые списки. Следующий метод борьбы на стороне сервера основывается на способе как используют спамеры SMTP. Когда принимающий сервер по какой-либо причине не принимает почту, то отсылающий сервер попытается отослать недоставленное письмо позже еще раз. Многие сервера используемые спамерами проще и заботятся больше о количестве доставленных писем, а не том, чтобы дошло каждое письмо. Поэтому когда спамерский SMTP получает сообщение об ошибке доставки он не делает новых попыток вместо того, чтобы попробовать опять.
Принимающий сервер использующий серые списки будет отказывать в приеме сообщения с любого неизвестного IP, возвращая временную ошибку. Почтовый сервер с традиционными настройками будет пытаться доставить отвергнутое сообщение снова. И при следующей попытке это сообщение будет принято. Эта стратегия требует, чтобы принимающий сервер сохранил тот неизвестный IP адрес, чтобы при второй попытке доставки сообщение было принято.
Основным недостатком этого метода является увеличенное запаздывание получения письма , хотя вы можете смягчить это обстоятельство используя белые списки, в которых будут находится доверенные хосты.
Заслуживает внимания вариант использования серых списков, при котором письма не принимаются при первой попытке доставки в том случае, если отправитель находится в одном из публичных блоклистов.
6)Vipul's Razor.
Vipul's Razor борется со спамом используя сотрудничество между пользователями електронной почты. Централизованная (коммерческая) база данных содержит хэши (в действительности fingerprint) содержимого спамерских писем. Когда сервер принимает сообщение он запрашивает эту базу данных для поиска хэша полученного сообщения. Если обнаружено соответствие - сообщение отвергается. Если соответствия нет, но по каким-либо причинам это сообщение все равно считается спамом, то можно вручную либо автоматически отослать хэш в эту центральную базу данных. Спамеры могут слегка менять сообщение (hashbuster injection) и тогда хэш практически одного и того же сообщения будет отличаться. Противодействием этому может служить вычисление хэша (такой хэш называется эфемерной сигнатурой) не всего сообщения, а его случайной части.
Три недостатка vipul's razor:
Первый: когда мы запрашиваем систему, хэш спамового сообщения может и не быть в базе;
Второй: два совершенно разных письма могут иметь одинаковый хэш и, хотя это маловероятно, это надо иметь в виду, когда получаем вывод, что письмо не есть спам;
Третий: так как эта стратегия носит коллективный характер, то возможны разные мнения относительно того, является сообщение спамом или нет.
7)
DCC - Distributed Checksum Clearinghouses. (Распределенные хранилища контрольных сумм)
DCC работает подобным образом как и Razor. Оно использует определенный тип хэша сообщения (контрольная сумма) и также взаимодействует с централизованой базой всех контрольных сумм. Однако, в данном случае нет взаимодействия между конечными пользователями. Система работает полностью автоматически. Почтовые клиенты и сервера шлют на сервер DCC контрольные суммы всех сообщений без участия конечного пользователя, не зависимо от того, спам это или нет. Центральная система подсчитывает число вхождений каждой конечной суммы и, когда число этих вхождений превышает некий порог, сообщение метится как спам. Для борьбы с hashbuster (легкого искажения содержания отдельного письма в массовой рассылке одного и того же сообщения с целью искажения контрольной суммы) используется метод нечеткой логики.
Хотя этот метод и не требует большой пропускной способности сети, но он может замедлить уже загруженный сервер. Большие организации должны организовывать локальные DCC сервера вместо использования одного мастер-сервера.
8)
DomainKeys (доменные ключи).
Этот метод используется на стороне сервера. Основан на асимметричном шифровании. Гарантирует также целостность сообщения (что оно не искажено). Посылающий сообщение почтовый сервер добавляет в его заголовок цифровую подпись тела письма. Посылающий почтовый сервер также должен добавить в заголовок письма публичный ключ (аналогичный SPF). Принимающий почтовик анализирует домен отправителя и получает его публичный ключ с помощью запроса DNS. После этого, имея публичный ключ и алгоритм шифрования, принимающий сервер может убедиться, что сообщение было послано именно из того домена и что во время пересылки сообщение не было модифицировано.
Основным недостатком является малое распространение этого метода. Хотя некоторые крупные компании, как YAHOO!, используют этот метод, он не используется очень многими серверами.