Электронная почта является весьма важным сервисом и требует особого внимания из-за большого объёма нежелательных сообщений и спама. Большой объём спама стал весьма болезненной проблемой, когда вирусописатели начали писать почтовых червей и перегружать почтовые сервисы. В начале 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
pass in on $ext_if inet proto tcp from
Для pre-OpenBSD 4.7 следующий синтаксис:
table
rdr pass on $ext_if inet proto tcp from
Таблица
В файле 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

July 18th, 2012
admin
Опубликовано в рубрике
Метки: