Graylisting – как метод борьбы со спамом. Общая теория.

pend Сегодня я хотел бы обсудить технологию Gralisting’а или использование «серых списков», как один из методов борьбы с потоком нежелательной почты. Долгое время эта технология оставалась для меня «черным ящиком», т.е. я знал, что получается в результате ее применения, но очень плохо представлял, как это работает в действительности. Но жизнь заставила разобраться в этом глубже, а природное любопытство помогло в процессе изучения.

Итак, что же такое – Graylisting?

Начнем с названия. Данная технология получила свое название потому, что является неким гибридом белого и черного списков с возможностью автоматического обслуживания и управления. Ключевым моментом является именно автоматическое управление списком, что делает работу этого метода прозрачной для пользователя и требующей минимум административных усилий.

Технология Graylisting предельно проста. Для ее работы необходимы всего лишь три составляющие SMTP-сессии, т.н. «триплет»:

1. IP-адрес хоста, пытающегося выполнить доставку сообщения.

2. Адрес отправителя сообщения, передаваемый в MIME-конверте

3. Адрес получателя, так же передаваемый в MIME-конверте

На основании данного триплета мы можем однозначно идентифицировать сообщение. И принцип работы Graylisting’а сводится к очень простому принципу:

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

Т.к. протокол SMTP изначально был разработан, как ненадежный метод транспорта, вероятность временных сбоев заложена в саму его спецификацию (RFC 821), на чем и базируется применение данной технологии. Любой нормальный агент передачи сообщений (Message Transfer Agent, MTA) имеет в своей архитектуре заложенное требование повторять попытки доставки сообщения при получении определенных кодов временных ошибок.

При разработке данной технологии, происходившей в 2003 году, было проведено множество тестов, в ходе которых было обнаружено, что большинство приложений, используемых для рассылки спама, были именно под эту единственную цель и разработаны. Их работа основывалась на принципе хорошего снайпера: «Один выстрел – один труп!» J Иными словами, производился пакетный выброс сообщений по адресам, которые брались списком из какой-либо спамерской базы, и задача считалась выполненной. Таким образом действует подавляющее большинство спам-ботов. Использование хотя бы одного отказа в приеме снижало долю спама на 95%. Конечно, спам – это целая индустрия, и технологии спама всегда на шаг опережают технологи борьбы с ним, поэтому вполне закономерно, что спамеры стали приспосабливаться к такому поведению своих жертв. Но Graylisting никогда и не позиционировался, как самостоятельное средство борьбы со спамом. Основная его цель – снизить потребление ресурсов принимающего сервера, затрачиваемое на обработку входящего потока различными контентными фильтрами, перенести боевые действия на сторону спамера, сделать спам более дорогостоящим занятием.

Почему именно так и происходит? Разберем пример обычной SMTP-сессии. Итак при попытке передачи сообщения при помощи MTA, происходит следующий обмен данными:

-> HELO somedomain.com

<- 250 Hello somedomain.com

-> MAIL FROM: <sender@somedomain.com>

 

<- 250 2.1.0 Sender ok

-> RCPT TO: <recipient@otherdomain.com>

 

<- 250 2.1.5 Recipient ok

-> DATA

<- 354 Enter mail

<- 250 2.0.0 Message accepted for delivery

Понятно, что на этапе установки SMTP-сессии можно провести массу проверок, как то проверка по DNS SBL\RBL, проверку Reverse DNS Lookup, проверка на блокировку отправителя\получателя по Custom Blacklist\Whitelist. Ну а если спамер новенький? Письмо пройдет, а зачастую письма могут быть очень серьезных объемов из-за обилия графической информации, различных вложений, а зачастую и вирусов, и лишь после полного прохождения в дело вступят интеллектуальные контентные фильтры. Что мы имеем? Мы имеем гигантский трафик, мы имеем значительную ресурсоемкость приложений контентной фильтрации, и даже можем получить остановку почтового потока. Что в данной ситуации делает Graylisting?

Если сообщение от данного пользователя данному получателю приходит впервые – SMTP-сессия до обидного коротка:

-> MAIL FROM: <sender@somedomain.com>

 

<- 250 2.1.0 Sender ok

-> RCPT TO: <recipient@otherdomain.com>

<- 451 4.7.1 Please try again later

Т.к в течение столь короткой сессии получены все необходимые данные для формирования триплета, и, как следствие, идентификации сообщения. Что, естественно, приведет к минимизации почтового трафика, т.к. сессия обрывается в самом ее начале, минуя этап передачи собственно данных. Технология хранения триплетов тоже относительно проста. Неважно, будет ли это файл в локальной системе, либо какая-то база данных, возможно удаленная, для успешной работы Graylisting’а необходимо хранить следующие данные триплета:

1. Время, когда данный триплет был получен впервые (record create time)

2. Время прекращения блокировки данного триплета (block expiried time)

3. Время жизни записи (record age time)

4. Время последнего вхождения данного триплета (last entry time)

Дополнительно может храниться информация об общем количестве отложенных сессий и о количестве сессий, прошедших успешную передачу.

Если в течение времени жизни записи сообщений с данным триплетом получено не будет, запись будет удалена из хранилища, и последующее письмо с данным триплетом будет проходить полный цикл обработки.

В технологии Graylisting’а, одним из очень частых методов является ручное составление белых списков. Это часто используется для ускорения доставки писем от важных отправителей, от доверенных доменов, от надежных ретрансляторов.

Технология белых списков основана на абсолютном доверии доменному суффиксу, либо IP-адресу сервера, выполняющего отправку, либо конкретному отправителю. Этот метод тоже имеет свои недостатки, например при помощи подмены адреса, спамер может теоретически обойти Graylisting используя белые списки. Но на это есть другие проверки, о чем речь не в этой статье.

Итак, как же будет выглядеть полная картина проверки почтовых сообщений в системе, использующей технологию Graylisting:

1. Проверка по белому листу IP-адреса сервера-отправителя, если сервер в белом списке – письмо принимается.

2. Проверка адреса отправителя по белому листу – если адрес в нем присутствует – письмо принимается.

3. Проверка адреса получателя по белому списку – если он там имеется, письмо принимается. (А что, есть общительные люди, горящие желанием принимать абсолютно всю почту, и с наслаждением в ней копаться. Чужие слабости надо уважать)

4. Проверка триплета на вхождение:

4.1. Если это первое вхождение, создается запись в базу\файл данных со штампом RCT (record create time), запускается счетчик BET (block expiried time) и отправляющему серверу отправляется код ошибки 451 4.7.1.

4.2. Если это не первое вхождение триплета, но счетчик BET еще не обнулился, отправляющему серверу уходит код ошибки 451 4.7.1., в базе создается запись со штампом last entry time

4.3. Если это не первое вхождение, счетчик BET равен нулю, письмо принимается сервером. Запись last entry time обновляется

5. При успешном прохождении добавляется единица к счетчику успешных попыток передачи, и время жизни записи сбрасывается на исходное значение.

6. Если поле MAIL FROM имеет значение null, что классифицируется как message with blank sender, после команды RCPT TO временная ошибка не отправляется, но она отправляется после команды DATA.

Существует множество имплементаций данной технологии с использованием комбинаций других технологий, это может быть и использование DNS RBL, и автоматическое обучение фильтра путем заполнения белого списка по исходящей почте, и использование информации SPF, и многое многое другое. Моя цель – познакомить с принципом работы этой, набирающей популярность, технологии. А уж достиг я ее или нет, судить никак не мне.

Заключение:

Graylist – не панацея, как и любой другой спам-фильтр. Оборона должна быть эшелонированной. Включать в себя множество проверок, и, как следствие, задействовать подчас очень серьезные ресурсы. Мое личное мнение на этот счет: учитывая развитие спам-индустрии, учитывая оборот денежных средств, получаемых от ее использования специализирующимися на массовых рассылках компаниями, нас ждет все более изощренный подход к этому богомерзкому делу. Бороться в одиночку с целой индустрией – не вариант. Один в поле не воин. Поэтому я считаю, что будущее в деле борьбы со спамом принадлежит онлайн-сервисам, вроде небезызвестных Exchange Hosted Services, Kaspersky Hosted Security и им подобных. Профессионалу должен противодействовать профессионал, команде – команда.

Но для небольших компаний, не имеющих средств и возможностей на использование онлайн-сервисов, не имеющих острой нужды, а главное целесообразности в построении дорогостоящих эшелонированных решений, технология Graylisting’a является спасительным решением. При минимальной стоимости, простоте в обслуживании, экономичности, она способна обеспечить приемлемую эффективность.

P.S. В дальнейшем я планирую развить тему спама и борьбы с ним в серию статей с достаточно глубоким погружением в предмет. В самом ближайшем будущем я планирую рассказать о ярком, если не сказать ярчайшем представителе воплощений технологии Graylisting’а. Название пока в секрете :) А теперь с нетерпением буду ждать отзывов, комментарием, конструктивной критики и пожеланий. Спасибо за время, потраченное на прочтение сего опуса :)

Реклама
Graylisting – как метод борьбы со спамом. Общая теория.

