Журнал LinuxFormat - перейти на главную

LXF103:Спам не пройдет

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление, иллюстрация)
 
(=Отчет о почте домена (41 почтовый ящик))
 
Строка 189: Строка 189:
 
поведение. Какое из двух зол меньше – решайте сами. '''LXF'''
 
поведение. Какое из двух зол меньше – решайте сами. '''LXF'''
  
===Отчет о почте домена (41 почтовый ящик)==
+
===Отчет о почте домена (41 почтовый ящик)===
  
 
[[Изображение:LXF103_75_1.jpg]]
 
[[Изображение:LXF103_75_1.jpg]]

Текущая версия на 13:09, 17 апреля 2009

Миграция из Windows в Linux Меняем «прописку» без лишних проблем

Содержание

[править] Sendmail без спама

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

В самом конце 90-х годов прошлого века, когда я завел свой первый почтовый ящик, рекламные сообщения в количестве 3-4 штук в месяц, причем преимущественно на английском языке, даже забавляли. Но в наше время, когда объем рекламы, рассылаемой по каналам электронной почты, превысил все разумные пределы, необходимо как-то защищаться от потока ненужной корреспонденции.

Чтобы победить врага, как известно, надо его познать. Как рассылается спам? Раньше (примерно лет 7–10 назад) наиболее популярным способом было использование «дыр» в настройках почтовых служб, принимавших к отправке письма от кого угодно (такой сервер называется «открытым ретранслятором» или «open relay»). Сейчас эту «лавочку» практически прикрыли – в конфигурациях всех почтовых демоноа ретрансляция сообщений по умолчанию отключена, информация о защите сервера от использования в качестве узла для рассылки очень доступна и понятна.

Затем стало популярным рассылать спам со своего домашнего или офисного компьютера, используя локальный SMTP-сервер; однако, большинство провайдеров отслеживает нетипичную активность в сети и реагирует на нее блокировкой. Частая отправка писем обычным домашним пользователем смотрится неправдоподобно, особенно если поток почты идет продолжительное время. С такими рассылками можно очень эффективно бороться с помощью механизма «черный список», в который заносятся уличенные в рассылке спама хосты.

Так как оба перечисленных способа практически ушли в прошлое, для рассылки спама потребовалось новое средство. Все мы помним вирусные эпидемии, которые оценили и люди более прагматичные, чем обычные вирусописатели «для души». Были созданы черви и вирусы, позволяющие управлять зараженным компьютером в своих целях. Авторы червей контролируют скомпрометированные системы, что позволяет отсылать спам даже более массово, чем с использованием прежних технологий; благодаря огромному количеству подконтрольных компьютеров отправка сообщений с каждого отдельного хоста не такая частая, почти в пределах нормальной активности, и вызывает меньше подозрений у провайдера. Такие подконтрольные компьютеры (а их могут быть многие тысячи) называют «зомбированными». Черные списки против них работают плохо, так для отправки сообщения как каждый раз можно выбирать новый компьютер-зомби, а просмотр огромных черных списков еще и перегружает почтовый сервер.

[править] Зомби не пройдут

Однако, если внимательно посмотреть на имена компьютеров-зомби, станет примерно понятно, как можно «перекрыть им кислород» – следует отказать в соединении IP-адресам, выдаваемым из динамических пулов; также следует заблокировать чрезмерно длинные домены, скажем, 4-го уровня и выше, которые обычно выдаются бесплатно, и потерять их пользователям совершенно не жаль. Т.е. следует попытаться ограничиться доменными именами, зарегистрированными в установленном порядке и имеющими внятное «произношение». Те, кому следует отказать в праве передавать почту, выглядят так:

125-25-133-146.adsl.totbb.net
adsl-dynamic-pool-xxx.fpt.vn
bb121-7-204-57.singnet.com.sg
pool-72-88-230-252.nwrknj.east.verizon.net

Чтобы закрыться от зомби, добавьте к вашей почтовой системе фильтр, позволяющий выделить таких отправителей и отказать им в обслуживании. Например, для sendmail можно взять smf-zombie, доступный по адресу http://smfs.sourceforge.net/smf-zombie.html.

Загрузите исходные тексты с указанного выше сайта (архив с программой smf-zombie-1.2.1.tar.gz занимает около 13 КБ) и распакуйте его, скажем, в ~/smf-zombie-1.2.1. Не помешает также прочитать сопроводительную документацию. После этого отредактируйте файл smf-config.h в соответствии с вашими требованиями – введите IP-адреса локальной сети и имя домена или доменов вашей почтовой системы (они задаются расширенными регулярными выражениями):

#define WHITE_LIST «(^127\\.0\\.0\\.1$|^192\\.168\\.[0-9]+\\.[0-9]+$)»
#define FAKE_HELO «(^domain1\\.tld$|^domain2\\.tld$)»

После правок наберите команду make, чтобы скомпилировать фильтр. Затем выполните от имени root скрипт install.sh – он создаст в вашей системе непривилегированного и группу, от имени которых будет работать smf-zombie (по умолчанию, smfs:smfs). Наконец, установите фильтр командой make install (также от имени суперпользователя). Если все пройдет гладко, исполняемый файл можно будет найти в каталоге /usr/local/sbin.

Наконец, выберите в каталоге init скрипт запуска для вашей системы и поместите его в /etc/init.d. Мне подошел smfzombie.redhat, который я сохранил как /etc/init.d/smfzombie, для краткости.

Настало время настроить взаимодействие с sendmail. Аккуратно поправьте файл sendmail.cf, внеся в него следующую строку:

 Xzombie, S=local: /var/run/smfs/smf-zombie.sock, F=, T=S:4m;R:4m

Не забудьте также указать zombie в списке InputMailFilters (ненужные имена фильтров можно убрать).

InputMailFilters=clamav,milt,zombie

Теперь запустите фильтр:

 /etc/init.d/smfzombie start

При этом в каталоге /var/run/smfs должен появиться сокет:

ls -al /var/run/smfs
итого 8
drwx------ 2 smfs root              4096 Ноя 28 17:53 .
drwxr-xr-x 13 root root             4096 Ноя 28 17:46 ..
srw------- 1 smfs smfs                0 Ноя 28 17:53 smf-zombie.sock

Если все прошло, как надо, перезапустите sendmail:

 /etc/init.d/sendmail restart

Отсутствие сообщений об ошибках вроде

WARNING: Xspamassassin: local socket name /var/run/spamass-milter.sock missing

означает, что sendmail и фильтры начали взаимодействовать. Это будет заметно по количеству прошедшего спама и журналам (в моей системе это файл /var/log/maillog). Перед перезапуском sendmail не забудьте запустить другие фильтры и антивирусы, если они используются.

[править] Ночью все кошки серы

Есть и другая интересная технология фильтрации, которую назвали greylisting [«серые списки»]. Ее описание доступно по адресу http://en.wikipedia.org/wiki/Greylisting. Суть в том, что при поступлении почты от нового пользователя, никогда раньше не присылавшего сообщений на данный сервер, ему выдается временный отказ. Обычные почтовые сервера, в зависимости от настроек, обязательно попробуют чуть позже отправить почту повторно, а программы рассылки спама, скорее всего, не будут повторять попытку – они берут не качеством, а количеством.

Обычно для реализации этой технологии используются некоторые части информации из сообщения. Объединенные вместе, они так называемый «триплет» или три информационных поля: IP-адрес, с которого пытались отправить почту, адрес электронной почты отправителя и адрес получателя.

