170 likes | 388 Views
SpamAssassin: опыт эксплуатации. Алексей Тутубалин lexa@lexa.ru «Ашманов и Партнеры». Где происходила эксплуатация :. Lexa.ru – персональный домен (зарегистрирован в 1996 г.).
E N D
SpamAssassin:опыт эксплуатации Алексей Тутубалинlexa@lexa.ru «Ашманов и Партнеры»
Где происходила эксплуатация: • Lexa.ru – персональный домен (зарегистрирован в 1996 г.). • Адрес lexa@lexa.ruобщеизвестен, широко опубликован, используется в форумах, на сайтах и в новостях в течение 8 лет. • 600-1000 спам - сообщений (и 300-500 вирусов) в сутки. • Очень разнообразная «нормальная почта», разные языки, разные темы, 100-300 сообщений в сутки. • Классические методы (RBL, черные списки, простые контентные фильтры) – неэффективны. • С весны 2002 года используется SpamAssassin, результаты работы которого внимательно изучаются.
SpamAssassin: особенности • Общая идея: множество проверок для каждого сообщения, обойти сразу много проверок спамерам трудно. • Общее количество правил на сегодня:>800 • Написан на Perl, легко расширяем • FreeWare, OpenSource, лицензия Apache (начиная с v3.0)
Что анализируется в правилах • Заголовки сообщения (анализируются регулярными выражениями или отдельной подпрограммой): • Набор заголовков, их содержание (признаки spamware) • Правила по DNS (RBL, SPF) • Тело сообщения: • Правила по нераспакованному тексту сообщения. Правила по тексту (ключевые слова, особенности оформления, признаки spamware). • Вероятностные правила. • Проверки текста сетевыми сервисами (Razor, DCC, URI-DNSBL).
Три типа правил • «Локальные» - проверки текста и заголовков сообщений (текст, оформление, структура письма). • «Вероятностные» - сравнение с базой данных по частотностям слов (подсчет вероятностей по 2). • «Сетевые» - обращение к сетевым сервисам (RBL/DNSBL, URI-DNSBL, Razor, DCC, Pyzor)
Примеры правил • Проверка RBL header RCVD_IN_CBLrbleval:check_rbl('CBL', cbl.abuseat.org.') describe RCVD_IN_CBL Received via a relay in cbl.abuseat.org tflags RCVD_IN_CBL net score RCVD_IN_CBL 1.2 • Проверка заголовка header NO_REAL_NAME From =~ /^["\s]*\<?\S+\@\S+\>?\s*$/ describe NO_REAL_NAME From: does not include a real name score NO_REAL_NAME 0.124 0.178 0.336 0.007 • Проверка текста письма body MILLION_EMAIL /million (?:\w+ )?(?:e-?mail )?addresses/i describe MILLION_EMAIL Get a million email addresses score MILLION_EMAIL 0.093 0.417 0.937 0.000
Подсчет результата • Каждое правило имеет свой вес (может быть несколько весов, выбираемых в разных режимах использования). • Стандартные («дистрибутивные») веса правил рассчитываются по подборкам писем авторами SpamAssassin. • Вес правила может быть переопределен администратором или пользователем. • Результатработы – арифметическая сумма весов сработавших правил – сравнивается с порогом. • Порог «спама» может быть переопределен администратором (для системы) или пользователем (для себя лично).
Дополнительные возможности • Черные/белые списки. • Возможность задать желаемые языки и кодовые страницы сообщений. • Хранение «истории» для каждого отправителя – SA запоминает и использует вероятность получения спама от данного отправителя. • Самообучение вероятностного механизма. • Механизм расширения, позволяющий добавить новые методы распознавания.
Идеальное решение ? Не вполне! • Опыт использования версий 2.x в целом позитивный, НО: • «Дистрибутивная» конфигурация требует переопределения весов многих правил, без этого – много ложных срабатываний. • Вероятностные методы склонны к «излишнему обучению», после чего их качество резко падает, за этим нужно постоянно следить. • После приложения заметных усилийпо настройке, ложные срабатывания все равно присутствуют (около 0.1%) • Качество фильтрации спама – 75-85%
SpamAssassin 3.0: Качество работы • Качество работы версии 3.0 заметно лучшечем у версий 2.x, в первую очередь за счет отсутствия ложных срабатываний: • Уровень распознавания спама 75-91% • Ложных срабатываний за время тестирования не было • Для ликвидации ложных срабатываний: • Необходима дополнительная настройка. • При использовании вероятностных методов – нужна аккуратность при обучении.
Качество работы подробно (1) • Методика: запуск SA дважды • На всю почту: запуск без использования сетевых сервисов (RBL, URI-DNSBL, DCC, Razor). • Для нераспознанных на первом этапе писем – запуск с сетевыми проверками. • Результат: • Локальными методами определяется 70-85% спама. • Сетевые проверки дают 4-6% прироста качества распознавания.
Качество работы подробно (2) • Трехшаговый тест: • Локальные правила • Локальные + вероятностные • Локальные + вероятностные + сетевые • Результат: • 70-85% распознавания • +5% к варианту 1 • +~0.5% к варианту 2 • Расхождения двух вариантов тестирования качества определяются разными весами правил в разных режимах использования (при отключении части правил, остальные получают больший вес)
Недостатки SpamAssassin 3.0 • Требовательность к ресурсам • Низкая скорость работы(запуск из командной строки/«клиент-сервер», тестировалось на P3-1000Mhz) • 0.2/0.25 письма/сек. при включенных сетевых проверках • 0.4/2.2 письма/сек. – локальные + вероятностные правила • 0.5/3.6 письма/сек. – только локальные правила • Высокий расход RAM: 30-36Mb на процесс • При хранении данных в SQL – дополнительное падение производительности (особенно в режиме обучения).
Недостатки (продолжение) • Вероятностные методы: • требуют качественного обучения. • Для каждого потока почты (пользователя) требуется отдельное обучение. • Польза от самообучения сомнительна: • При стандартных настройках обучение спаму происходит на сообщениях, которые и так распознаются с огромным запасом. • При снижении порога самообучения – растет возможность обучения по ложным срабатываниям. • Большое количество правил затрудняет настройку. • SA не имеет доступа к данным SMTP-сессии и «угадывает» их из заголовков сообщения.
Выводы и рекомендации • Несмотря на ряд недостатков, использование SA для не очень больших потоков почты вполне возможно. • При возникновении проблем с производительностью уместна «двухступенчатая» схема: • Сначала «локальные» проверки • Для прошедших первую стадию писем – сетевые (или сетевые+вероятностные) проверки • При использовании вероятностных методов необходима аккуратность на стадии обучения
Рекомендации по настройке • Во всех случаях: • Переопределить (в 0) веса правил, дающих ложные срабатывания на письмах c русским текстом (HEAD/FROM/SUBJ_ILLEGAL_CHARS, BODY_8BITS) • Указать в списке языков русский (ok_languages,ok_locales ru) • Настроить белый список (общий или отдельный для каждого пользователя) • При использовании вероятностного метода • При обучении использовать тщательно проверенные подборки писем, ошибочное попадание «спама» в «хорошие» может сильно испортить результат обучения. • Подборки должны быть индивидуальными для получателей. • Не стоит учить на слишком больших объемах спама. • Использование самообучения (autolearn) может привести к резкому ухудшению качества в некоторый момент.
Спасибо за внимание Пожалуйста, задавайте вопросы