Graylisting – как метод борьбы со спамом. Общая теория.: 13 комментариев

  1. Delirium:

    Ну что сказать… Как всегда, на высшем уровне :) Молодец, Олег, всегда приятно читать статьи, написанные грамотным человеком :) С нетерпением ждем статьи о представителе Graylisting. :)

  2. zorion:

    Пришлось открывать статью чтобы написать тебе комментарий, а то вдруг решишь не писать дальше :)
    Пиши, всем будет полезно.

  3. По придираюсь немного.

    «На основании данного триплета мы можем однозначно идентифицировать сообщение» нифига не можем. В больших системах может быть много отправляющих серверов на разных IP. В случае отбоя 471 сервер может послать след. раз письмо с другого IP и будет опять все сначала.

    «SMTP изначально был разработан, как ненадежный метод транспорта,» не совсем корректное слово. SMTP как раз очень надежен, это скорее протокол не гарантированной доставки.

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

    Далеко не все серверы пытаются отослать 3 раза письмо и доставлять двое суток потом :-)

    Не все серверы 471 воспринимают как временную ошибку.

    Плюс greylist защищает от спам рассылок, но не от сломанных открытых релеев. Эти доставят спам корректно.

    В общем проблем хватает и это не панацея. Для мелких контор — отличное решение, для крупных — не вариант :-)

    А вообще хорошо написано.

    Вот тут я писал о проблемах грейлиста:

    http://www.exchangerus.ru/2008/05/05/ndr-i-471-smtp451-471-temporarily-rejected-try-again-later/

    http://www.exchangerus.ru/2007/04/04/exchange-i-451471greylistinginactionpleasecomebackin000500/

  4. Олег, http://www.exchangerus.ru/2008/12/11/vojna-mezhdu-dnsblgreylisting-i-callback-verification-prodolzhaetsya/ — вот это вот у Паши Нагаева читал? =) Небольшой булыжничек в огород грейлистинга. К слову, у меня примерно 50% спама отсекаетлся фильтром HELO-заголовка, ещё 45% DNSBL. Особого смысла в использовании Greylisting’a в конкретно моей ситуации я не вижу, так как при значительном усложнении системы я получаю относительно небольшое увеличение процента срезаемого спама.

  5. Олег Крылов:

    :D Парни, Вы такие смешные. Я не говорю, что Graylist — панацея от всего и вся. Это всего лишь один из способов, принцип работы которого я и хотел объяснить. Стас, 95% это очень низкий показатель эффективности, на самом деле.
    Паша, ну я все это прекрасно понимаю, и не говорю, что это универсальное средство. Но! Для небольших предприятий, сидящих на Exchange 2003, где кроме страшненького IMF ничего нет, нет денег на самый примитивный фильтр — Graylist — спасение. Даже ты в своей очень серьезной сети используешь Graylist, признайся? ;)
    Проблем с работой Graylist немало. Описывать их не посчитал нужным, но вот ссылки на тебя дать забыл :) К тому же тема «Общая теория» всего лишь призвана раскрыть механизм. А конкретные имплементации и их проблемы тема отдельного поста.
    По поводу однозначной идентификации сообщения согласен с тобой полностью. И это одна из проблем.
    По поводу ситуации, когда MTA не использует повторную доставку — нарушение RFC, и теоретически можно игнорить таких умельцев.

  6. Олег Крылов:

    >еще из минусов грейлиста — если у тебя несколько входящих MX, да еще и у разных провайдеров, то база синхронизироваться не будет, а значит будут более долгие задержки при приеме писем.

    Жди следующего поста :)

  7. Олег, дело в том, что передо мной стоит задача снизить до минимума процент ложных срабатываний антиспама, а уже потом снизить количество спама. Так что для задачи, поставленной в таком виде нормальный процент. к тому же я сказал ориантировочно. На разных принимающих серверах этот процент доходит до 99%.

  8. Стас, «50% спама отсекаетлся фильтром HELO-заголовка», странно, надо у себя проверить. Я как-то смотрел и у меня отложилось в памяти, что именно эта проверка ничтожна.

  9. Паш, я использую регулярные выражения для анализа HELO-заголовков. В основном это их заслуга. У людей анализатор HELO режет до 90% процентов соединений… =) Так что у меня ещё мало.

  10. Vasy:

    Технология грейлистинга впринципе как и любой нож… может быть использованна по разному. Она ЯВНО эфективнее черных листов, место которых в анале истории. По поводу «нет денег на хостед секьюрите»

    Как не странно в МС мне не платят, я не их сертифицированный спец, но на сколько надо быть ЖАДНОЙ конторой чтобы не потртатить 45 РУБЛЕЙ на защиту от спама в месяц. Итого год 540рублей. Например для 20 человек это 10800. Это явно дешевли чем брать даже «самую самую десктопную машинку» ставить на нее никсы звать человека (само собой не бесплатно) чтобы он все настроил. Если вариант с виндами.. то цены на ОС можем добавить =)) Просто проблема в том, что русские решения типо тогоже свинореза, ой спамореза необоснованно дороги. Касперский как то слабо рекламиться, МС орентируеться на запад как и мессадж лабс, еще пара русских вендоров тоже с неадекватными ценами. Но ведь цена полтора бакса за ящик… она в рачете на 3 года явно выгоднее чем свой почтовый сервер.

  11. Vasy:

    зЫ =) полтора бакса это у МС у мессадж лабс вроде примерно так же плис интерфейс вроде етсь руский, сам юзал мсовское решение, есть свои минусы… но плюсы превалировали

  12. Олег Крылов:

    >Как не странно в МС мне не платят, я не их сертифицированный спец
    А я их сертифицированный спец, и даже, с недавних пор MVP. Мне тоже не платят. Хотя очень многие думают иначе.
    >Это явно дешевли чем брать даже «самую самую десктопную машинку» ставить на нее никсы звать человека (само собой не бесплатно) чтобы он все настроил. Если вариант с виндами.. то цены на ОС можем добавить =))
    Тут менталитет отрабатывает. Как это, почту будет кто-то читать\проверять? Нельзя. А то, что пакеты SMTP гонятся в открытом виде, тупо текстом — этого никто не учитывает.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s