Сценарий: сейчас пятница, полдень. Вы только что закончили продолжавшееся три месяца внедрение архитектуры межсетевой защиты, призванной обеспечить защиту вашего глобального сетевого периметра и связей с вашими деловыми партнерами. На разработку защитной политики Вы потратили больше времени, чем она будет выполняться на этом брандмауэре. Вы встроили все наилучшие операции управления межсетевой защитой в ваши стандартные эксплуатационные процедуры и собираетесь с чувством выполненного долга хорошо отдохнуть на выходных. Но в это время..
Боб Рудис, перевод Алексей АнтиповСценарий: сейчас пятница, полдень. Вы только что закончили продолжавшееся три месяца внедрение архитектуры межсетевой защиты, призванной обеспечить защиту вашего глобального сетевого периметра и связей с вашими деловыми партнерами. На разработку защитной политики Вы потратили больше времени, чем она будет выполняться на этом брандмауэре. Вы встроили все наилучшие операции управления межсетевой защитой в ваши стандартные эксплуатационные процедуры и собираетесь с чувством выполненного долга хорошо отдохнуть на выходных. Но в это время ... Вирус находится на начальной стадии распространения по всей сети и почтовая система уже перегружена. Вы даете указание администраторам выполнить все ваши процедуры и блокировать всю исходящую почту, выполнив при этом очистку и процедуры восстановления. Когда кризис прошел, вы понимаете, что выходные безнадежно испорчены, а ваша пуленепробиваемая межсетевая защита разрушена только из-за того, что один из пользователей в вашей сети просто открыл одно почтовое сообщение.
В подобной ситуации ваши шансы на успех хороши только если вы профессионально занимаетесь защитой в течении последних нескольких лет. Интенсивное распространение спама, наряду с вирусами, червями и другим злонамеренным кодом сделало проблематичным создание безопасной и эффективной IT среды.
В данной статье будут описаны методы и средства для создания безопасной и устойчивой среды электронной почты. Мы сфокусируем свое внимание на защите почтовых систем основанных на программах Exchange/Outlook.
Поэтому, независимо от выбранной вами среды, вам всегда придется сражаться на двух фронтах.
Для спам/вирусного шлюза вы должны определить, что вы хотите отфильтровать, и быть при этом готовыми дать квалифицированные объяснения так, чтобы конечные пользователи смогли понять, что им ожидать от среды. Для помощи в определении вашей политики вы должны найти ответы на следующие вопросы:
Также необходимо рассмотреть другие технические вопросы, типа:
В первой части данной статьи будут использоваться следующие программы, предназначенные для борьбы со спамом/вирусами:
MIMEDefang [7]
SpamAssassin [8]
Первое, что необходимо сделать - убедиться в том, что вы откомпилировали sendmail с поддержкой milter. Для этого можно просмотреть вывод " /usr/lib/sendmail -bv -d0.1 " и проверить наличие слова "MILTER". Если milter не поддерживается, то необходимо добавить к "devtools/Site/site.config.m4" следующие строки:
dnl Milter APPENDDEF('conf_sendmail_ENVDEF', '-DMILTER')После чего перекомпилировать sendmail.
Если бы вы никогда прежде не использовали CPAN [10], то теперь как раз самое время узнать о нем, т.к. это сэкономит много времени при установке Perl модулей на любой системе. Для исходной конфигурации проделайте следующее:
perl -MCPAN -e "shell"(Все это предполагает наличие установленного Perl). Мастер будет вести вас через параметры конфигурации для установки доступа к CPAN библиотеке. Однажды сконфигурировав CPAN доступ, вы сможете устанавливать любые Perl модули (например SpamAssassin) с помощью одной строчки в командной строке:
perl -MCPAN -e "install Mail::SpamAssassin"После установки sendmail следующим шагом будет инсталляция MIMEDefang. Если вы не делаете автоматической компоновки через дерево портов *BSD, то я строго рекомендую начинать с MIMEDEFANG HOWTO [11]. Здесь охвачены детали установки всех необходимых компонентов для базовой конфигурации sendmail. Я предлагаю использование автоматизированного метода инсталляции CPAN, описанного выше.
Для конфигурирования sendmail как шлюза для вашей Exchange среды, вы будете должны (как минимум) добавить поддержку mailertable. Для начала необходимо отредактировать файл m4 и добавить следующее:
FEATURE('mailertable')dnlк конфигурации, если этого там еще нет и регенерировать файл конфигурацию sendmail.
Далее необходимо включить sendmail access_db:
FEATURE('access_db')dnlФайл mailertable обычно устанавливается в /etc/mail/mailertable и имеет следующий формат:
example.org esmtp:[exchangeserver.internal.example.org]Каждая строка в файле говорит "почта для этого домена, должна быть переслана для обработки на следующий хост".
Далее необходимо сгенерировать базу данных mailertable с помощью команды makemap:
makemap hash /etc/mail/mailertable.db < /etc/mail/mailertableТеперь отредактируйте /usr/mail/access, и добавьте ваши домены:
example.org RELAYДалее сгенерируйте файл /etc/mail/access.db с помощью команды makemap.
В зависимости от вашей установки sendmail, Вам, вероятно, придется изменять /etc/mail/local-host-names, /etc/mail/relay-domains и другие файлы конфигурации.
В заключении, мы должны сконфигурировать DNS систему так, чтобы новый спам/вирусный шлюз обрабатывал всю почту. Для этого в файл данных зоны необходимо добавить строки типа:
example.org IN MX 5 defender.domain.org defender.example.org IN A 192.168.10.10Как только вы сконфигурируете ваш Exchange сервер для возможности получения почты с sendmail шлюза, то можно начинать осуществление защитной политики для вашей электронной почты.
Процесс фильтрации всей нашей почты сосредоточится на MIMEDEFANG milter, так как эта программа находится "в потоке" и обрабатывает весь процесс. MIMEDefang делит сообщение на части во временном каталоге и выполняет процедуры фильтрации (/etc/mail/mimedefang.pl - > /etc/mail/mimedefang-filter.pl). Большая часть нашей работы будет проделана при настройке функций фильтра выполняющих обработку. Вся настройка выполняется в perl подпрограммах.
Фильтры MIMEDEFANG работают в различных точках в течение почтового диалога. Sendmail milter передает различные части почтового диалога в MIMEDEFANG, и ваши настройки фильтра могут действовать на любой стадии.
Как было сказано ранее, MIMEDefang вызывается при получении сообщения. При этом программа создает временный каталог и разбивает сообщение на части:
После инициализации фазы сканирования, MIMEDefang анализирует почтовое сообщение и вызывает подпрограмму filter_begin. Поскольку обрабатывается каждая часть MIME, то вызывается filter или filter_multipart. В конце обработки вызывается filter_end.
После вызова filter_begin вы можете выполнить любой тип обработки на созданных MIMEDefang файлах. Реальный запуск начинается при вызове filter. Ниже приведен пример фильтра:
sub filter { my ($entity, $filename, $extension, $type) = @_ ; return action_accept if ($ext eq '.txt') ; return action_drop_with_warning('No compressed files!') if ($ext eq '.zip'); if ($Subject =~ /viagra/i) { action_discard() ; } # if # } # filter() #MIMEDefang передает в подпрограмму фильтрации MIME объект, имя файла, его расширение и тип MIME. При этом определяются некоторые глобальные переменные, создаваемые из информации содержащейся в сообщении (типа темы сообщения ($Subject), списка получателей (@Recipients), адреса пересылки ($RelayAddr) и др.). В описанном выше примере фильтра, программа сначала проверяет расширение файла, если это текстовый файл, то подпрограмма пропускает его через событие action_accept. Если этот тест не пройден, то подпрограмма переходит к другому и начинает проверять не является ли файл - zip-файлом. Если это так, то вложение удаляется и пользователю сообщается об этом. Наконец, если в строке темы сообщения будет слово "Виагра" (в любом регистре), то сообщение принимается (удаленный сервер получает SMTP код подтверждения 2##), но пользователь это сообщение не увидит.
MIMEDefang имеет много подпрограмм, дающих возможность изолировать сообщения или части сообщений, отклонять подключения (посылая код ошибки SMTP 5## на удаленный сервер), перемещать вложения в отдельный каталог, вызывать внешние подпрограммы и многое другое. Имеются также встроенные подпрограммы, использующие дополнительные Perl модули для вирусной проверки. Часть процесса может использовать спам-проверку и это как раз то, когда в игру вступает SpamAssassin.
SpamAssassin выполняет проверку заголовков сообщения и тела сообщения, проводит статистический анализ, основанный на спам-справочниках (Байесов анализ). После прохождения каждой проверки генерируется значение, добавляемое к общей оценке. Когда оценка достигает определенного (пользователем или узлом) значения, сообщение помечается как спам. SpamAssassin проверки работают на стадии filter_end, и MIMEDEFANG имеет встроенный доступ к модулю SpamAssassin через подпрограмму spam_assassin_check(). Ниже представлен пример примитивного спам фильтра:
sub filter_end { my ($entity) = @_ ; my ($score, $thresh, $names, $report) = spam_assassin_check() if ($score >= 5*$thresh) { action_bounce("SPAM Rejected"); return; } # if # if ($score > $thresh) { action_change_header("Subject", "[SPAM] $Subject") ; } # if # } # filter_end() #"Spam filter" запускает SpamAssassin, а затем смотрит, не превышает ли оценка для текущего сообщения пороговое значение больше чем в пять раз. Если это так, то подпрограмма удаляет сообщение. Если оценка только выше порогового значения, то в этом сообщении изменяется строка с темой сообщения с указанием, что это спам. Вы можете определять настройки SpamAssassin в файле /etc/mail/spamassassin/local.cf. Ниже приведен пример local.cf:
required_hits 10 blacklist_from *.msn.com score NIGERIAN_BODY1 10 score NIGERIAN_BODY2 10 score HTML_IMAGE_ONLY 5показывающий, что для определения спама требуется десять пунктов, что никакие почтовые сообщения от msn.com не будут приняты, и что пять пунктов будет добавлены к общей оценке, если это HTML файл с тэгом IMG. Запуск:
perldoc Mail::SpamAssassin::Confпредоставит вам полный список реконфигурируемых параметров. Вы должны потратить несколько дней (может даже недель) для точной настройки параметров спама, чтобы достичь хороших результатов в его предотвращении. Существует одно замечание к этой установке - SpamAssassin/MIMEDefang будет выполняться как "defang" пользователь. Все добавления к Байесовой базе данных должны быть сделаны как этот пользователь.
Не отчаивайтесь, если ваши познания в Perl не совсем сильны. MIMEDEFANG HOWTO снабжен фильтром, выполняющим вирусные проверки, проверки расширений файлов и спам-проверки. И вы просто можете изменять базовую настройку.
Спойлер: она начинается с подписки на наш канал