Proxy-сервер с открытым кодом — отличный помощник в борьбе со спамом

Меня всегда огорчало, что во многих современных серверах электронной почты (в частности, Microsoft Exchange Server) отсутствуют стандартные функции фильтрации почтовых сообщений. Компания Microsoft выпустила модуль расширения для Exchange Server 2003, называемый Exchange Intelligent Message Filter, который обеспечивает контроль потока почтовых сообщений, но некоторые базовые возможности, например функция блокирования вложенных файлов, должны быть реализованы в стандартной конфигурации каждого сервера. Нетрудно представить, насколько меньше времени пришлось бы тратить системным администраторам на борьбу с вирусами из Internet, если бы были предусмотрены хотя бы примитивные функции блокирования вложенных файлов. Я попытался решить эту проблему и найти почтовый фильтр с открытым исходным текстом, который работает с Windows, блокирует вложенные файлы и поможет остановить лавину спама, которая постоянно захлестывает мою сеть.

Коротко о ретрансляции почты

Почтовый ретранслятор или proxy-сервер все чаще используются для защиты от сомнительных вложенных файлов, спама и других «вредителей» электронной почты. Разделение функций хранения почтовых сообщений (на почтовом сервере) и доставки почты (почтовым ретранслятором или proxy-сервером) также способствует повышению уровня безопасности и производительности. Если разместить почтовый ретранслятор или proxy-сервер в демилитаризованной зоне (DMZ) сети, можно исключить возможность связи с почтовым сервером извне.

Для организации почтового ретранслятора обычно разрешают прохождение трафика SMTP через TCP-порт 25 в ретранслятор или proxy-сервер внутри DMZ, а затем обеспечивают связь почтового сервера, находящегося за брандмауэром, с ретранслятором или proxy-сервером через SMTP. Делегировав такие задачи, как фильтрация спама и блокирование вложенных файлов, ретранслятору или proxy-серверу, можно снизить нагрузку на процессор почтового сервера.

В данной статье рассматривается proxy-сервер с открытым исходным кодом. По ряду причин полезно дополнить сеть несколькими proxy-серверами. Во-первых, в открытых программах иногда встречаются ошибки. Мой открытый почтовый сервер исключительно надежен в большинстве сред, но второй почтовый proxy-сервер обеспечивает резерв, если первый даст сбой или по другой причине прекратит обработку сообщений. Во-вторых, для бесплатной программы требуются лишь некоторые дополнительные аппаратные средства, поэтому второй ретрансляционный сервер организовать легко. Используя несколько MX-записей DNS, можно обрабатывать входящую почту двумя серверами.

Fluffy the SMTPGuardDog

Я обратил внимание на Fluffy the SMTPGuardDog около года назад. Fluffy — открытая программа фильтрации электронной почты для систем Windows 95 и более поздних. Продукт назван по имени злобного трехглавого пса из книги о Гарри Поттере. Мне понравился открытый почтовый фильтр для платформ Windows. Fluffy располагается между Internet и почтовым сервером, проверяет все входящие сообщения и фильтрует опасные вложенные файлы и спам.

Для работы Fluffy не требуется большой вычислительной мощности. Автор программы, Уэйн Макдауэлл, утверждает, что его 233-мегагерцевая машина Pentium легко обрабатывает примерно 1500 сообщений за 10 минут. Fluffy может работать на одной машине с почтовым сервером или на выделенной системе в DMZ. Для целей, описанных в данной статье, настоятельно рекомендуется разместить Fluffy в DMZ, но в своей сети я установил фильтр на одной машине с почтовым сервером — это немного сложнее, чем установить его на отдельной машине.

Необходимо загрузить программный код Fluffy вместе с механизмом выполнения Visual Basic (VB), который устанавливается на машине. Оба компонента можно получить на домашней странице приложения, http://smtpfilter.sourceforge.net. При подготовке статьи использовалась версия Fluffy 1.4.95.

Для установки механизма выполнения VB необходимо запустить файл msvbvm50.exe, который обеспечивает необходимую поддержку основному приложению. После этого можно развернуть Fluffy. Нужно распаковать дистрибутив и запустить setup.exe. Процедура установки, в сущности, безвариантная — необходимо указать только каталог. После установки приложения можно приступить к настройке конфигурации почтового фильтра.