Из триплетов формируется внутренняя база почтового сервера. Если триплет полученного сообщения незнаком серверу, он выдает отправителю сообщение о своей временной недоступности. Однако, такая строгая проверка не обязательна. Многие graylist-фильтры не требуют полного совпадения IP адреса, так как у крупных почтовых систем не один IP-адрес, а целый пул. Предполагая, что пул у таких отправителей находится в одной подсети класса C, проверяют только первые 24 бита IP адреса. В некоторых фильтрах реализована функция, которая при подтверждении адреса отправителя разрешает отправку почты всем пользователям подтвержденного домена.

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

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

Одна из реализаций данной методики доступна по адресу http://smfs.sourceforge.net/smf-grey.html, там же есть ссылка на более функциональную версию этой программы – http://smfs.takm.com/; именно ее я и предлагаю установить. Скачайте и распакуйте архив с программой, как и в случае smf-zombie: он почти такой же маленький (около 17 КБ). Далее выполните традиционную пару make && su make install; если вы не устанавливали smf-zombie, предварительно запустите install.sh. Отредактируйте конфигурационный файл smf-grey.conf – пропишите в нем IP адреса и домены вашего «белого списка», в конце файла добавьте

Syslog          local4

– это позволит выделять сообщения данного фильтра средствами syslog: просто добавьте в /etc/syslog.conf строчки:

#smf-grey
local4.*                                    /var/log/greylist.log

Файл конфигурации smf-grey.conf следует скопировать в каталог /etc/mail/smfs/, а затем дать команды:

 touch /var/log/greylist.log
 /etc/init.d/syslog restart

и создать кэш-файл фильтра:

 touch /var/run/smfs/smf-grey.cache
chown smfs:smfs /var/run/smfs/smf-grey.cache

Как и в случае smf-zombie, необходимо выбрать в каталоге init подходящий стартовый скрипт и поместить его в /etc/init.d, после чего отредактировать sendmail.cf, добавив строку для фильтра

 Xgray, S=local:/var/run/smfs/smf-grey.sock, F=, T=S:4m;R:4m

и дописав его имя (gray) в список InputMailFilters:

 InputMailFilters=clamav,milt,zombie,gray

Проверим работу получившейся системы. Откройте еще один терминал и наберите tail -f messages | grep smf или tail -f greylist.log, если вы внесли правки в конфигурационный файл syslog. Затем перейдите в исходный терминал, запустите фильтр и перезапустите sendmail:

 /etc/init.d/smfgrey start && /etc/init.d/sendmail restart

Во втором терминале может появиться сообщение о невозможности загрузить кэш. Если все было сделано верно, это случится лишь единожды: после остановки или перезапуска фильтра командой /etc/init.d/smfgrey restart сообщения уже не будет, а файл /var/run/smfs/smf-grey.cache будет заполнен записями фильтра.

[править] Скорая помощь

Небольшая рекомендация по набору фильтров: при количестве писем примерно до 10–20 тысяч в сутки и достаточно мощном компьютере можно обойтись только smf-gray. Особенность «продвинутой версии» в том, что ее не надо перезагружать при изменении файла конфигурации: она сама проверяет его раз в 15 секунд. Кроме того, эта версия менее чувствительна к сбоям в структуре кэшфайла триплетов.

[править] Есть ли жизнь без спама?

После прочтения статьи у пытливого читателя может возникнуть резонный вопрос: «Все хорошо, а насколько эффективны эти ваши методики?». Кое-какую информацию на этот счет можно почерпнуть из таблицы. Если же «спам достал», а настроить собственную почтовую систему нет возможности, для объявлений с публичным почтовым адресом, которые неизбежно подает организация – поиск работников, маркетинг и т.п. – неплохим выходом будет использовать публичные сервера вроде Gmail с перенаправлением на внутренний ящик: почту они фильтруют неплохо, кроме того, можно периодически закрывать один адрес и заводить другой. Правда, следует иметь в виду, что использование бесплатных почтовых служб расценивается многими как несолидное поведение. Какое из двух зол меньше – решайте сами. LXF

[править] Отчет о почте домена (41 почтовый ящик)

LXF103 75 1.jpg

Персональные инструменты
купить
подписаться
Яндекс.Метрика