Усложним жинь спамеров используя spamd

                          Электронная почта является весьма важным сервисом и требует особого внимания из-за большого объёма нежелательных сообщений и спама. Большой объём спама стал весьма болезненной  проблемой,  когда  вирусописатели   начали  писать  почтовых   червей   и перегружать  почтовые  сервисы.  В  начале  2000-х  годов  совокупный  объём  спама  и вредоносных  программ  распространяемых через почту дошло до уровня,  когда запуск почтового сервиса SMTP без мер защиты от спама стал просто немыслимым.

Меры  борьбы  со  спамом  практически  на  столько  стары,  как  и  сама  проблема  его существования.   Ранние  усилия  были  направлены   на  анализ   содержания  почтовых сообщений  (более  известный  как  фильтрация  контекста)  и  в   некоторой  степени  на интерпретацию сообщений путём  тривиального  вытягивания  данных заголовков,  таких как предполагаемый адрес отправителя (From:) или заголовков Recieved.

Когда команда OpenBSD разрабатывала  свой  инструмент борьбы со спамом  названый spamd, впервые появившийся в OpenBSD 3.3  в 2003 году, они сосредоточились на работе

сетевого уровня и немедленном взаимодействии с партнёром SMTP, в  сочетании с любой

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

Примечание

В  дополнение  к  демону  блокировки  спама  OpenBSD,  пакету  SpamAssassin  основанному  на   фильтрации   контента (http://spamassassin.apache.org) существует программа названная spamd. Обе программы разработаны для оказания помощи в борьбе со спамом, но они имеют весьма различные подходы к решению одной проблемы и не имеют прямого взаимодействия. Следует отметить, что когда обе программы правильно настроены и запущены, они прекрасно дополняют друг друга.

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

При взаимодействии  с блокированными  хостами spamd использует метод  называемый tarpitting. Когда демон получает SMTP соединение, он выставляет  баннер и мгновенно

переключается на режим, в  котором отвечает  SMTP трафиком со скоростью 1  байт в

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

1.   В  более  долгосрочной  перспективе,   вполне   вероятно,   что  целые  сети  и  большие  диапазоны  IP   адресов   будут переассоциированы с новыми владельцами в ответ на события внешнего мира.

2.   Прежде  чем  pfctl  приобрёл  возможность   работать  с  истечением  табличных  записей,  для   управления   истечением использовалась  специальная утилита expitrtable. Если ваш  pfctl ещё не  поддерживает  режим истечения записей, найдите expiretable в вашей системе пакетов.

Эта реализация tarpitting’а c однобайтовым  ответом  часто упоминается как  заикание. Черный список основанный на тарпиттинге с заиканием является режимом по умолчанию для spamd до версии OpenBSD 4.0 включительно.

Замечание

На FreeBSD и NetBSD, spamd не является частью базовой системы, однако доступен через систему портов и  пакетов как mail/spamd. Если вы запускаете PF на базе релиза FreeBSD 5.x или NetBSD 4.0 или более новом,  вам следует произвести установку порта или пакета.

Настройка spamd в режиме черного списка                           Для  настройке  spamd  в   традиционном  режиме  чёрного  списка,  сначала  создайте специальные  таблицы  и  соответствующие   перенаправления   в    pf.conf,  а  уже  затем переключите внимание на spamd.conf. spamd цепляется к набору правил PF через таблицу

и перенаправления. Вам необходимо добавить следующие строки в файл pf.conf:

table <spamd> persist

pass in on $ext_if inet proto tcp from <spamd> to { $ext_if, $localnet } port smtp rdr-to 127.0.0.1 port 8025

Для pre-OpenBSD 4.7 следующий синтаксис:

table <spamd> persist

rdr pass on $ext_if inet proto tcp from <spamd> to { $ext_if, $localnet } port smtp -> 127.0.0.1 port 8025

Таблица  <spamd>  –  место  для  хранения  IP  адресов,  которые  вы  импортируете  из доверенных  источников  черных списков.  Перенаправление  берёт на себя заботу о всех попытках установления SMTP соединений с хостов находящихся в чёрных списках. spamd слушает порт 8025 и м-е-д-л-е-н-н-о отвечает (со скоростью 1 байт в  секунду) на все переадресуемые SMTP соединения. Позже, вы добавите в  набор правил соотвествующее правило, обеспечивающее пропуск лигитимного SMTP трафика к почтовому серверу.

В  файле  spamd.conf  вы  указываете  источники  данных  черных  списков  и  любые исключения или локальные переопределения.

Замечание

На OpenBSD 4.0. и более ранних релизах (и соответственно в базе портов основаных на версиях до OpenBSD 4.1), spamd.conf находился в директории /etc. Начиная с OpenBSD 4.1, spamd.conf можно найти в /etc/mail. Пример файла конфигурации spamd при установке из системы портов FreeBSD можно найти в /usr/local/etc/spamd/spamd.conf.sample.

В начале spamd.conf вы  можете заметить строку без знака комментария #,  которая выглядит как all:\. Эта строка указывает черные списки которые вы будете использовать. Например:

all:\

:uatraps:whitelist:

Добавьте  все  черные  списки  которые  вы  хотитет  использовать  ниже  строки  all:\, разделяя их двоеточием (:). Для использования белых списков адресов, с вычитанием их из чёрных списков, добавьте  имя белого списка сразу после названия  каждого чёрного списка, например как :blacklist:whitelist:. Далее идёт определение черного списка:

uatraps:\

:black:\

:msg="SPAM. Your address %A has sent spam within the last 24 hours":\

:method=http:\

:file=www.openbsd.org/spamd/traplist.gz

Примечание

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

Введите строки для spamd и параметров запуска в ваш /etc/rc.conf.local на OpenBSD, или в /etc/rc.conf на FreeBSD или NetBSD. Вот пример:

spamd_flags="-v -b" # for normal use: "" and see spamd-setup(8)

Здесь мы включаем  spamd и устанавливаем запуск режима чёрных списков  используя флаг -b. Кроме того, флаг -v включает раширенное журналирование, которое полезно для отслеживания активности spamd при отладке.

В  FreeBSD,  установка   obspamd_enable  в    /etc/rc.conf  позволяущая   контролировать поведение  spamd должна быть установлена  в  "YES" для  включения  spamd, а параметр obspamd_flags можно заполнить любыми параметрами командной строки spamd:

obspamd_enable="YES"

obspamd_flags="-v -b" # for normal use: "" and see spamd-setup(8)

Примечание

Для запуска spamd в родном режиме черного списка на OpenBSD 4.1 и более новых релизах, вы можете получить тот же эффект путём установки переменной spamd_black в значение "YES", а затем перезапустить spamd.

После  того,  как  вы  закончите  редактирование  конфигурации,  запустите  spamd  с требуемыми  опциями,  и  завершите  конфигурирование  установки.  Наконец,  создайте задание  cron  которое  вызывает  spamd-setup  для  обновления  чёрных  списков  через разумные интервалы времени. В родном режиме черных списков, вы можете проматривать и манипулировать собержимым таблиц используя команду pfctl.

Журналирование spamd                                                            По  умолчанию, журналы spamd включаются  в   общие системные  журналы.  Для того, чтобы  отправить   сообщения  журналирования   spamd  в   отдельный  журнал,  следует

добавить следующую запись в syslog.conf:

!!spamd daemon.err;daemon.warn;daemon.info;daemon.debug

/var/log/spamd

Как только spamd запущен и делает именно то что вы  пытались от него  добиться, вы можете добавить  файл журналирования  spamd в   систему  ротатации журналов.  После запуска spamd-setup и заполнения таблиц, вы можете просматривать содержимое таблиц используя pfctl.

Примечание

Образец pf.conf в начале данного раздела содержит правило перенаправления (rdr-to) как часть правила  pass. Если вы планируете использовать вместо него другие соответствующие правила (или, если вы используете старую версию PF и решили написать  правило  rdr,  не  включающее часть  pass),  вам  следует  убедиться, что  вы  создали  правило  pass,  позволяющее прохождение трафика к вашему перенаправлению. Так же может понадобиться установить правила для пропуска лигитимной почты. Однако, если сервис электронной почты в  вашей сети уже работает, с большой вероятностью вы можете продолжить использовать старые правила пропуска SMTP.

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

Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий