Методы борьбы со спамом
Проблемой борьбы со спамом
сейчас озабочены все, как пользователи, так и поставщики
услуг, вплоть до AOL и других крупнейших компаний. Майкрософт
вообще обещает избавить нас всех от спама уже
меньше чем через два года .
Очевидно,
что правильнее всего бороться со спамом на стороне сервера, то
есть SMTP релэя, а не на стороне клиента, настраивая фильтры в
почтовом ридере. Выгода очевидна - экономия трафика и бОльшая
точность работы в первом случае, чем во втором.
Наиболее распространенные и простые методы борьбы со
спамом имеющиеся сегодня, вроде составления "черных" и "белых
списков", являются негибкими. Черные списки легко обходятся
сменой почтовых адресов и использованием альтернативных
серверов, а белые списки не дают принимать почту с адресов, не
разрешенных пользователем. Однако существует ряд более удачных
техник с ипользованием блэк-листов, фильтрации по user-agentу
и др. Применение специализированных пакетов типа spamassassin или spamoracle крайне рекомендуется и
неоднократно описывалось. Результатом "озабоченности"
проблемой, является возникновение все новых и новых
аналитических методов борьбы со спамом. В нашей стране тоже не
стоят на месте, убедится в этом можно на сайте http://www.antispam.ru/. А применение http://www.spamtest.ru/ позволяет однозначно
выделять спам, и что самое приятное - переложить эту задачу на
других .
Одним из
таких перспективных методов является метод "серых списков",
предложенный Эваном Гаррисом. Свое название метод получил
из-за того, что он является промежуточным между методом черных
и белых списков. Важным достоинством метода является то, что
он почти не требует вмешательства пользователя и не отнимает
больших ресурсов серверной системы. Не менее важно и то, что
система практически не имеет ложных срабатываний.
Идея
метода похожа на ряд уже имеющихся систем, которые направляют
запросы неизвестным отправителям, требуя подтвердить намерение
отправить письмо. Однако человек в этом процессе не участвует,
и все взаимодействие происходит на уровне общения MTA-агентов.
Почему это работает, как это работает, какие есть техники у
спамеров, и как с ними справляется фильтр можно прочитать по
ссылке http://projects.puremagic.com/greylisting/
Там-же можно взять сам фильтр и детали по его конфигурации.
Создание фильтра для postfix сейчас в процессе, а в настоящий
момент успешно эксплуатируется фильтр для sendmail.
Рассмотрим подробнее предлагаемую конфигурацию.
После установки фильтра, сервер выполняет следующую
цепочку передачи данных:
sendmail - libmilter -
perl_milter - perl - graylist_filter - perl_DBI - DBD_MySQL -
MySQL и обратно. Причем, если принимается решение о
необходимости доставки, могут срабатывать другие
мильтер-фильтры, например антивирусная защита. Современные
антивирусы для серверных MTA как правило сами имеют несколько
простых антиспам-фильтров, типа reject для undisclosed
recipient или mass sender. Не смотря на использование MySQL и
сложной цепочки передачи данных от MTA к базе, нагрузка на
систему и CPU очень невелика.
Оперирование
производится триплетами - IP адрес релэя, @ сендера, @
рецепиента. Когда поступет новое(по триплету) для базы письмо,
сервер говорит удаленной стороне TEMPFAIL в течение 58 минут.
То-есть письмо не доходит. По прошествии этого времени,
открывается 4-х часовое окно, в течение которого база ждет
подтверждения триплета (повторной передачи письма).
Если
триплет не подтверждается, запись удаляется из базы. То-есть
наш сервер надо уговорить принять почту. Теоретически некто,
посылающий напрямую (без релэя) на наш сервер почту раз в пять
часов (или релэй с ETRN=5ч.), может никогда ее не доставить.
Но такая ситуация почти невероятна, так-как релэи всегда
делают ретрансмиссию по таймауту, а напрямую человек (спамер)
устанет слать письма именно с такой периодичностью. Кроме
того, фильтр имеет функции проверки почтового клиента в случае
отправки напрямую. Даже если такая ситуация возникнет, есть
белый список для ее обхода.
Если триплет подтверждается
(resend or other mail), фильтр заносит триплет в белый список
на 36 дней. Разумеется, все таймауты можно изменить на свое
усмотрение.
Локальные сети прописываются в "пожизненный"
белый список. Это означает, что наши клиенты могут спамить без
проблем . То-есть почта,
отправляемая от нас, никогда не будет задерживаться.
После
запуска, база набирает валидные триплеты, по которым будут
пропускаться задержки. По ним будут проходить в том числе и
urgent-письма, не терпящие задержек. Очевидно, что врядли
кто-то будет слать urgent и больше ничего раз в два месяца.
В качестве обоснования выбранных по умолчанию
таймаутов можно назвать следующие причины:
Задержку в 58
минут не имеет смысла уменьшать потому-что:
1) Час задержки не заметит большинство пользователей и
ни один почтовый сервер. Для пользователей - это происходит
только первый раз для триплета. Далее задержек не будет. Для
серверов - инсталляции по умолчанию сконфигурированы таким
образом, что делают попытки ретрансмиссии в течение 5-7
дней! О каком часе речь?
2) Если
релэй взломан, час необходим админу для обнаружения и
решения этой проблемы. Если это сознательный спамерский
открытый релей, час необходим чтобы кто-то занес его в
блэклисты. Подчеркну, что graylisting не удаляет почту, а
только задерживает ее. То есть, если спамер будет очень
настойчивым, он таки "уговорит" наш MTA принимать спам.
То-есть мы примем рано или поздно все, что нам послали, если
оно будет посылаться с чего-то релэя вновь и вновь. Чтобы
однозначно отвергать спам, сервер должен параллельно
использовать другие техники, названные выше. Проще всего
использовать проверку по блэклистам + антивирусную защиту.
Ниже я приведу примерную конфигурацию блэклистов для
sendmail.
3) Задерживаемая почта может иметь разные
envelops в случае listservers, поэтому часовая задержка
является оптимальной для серверов подписок, т.к. это не
критичная почта. Впрочем эта ситуация редка, subscribe.ru к
ней не относится.
4) Часовая задержка необходима, чтобы
обломать спамерский софт который попытается обойти
graylisting.
5) Если ее снизить хотя-бы в два раза,
эффективность защиты упадет, а особого толку не будет. Хотя
надо признать, что основная защита осуществляется в первые
минуты, так как у спамеров в основном действует принцип -
"послал и забыл".
6) Стандартная установка sendmail и
других MTA подразумевает попытку ретрансмисии раз в час,
иногда пол-часа. Обе этих ситуации являются подавляющим
большинством в интернет. Поэтому за таймаут в 58 минут на
второй раз почта пройдет. Спамерский софт или испуганный
юзер может долбить и долбить. Час нужен чтобы охладить пыл.
Четырех-часовое окно определено опытным путем на
основе шестимесячной эксплуатации фильтра и дебатов в списке
рассылки на эту тему. Делать его бОльшим опасно, т.к. спамер
может возобновлять активность через 5-8 часов, имитируя
рабочий день. Делать его меньше - увеличится процент
задерживаемой полезной почты.
36 дневный белый список
гарантирует прохождение почты, которая идет один раз в месяц,
с запасом. При этом удаляются старинные записи, что
обеспечивает ротацию базы. Повторю, что пока почта по триплету
идет, запись в базе обновляется и висит в белом списке без
удаления. Удаляются только записи о том, что почта прошла по
триплету пару раз и уже больше месяца не ходит, и устаревшие
not whitelisted записи.
Анализ эффективности по
результатам тестирования в течение 6 недель, приведенный в
статье, утверждает, что было задержено только 4% полезной
корреспонденции, не считая списков рассылок. Конечно, основная
их масса приходится на начало формирования базы валидных
триплетов, т.е. сразу после ее запуска. В течение некоторого
короткого времени она начнет содержать только актуальные
триплеты, и новые задержки будут происходить редко. Там-же
приводятся очень впечатляющие цифры экономии трафика.
Можно по крону освобождаеть базу от expired records и
оптимизировать ее. В процессе оптимизации создается копия
рабочей таблицы. Если фильтр не запущен, сендмэил благополучно
его не замечает. Если фильтр не видит MySQL, он _всем_
рассылает TEMPFAIL. Поэтому надо мониторить жизнедеятельность
базы. Файл dbdef.sql не используется, однако он описывает
структуру базы, некоторые интересные запросы к ней и процедуру
добавления в белый лист. Добавлять в белый список следует в
случае, когда клиент обратится с конкретной просьбой на
конкретный релэй или почтовый адрес. Если он незнает чего
хочет - можно разъяснить политику защиты от спама, предложить
просто подождать, пообещать что такого больше не будет,
сослаться на проблемы в сети
, предложить не
пользоваться нашим сервером, придумать другие варианты.
Наконец, чтобы добавить поддержку блэклистов в
сэндмэил:
1) добавляем следующие строки в sendmail.mc:
Код: |
FEATURE(`dnsbl', `dul.ru', `550 Use
mail relays of your ISP')dnl FEATURE(`dnsbl',
`dialups.mail-abuse.org',`550 Mail from
$&{client_addr} rejected; see
http://mail-abuse.org/dul/enduser.htm')dnl
FEATURE(`dnsbl', `blackholes.mail-abuse.org',`550
Mail from $&{client_addr} rejected; see
http://mail-abuse.org/cgi-bin/lookup?$&{client_addr}')dnl
FEATURE(`dnsbl', `relays.mail-abuse.org',`550 Mail
from $&{client_addr} rejected; see
http://work-rss.mail-abuse.org/cgi-bin/nph-rss?$&{client_addr}')dnl
FEATURE(`dnsbl', `list.dsbl.org',`550 Mail from
$&{client_addr} rejected; see
http://dsbl.org/listing.php?$&{client_addr}')dnl
FEATURE(`dnsbl', `multihop.dsbl.org',`550 Mail
from $&{client_addr} rejected; see
http://dsbl.org/listing.php$&{client_addr}')dnl
FEATURE(`dnsbl', `unconfirmed.dsbl.org',`550 Mail
from $&{client_addr} rejected; see
http://dsbl.org/listing.php?$&{client_addr}')dnl
FEATURE(`dnsbl', `relays.ordb.org', `550 Rejected
- see http://ordb.org/')dnl FEATURE(`enhdnsbl',
`bl.spamcop.net', `"Spam blocked see:
http://spamcop.net/bl.shtml?"$&{client_addr}')dnl
|
2)
говорим # m4 sendmail.mc >sendmail.cf
3) kill -s HUP
`head -1 /var/run/sendmail/sendmail.pid`
4) вуаля, tail
-f /var/log/maillog и смотрим как все крутится
Лукапы
баз по этим спискам (посмотреть-проверить хост), в порядке их
следования в конфиге:
http://www.dul.ru/cgi-bin/search.cgi
(здесь можно почти никогда не проверять)
http://mail-abuse.org/cgi-bin/lookup
http://work-rss.mail-abuse.org/cgi-bin/nph-rss
http://dsbl.org/listing.php
http://ordb.org/lookup
http://spamcop.net/bl.shtml
Ремувальные
системы (удалить хост, если он нашелся в базе) в том-же
порядке:
1) Из DULа не удаляют, а скорее заносят. Это списки
диалапных пулов провайдеров, и любое писльмо остановленное
этим сервисом однозначно СПАМ, то-же касается DULа MAPSа.
2) Вторая ссылка - черные списки MAPSа. Оттуда убрать
сложно, но можно http://mail-abuse.org/rbl/removal.html
3) Треттья - база открытых релеев MAPSa. Ремувалка (на
4-м шаге) - http://work-rss.mail-abuse.org/rss/howtofix.html
4) DSBL удаляет за сутки после короткой переписки - http://dsbl.org/removalquery
5) У
русских (ORDB) этот срок чуть длиннее - http://ordb.org/removal. Но и система у
них навороченная.
6) У старого-доброго спамкопа вообще
достаточно по ссылкам из письма покликать. И даже если
ничего не делать, а просто заткнуть дырку, он сам убирает из
базы адрес через 48 часов. Детально - http://spamcop.net/fom-serve/cache/298.html.
В двух словах: по релеям используется ORDB (предыдущая
ссылка), а по жалобам, когда их нет - 48 часов
выдержки.
Фильтрацию на стороне клиента можно строить
на уровне procmail и других фильтров, что также неоднократно
описывалось, а также, к примеру, применяя распределенную базу
razor. Использование razor показывает очень неплохие
результаты. Детали по настройке, возможностям и конфигурации -
http://razor.sourceforge.net/
Не
забываем также о существовании административных мер при борьбе
со спамом, которые могут применятся как против самих спамеров
так и их сетей на стороне провайдера. Обычно при этом выясняют
адрес relay-server из заголовка письма, далее делают whois на
этот адрес, и связываются с провайдером спамера.
Успехов в борьбе со спамом!
P. S. Нашлось немало людей,
которых испугал сам факт возможной задержки письма, который
может произойти только в начале обмена почтой. Напомню, что
это только около 4-х процентов. Так вот таким людям надо
вообще не пользоваться почтой, особенно если она проходит
через множество релэев. Мало-ли кто-где в сети будет с ней
что-то делать. Просматривать там, дропать, выдирать из
заголовков адреса для спамерских баз, или еще чего хуже.
Господа, пользуйтесь телефонами и icq lol
Автор: Andy Gorev, Минск