Fluffy работает не в качестве службы, поэтому необходимо зарегистрироваться в системе и запустить Fluffy как настольное приложение. На сегодня это единственно возможный режим работы Fluffy. Однако некоторые пользователи сообщают, что им удалось запустить Fluffy как службу с помощью утилиты Srvany из комплекта ресурсов или задействовать фильтр как плановое задание при начальной загрузке машины. Более подробная информация о Srvany приведена в статьях из списка «Ресурсы». Несмотря на некоторый риск, я предпочитаю иметь активный Fluffy на рабочем столе, чтобы видеть основное окно консоли (экран 1). Такой прием позволяет получать информацию об атаке на почтовый сервер в реальном времени и облегчает диагностику неполадок с электронной почтой пользователей.

Экран 1. Главное окно мониторинга Fluffy the SMTPGuardDog

Установка Fluffy

При первом запуске Fluffy из меню Start программа задает несколько вопросов о конфигурации. Я оставил большинство полей пустыми, чтобы иметь возможность настроить параметры самостоятельно. Однако некоторые выбираемые по умолчанию параметры Fluffy полезны, и я принял их. Первый вопрос — следует ли Fluffy определить сетевые параметры машины. Я рекомендую ответить на него Yes.

Затем Fluffy спрашивает, нужно ли загрузить «черный список» с серверов DNS. «Черные списки» DNS (иначе называемые Realtime Block Lists, RBL) обычно содержат IP-адреса почтовых серверов, которые в предшествующий период времени были источниками спама. Когда в почтовый сервер поступает запрос на установление нового соединения SMTP, Fluffy может проверить список и определить, следует ли серверу устанавливать соединение. Я рекомендую ответить Yes; в результате «черные списки» серверов загружаются во Fluffy, но ни один из списков не активизируется автоматически. Подробнее о применении «черных списков» и их провайдерах будет рассказано ниже.

В «черные списки» также можно внести определенные домены и диапазоны IP-адресов, не вызывающие доверия. Fluffy спрашивает, следует ли принять готовый список неблагонадежных доменов и IP-адресов. Стандартный список Fluffy невелик, но я рекомендую ответить на этот вопрос No, чтобы по ошибке не блокировать источник важных сообщений.

Fluffy также располагает «ловушкой для спама» (spam trap) — возможностью указать входные адреса электронной почты (или фрагменты адресов), на которые не должно поступать никаких сообщений. Если в адрес-«ловушку» приходит сообщение, то Fluffy немедленно записывает IP-информацию сервера-отправителя и в дальнейшем почтовый сервер никаких посланий от этого отправителя не принимает. В «ловушке для спама» Fluffy довольно много адресов и, на мой взгляд, подход программы отличается излишней строгостью. Достаточно беглого взгляда на стандартный список, чтобы увидеть такие почтовые адреса, как byron@ и geoff@, — весьма широко распространенные имена. Поэтому я рекомендую ответить на это предложение No. Идея заполнить список ложными именами пользователей удачна, но охват стандартного списка слишком широк.

Последний вопрос Fluffy относится к активизации стандартного списка для блокирования вложенных файлов. В него входят широко распространенные типы вложений, которые не должны попадать к пользователям (например, .bat, .cmd, .com, .exe, .pif, .scr). Я рекомендую ответить Yes. Впоследствии можно будет сократить этот список или расширить его. Когда ответ на последний вопрос будет получен, Fluffy может начать работу в сети предприятия. Однако настройка фильтра еще не завершена.

Подготовка Fluffy к работе в Internet

Необходимо указать Fluffy, куда направлять обработанные сообщения электронной почты. Следует дважды щелкнуть на пиктограмме с трехглавым псом в системной панели, чтобы вывести на экран консоль мониторинга Fluffy. Затем нужно щелкнуть на кнопке Configure и выбрать вкладку SMTP Servers. Из этой страницы со вкладками (экран 2) можно получить доступ к деталям IP-конфигурации, указать TCP-порт Fluffy, а также IP-адрес и TCP-порт почтового сервера.

Экран 2. Задание адреса и порта внутреннего SMTP-сервера

Как отмечалось ранее, в данной статье предполагается, что Fluffy работает на одной машине с почтовым сервером (Windows Server 2003 с активными протоколами POP и SMTP). Перед установкой Fluffy мой SMTP-сервер Microsoft Internet Information Services (IIS) 6.0 был настроен на прослушивание входящих сеансов SMTP через TCP-порт 25. Но я хотел, чтобы Fluffy, а не IIS был первым сервером, обнаруживающим новые входящие соединения SMTP. Для этого я настроил почтовый сервер (SMTP-сервер IIS) на прослушивание порта 26. Чтобы изменить порт, прослушиваемый IIS, необходимо изменить свойства SMTP-сервера с помощью оснастки Internet Information Services консоли управления Microsoft Management Console (MMC). Нужно запустить оснастку и дважды щелкнуть на сервере, а затем выбрать вкладку General. Щелкните на кнопке Advanced рядом с полем IP-адреса, чтобы вывести на экран диалоговое окно Identification, в котором можно настроить конфигурацию порта TCP для IIS. Следует убедиться, что порт, выбранный для почтового сервера в оснастке Internet Information Services, соответствует значению SMTP Server Port, заданному на вкладке SMTP Servers программы Fluffy.

