После того как мне окончательно надоел спам минующий DNSBL и блокировки по контенту, я написал небольшой скрипт, описание которого привожу ниже (там резюмированы общие методы боорьбы со спамом, жду комментариев). Например, за сегодняшнюю ночь было заблокировано 1259 адресов пересылающих спам, ложных блокировок я не обнаружил. Сам скрипт пока тестирую, сегодня завтра выложу для общего пользования.
========================================================================
Система адаптивного блокирования спама после первого факта рассылки.
Copyright (c) 2003 by Maxim Chirkov <mc@tyumen.ru>
Внимание !!! Используемая технология является вероятностной, основанной
на совокупности субъективных факторов. Система не гарантирует полное
отсутствие ложных блокировок (так же как и любая другая антиспам
система, будь то DNSBL списки или контекстные фильтры).
Используйте только на свой страх и риск, никаких гарантий не предоставляется.
==============================================================================
Общий обзор технологий борьбы со спамом
Методы определения спама:
1.1. Блокировка по сигнатурам (IP адресам, доменам, email'ам, фрагментам
спама);
1.2. Адаптивные методы (статистический и вероятностный анализ для выявления
аномалий).
Области данных на основании которой делается вывод о присутствии спама:
2.1. Анализ IP хоста отправителя;
2.2. Анализ email отправителя и получателя;
2.3. Анализ заголовка письма;
2.4. Анализ тела письма.
Этапы на которых производится определение:
3.1. На этапе соединения с почтовым сервером (по IP и данным в "HELO",
"RCPT TO" и "MAIL FROM");
3.2. В момент передачи данных после "DATA", но до завершения сеанса;
3.2. После получения тела письма, но перед передачей локальному агенту для
доставки в ящик (фильтры по заголовку и телу, контекстный анализ);
3.3. Через некоторое время после доставки пользователю (задача блокировать
пересылку данного спама в будущем и для других пользователей).
Например, следующие конструкции в postfix позволяют отсеять письма с заведомо
несуществующих доменов и несуществующим адресатам, а также хосты предоставившие
неправдоподобную информацию на этапе HELO:
smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domainsmtpd_recipient_restrictions = reject_non_fqdn_recipient reject_unknown_recipient_domain, check_relay_domains
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname
Цели блокирования спама:
4.1. Избавление от нежелательной рекламной корреспонденции,
экономия трафика, времени и денег пользователя (конечный пользователь
платит за получение спама);
4.2. Экономия трафика для провайдера (спам создает значительный паразитный
трафик, если блокировать спам после его получения на почтовый сервер,
то издержки за получение спама ложаться на провайдера);
4.3. Избавление от паразитной нагрузки на почтовый сервер, как результат -
задержка отправления и приема нормальной корреспонденции (если спам
блокируется после его получения, то отправка "bounce" сообщений на
неотвечающие хосты может образовывать почтовую очередь в тысячи писем).
Средства рассылки спама:
5.1. Открытые почтовые релеи (не так часто появляются и не так просто найти, быстро блокируются, обилие DSBL списков блокировки);
5.2. Открытые прокси (http, socks, см 5.1);
5.3. Взлом cgi-скриптов (formmail, см 5.1);
5.4. Рассылка через dial-up анонимно подключившись по карточке (большая
рассылка не эффективна, DUL списки блокировки в сети, злоумышленник
при желании легко вычисляется провайдером через АОН);
5.5. Взлом пользовательских машин подключенных через высокоскоростные каналы к сети (рассылка троянских программ, использование типовых уязвимостей)
(слишком динамично появляются новые хосты для рассылки, невероятно большое
число пользователей не заботятся о безопасности, высокоскоростные каналы
доступа позволяют рассылать спам в огромных объемах за короткий промежуток
времени).
Справка: Открытые релеи не только плод неправильной конфигурации почтового сервера,
например, был случай когда клиент не утруждая себя установкой почтового
сервера настроил прямой редирект на SMTP сервер провайдера, никак не ограничив
к нему доступ. Запросы через этот прокси-редирект для провайдера выглядели
как IP клиента для которого релееинг почты был открыт.
Такие методы, как контекстный анализ сообщения, будь то сложными статистическими
методами или просто по regex маскам, приводится к тому что письмо определяется
как спам и блокируется, но пропускается на сервер перед анализом, т.е. возникает
паразитный трафик и нагрузка, задача экономии трафика не решается, наоборот
возникает дополнительный трафик из-за попыток отправить сообщение о невозможности
доставки письма адресату, на, как правило, несуществующий или неотвечающий хост.
Pешения вида блокирования по *BL спискам или хостам и email отправителей,
лишь частично решаются проблему, слишком динамично спамеры обнаруживают
новые машины-жертвы. Блокировка по существующим DNSBL спискам
охватывает как правило англоязычный спам, русские спамеры перешли на рассылку
через взлом машин имеющих xDSL соединение, как правило ежедневно появляется
тысячи новых точек распространения спама. DNSBL отлично справляются с 5.1, 5.2,
5.3 и 5.4. Для блокирования 5.5 нужна более оперативная реакция.
==============================================================================
Описание реализованного метода борьбы со спамом.
Предлагаемая система является адаптивной системой использующей для определенияспамера только IP хоста отправителя из лог файла. Анализ производится по трем
параметрам:
- обратная проверка типовых взламываемых открытых потов;
- интенсивность рассылки;
- анализ имени хоста.
За счет частичного пропуска первой волны spam сообщений нескольким
адресатам, можно достаточно быстро заблокировать дальнейшее
распространение спама с начавшего рассылку хоста. Т.е. используется
система динамической обратной проверки хостов подозреваемых на спам.
Проверяются не все хосты отправители, а только хосты осуществляющие
массовую пересылку нескольким адресатам.
Система наиболее эффективна лишь на хостах с достаточно большим числом
активных почтовых ящиков (не меньше 1000-2000, сейчас используется в
двух системах с примерно 5000 и 9000 активных пользователей). Так же
рекомендуется дополнительно использовать существующие DNSBL-системы, как
первичный щит для блокирования спамеров (рекомендую: dsbl.org,
proxies.relays.monkeys.com, relays.ordb.org).
Блокирование производится на этапе подключения к серверу, при этом лишний
трафик не принимается, "bounce" письмо не отправляется. Минус - принимаются
первые несколько писем со спамом, так как проверка ведется в offline режиме,
путем периодического анализа лог-файла (раз в 5 мин.). При проверке на
этапе соединения, создавалась бы ощутимая задержка необходимая для обратной
проверки, что недопустимо. В настоящее время редко спамеры рассылают спам
для всех пользователей сразу (и тем более отправка перебором типовых имен еще большая
редкость), как правило рассылка ведется максимально приближаясь к реальному
почтовому обмену, т.е. 5 минут вполне хватает, чтобы заблокировать основной
объем спама.
Факторы анализируемые при определении спама:
- Обратная проверка на наличие открытых сетевых портов, сигнализирующих о наличии
троянских программ или потенциальных уязвимостей;
- Анализ уровня домена (спам с поддомена 5 уровня более вероятен, чем с 3,
например: bzq-218-1-51.cable.test.com).
- Учет ключевых слов сигнализирующих о неблагонадежности хоста
(например: client, dial, dsl, cable, pool, ppp);
- Интенсивность рассылки с данного хоста (чем больше отправлено сообщений
в день - тем выше вероятность блокировки).