После того как заданы IP-адрес и TCP-порты, Fluffy может обращаться в Internet и будет первым сервером, принимающим SMTP-трафик. Поскольку почтовая инфраструктура немного изменилась, следует убедиться, что новый сервер не действует как открытый ретранслятор (open relay — почтовый сервер, который пересылает почтовые сообщения, независимо от их источника и пункта назначения). Если почтовый сервер не был открытым ретранслятором до установки Fluffy, то он не должен стать им и после, но дополнительная проверка никогда не бывает лишней. Убедиться, что систему нельзя использовать в качестве открытого ретранслятора, можно с помощью бесплатной службы тестирования трансляции почты компании Network Abuse Clearinghouse. Если в системе разрешена открытая ретрансляция, то необходимо немедленно ограничить возможности ретрансляции почтовых сообщений, иначе авторы спама быстро обнаружат сервер и начнут использовать его для рассылки «мусора».

Предоставив Fluffy информацию о местонахождении сервера и отключив на нем открытую ретрансляцию, следует проверить, можно ли доставить в сеть предприятия корректное почтовое сообщение из внешнего мира. Для этого в окне настройке Fluffy нужно перейти к вкладке Update/Logs, выбрать уровень 6 для Logging Detail (чтобы увидеть подробные диагностические данные Fluffy) и послать на свой адрес сообщение с внешнего почтового адреса. Не следует волноваться, если сообщение не будет доставлено моментально: задержка говорит о том, что сообщение попало в первую линию обороны против спама, обеспечиваемую Fluffy.

Отсрочка соединений и блокирование вложенных файлов

Если новый сервер (который не устанавливал соединений с Fluffy в последнее время) связывается с почтовым сервером, чтобы доставить сообщение, Fluffy сначала отвергает первую попытку, посылая серверу-отправителю сообщение об ошибке deferral (отсрочка). По умолчанию любой правильно настроенный почтовый сервер Internet автоматически повторяет сообщение спустя примерно 15 минут, если сообщение не было категорически отвергнуто при первой попытке. Исходя из моих наблюдений за отсрочкой доставки Fluffy, можно сделать вывод, что авторы спама обычно предпринимают только одну попытку доставки сообщения и, если она заканчивается неудачей, просто переходят к следующей по списку жертве. В течение 24 часов Fluffy работал в персональном домене с единственным действительным почтовым адресом, и мною было зарегистрировано более 100 попыток серверов доставить сообщение, которые не повторились спустя 15 минут после отсрочки. Таким образом, в этот день мне пришлось обрабатывать на 100 вредных сообщений меньше — неплохой результат для такого простого метода.

После первого тестового сообщения удаленный сервер должен повторно послать сообщение в течение 15 минут. На этот раз Fluffy распознает сервер и принимает сообщение. С этого момента Fluffy будет с первого раза принимать все сообщения с этого сервера. Если Fluffy не получает сообщений от сервера в течение 16 часов, то очередное сообщение от него вновь будет задержано.

Экран 3. Установка параметров соединения

Чтобы отменить режим отсрочки соединения или изменить время отсрочки, следует выбрать вкладку Connections и ввести новое значение в поле New contact delay (экран 3). Значение 0 отключает функцию отсрочки соединения, и Fluffy автоматически принимает все сообщения при первой попытке доставки.

Fluffy можно настроить на автоматическое блокирование несанкционированных сообщений в соответствии с заранее составленным списком вложений, который находится на вкладке Virus Scanning. Как упоминалось ранее, этот список содержит все распространенные типы вложенных файлов, запрещенных для пересылки пользователям. Чтобы проверить функцию блокирования вложенных файлов Fluffy, можно послать самому себе сообщение с присоединенным файлом несанкционированного типа. Обнаружив запрещенный тип файла, Fluffy отвергает сообщение, которое возвращается отправителю. Помимо возврата отправителю, Fluffy извещает получателя о том, что направленное ему сообщение было отвергнуто.

Если Fluffy был настроен на блокирование вложенных файлов, но они продолжают поступать, следует перейти к вкладке Virus Scanning, указать все типы блокируемых вложений и щелкнуть на кнопке OK. В ходе тестирования выяснилось, что интерфейс Fluffy иногда несколько непоследователен. Наряду с функцией блокирования присоединенных файлов, для проверки входящих сообщений можно использовать антивирусные программы AVG Anti-Virus фирмы Grisoft или Sophos Anti-Virus.

«Черные» и «белые» списки

Если требуется постоянно блокировать определенные IP-адреса или имена доменов (составить «черный список»), то сделать это можно на вкладке Accept/Reject (экран 4). И наоборот, чтобы разрешить прием сообщений от некоторых серверов или доменов (составить «белый список») без задержек или проверки спама — например, организаций, с которыми пользователи регулярно обмениваются сообщениями, — можно указать эти серверы и домены на вкладке Accept/Reject. Для каждого сервера или домена следует щелкнуть на соответствующей кнопке с зависимой фиксацией, чтобы внести его в «белый» или «черный» список.

Экран 4. Составление «черного» и «белого» списков доменов и IP-адресов dresses

Internet-провайдеры и другие крупные провайдеры электронной почты обычно используют «черные списки» DNS для фильтрации спама. В этих списках, составляемых независимыми организациями, содержатся IP-адреса серверов, которые в последнее время были источниками спама, и адреса хорошо известных и особо настойчивых авторов спама. Если в процессе настройки Fluffy был активизирован готовый «черный список» DNS, то Fluffy будет отвергать попытки этих серверов установить соединение и передать почтовые сообщения. Прежде чем установить новое входящее соединение, Fluffy проверяет «черный список» DNS, назначенный пользователем, отыскивая IP-адрес отправителя. Если адрес в списке есть, то соединение блокируется. По умолчанию сервер остается в памяти Fluffy в течение 24 часов, и все сообщения с него отвергаются. По истечении этого срока Fluffy вновь проверяет «черный список» DNS, получив новый запрос от этого сервера.

Fluffy располагает множеством «черных списков», однако ни один из них не применяется по умолчанию. Прежде чем активизировать любой из этих списков в сети предприятия, я настоятельно рекомендую внимательно проанализировать список и тщательно протестировать его после активизации. Эффективность «черных списков» DNS различается в широких пределах.

Для активизации «черного списка» Fluffy следует выбрать вкладку DNSBL (экран 5). Выберите «черный список», укажите вес в поле Score weighting (чем больше балл, тем выше доверие к списку) и сохраните изменения. По умолчанию всем «черным спискам» назначается вес 0. После того как изменения будут сохранены, имя списка должно переместиться из списка Available DNSBL в список Active DNSBL в верхней части страницы. После назначения весов выбранным спискам можно задать поведение Fluffy в зависимости от веса. Для этого нужно выбрать вкладку Handling и настроить параметры на этой странице. Например, можно блокировать входящие сообщения с определенным суммарным весом, изменить строку «Тема» сообщений, отсрочить прием сообщения или просто записать в журнале, что сообщение превышает весовой порог. Последний режим, Flag as possible junk if total DNSBL score at least, полезен, если администратор хочет выбрать наиболее подходящий «черный список».

Экран 5. Активизация «черного списка» Fluffy

В моей сети применяются два «черных списка» DNS, показанные на экране 5, — SpamCop и Spamhaus. SpamCop мне очень подошел благодаря полностью автоматизированному и математически выверенному процессу удаления систем из списка. Spamhaus ориентирован на отслеживание только самых активных источников спама — примерно 200, на которые, по оценке Spamhaus, приходится приблизительно 90% спама в Internet. В силу узкой специализации Spamhaus я в целом доверяю этому списку как в собственных сетях, так и в сетях моих клиентов.

«Хорошая собачка»

В первый день после активизации Fluffy объем получаемого мною спама уменьшился на 80%, и я блокировал несколько десятков вложений, которые грозили заразить мою сеть. Сейчас Fluffy задерживает в неделю от 700 до 1500 почтовых соединений в моем домене. В результате мои почтовые учетные записи вновь стали работоспособны. Fluffy вполне окупает минимальные усилия, необходимые для его установки. Я думаю, что со временем Fluffy будет усовершенствован и станет еще более надежным инструментом. Среди функций, которыми желательно в будущем дополнить Fluffy, — возможность запускать Fluffy в качестве службы и автоматически заносить в «белый список» адреса исходящих сообщений, проходящих через него.


Ресурсы

Web-узлы

Fluffy the SMTPGuardDog http://smtpfilter.sourceforge.net/

Network Abuse Clearinghouse http://www.abuse.net/relay.html

SpamCop http://www.spamcop.net/

Spamhaus http://www.spamhaus.org/