Электронная почта все еще остается основным средством обмена информацией — и по-прежнему заодно приносит пользователям тонны спама и вирусов, которые мешают работе и ставят под удар безопасность системы. Проблема не нова, и на сегодня разработаны сотни решений разной реализации и лицензирования. Open source проекты давно зарекомендовали себя с лучшей стороны и обеспечивают безопасность email тысяч организаций.

 

Apache SpamAssassin

SpamAssassin — open source система для борьбы со спамом, легко расширяемая за счет плагинов и интегрируемая практически с любым почтовым решением. Все настройки и антиспам-тесты хранятся в обычных файлах, а потому легко могут быть добавлены и изменены под любые требования. Известность SA получил благодаря использованию технологии байесовской фильтрации. Каждое сообщение при прохождении тестов получает определенный балл и при достижении порога помещается в спам. В отличие от DSPAM, в котором используется только байесовский анализатор, в SA доступен и ряд других популярных технологий, обычно подключаемых в виде плагинов: DNSBL, SPF, DKIM, URIBL, SURBL, PSBL, Razor, RelayCountry, автоматическое ведение белого списка (AWL) и другие.

Количество плагинов, реализующих те или иные возможности, просто зашкаливает. Некоторые идут в стандартной поставке, другие реализованы в виде отдельных проектов. Например, плагин RegistryBoundaries позволяет динамически определять домены верхнего уровня и обновлять связанные с ними списки, плагин PhishTag позволяет переписывать ссылки внутри сообщений, а URILocalBL добавляет тесты для URL в тексте, PDFInfo — блокирует спам в PDF. И это только малая часть. Возможна проверка сообщений на вирусы (ClamAV). Расширений очень много. Разработчики приводят список решений, но вряд ли он полный.

Модуль Mail::SpamAssassin в CPAN, написанный на языке Perl, может быть использован в нескольких вариантах — как клиент-сервер (spamd/spamc), как отдельное приложение или интегрироваться в другую программу. Поддерживаются средства автоматического обновления правил фильтрации (при помощи sa-update). Это очень мощная система, но универсальность и ориентированность на всё приводят к недостаточной оптимизации, в частности везде используются регулярные выражения. Хотя алгоритмы постоянно совершенствуются: в версии 3.2.0, например, появилась утилита sa-compile, компилирующая правила в представление, оптимальное для быстрой параллельной обработки. С точки зрения использования ресурсов компьютера SA показывает неплохие результаты, обходя коммерческих конкурентов. SA также поддерживает IPv6 (с 3.4.0 - полностью), Multithreading и UTF-8.


Релиз хорошо обкатывается, а поэтому после анонса готов к промышленной эксплуатации. Для хранения статистических данных могут использоваться СУБД: MySQL, PgSQL, Redis, BDB и другие. Установка в общем несложна, количество зависимостей невелико; хотя, оно меняется от версии к версии, и нужно быть внимательным. Плюс: нужный пакет есть в репозиториях. В Сети можно найти множество руководств по интеграции с любым решением, поэтому сложностей никаких.

В поставке также идет несколько утилит sa-* для различных целей администрирования. Все настройки производятся в конфигурационном файле /etc/spamassassin/local.cf. После установки SpamAssassin практически всегда требует тонкой подстройки параметров и обучения на нормальных и спам-письмах. Задачу упрощает наличие интерфейсов к SpamAssassin. Такие модули есть в Webmin, Usermin, где они входят в стандартную поставку, и в Maia Mailguard. Небольшой список модулей можно найти на этой странице.

В Webmin доступен модуль для конфигурирования SpamAssassin
В Webmin доступен модуль для конфигурирования SpamAssassin

Некоторые фронтенды для управления email-серверами и электронной почтой через веб также содержат специфические настройки; а также есть онлайновые генераторы конфигурационного файла, позволяющие сформировать нужные настройки, просто ответив на вопросы.

Генератор настроек SpamAssassin
Генератор настроек SpamAssassin
 

Rspamd

Rspamd изначально разрабатывался россиянином Всеволодом Стаховым как замена неповоротливому SpamAssassin для фильтрации спама в почте Rambler. Он подходит для систем различного масштаба от небольших почтовых серверов до крупных почтовых систем, умеет интегрироваться в различные MTA (в документации описаны Exim, Postfix, Sendmail и Haraka) или работать в режиме SMTP-прокси.

Система оценки сообщений такая же, как в SpamAssassin, в частности на основании разных факторов: регулярных выражений, блок-листов DNS, белых, серых, черных списков, SPF, DKIM, статистики, хешей (fuzzy hashes) и прочего - только в работе используются другие алгоритмы. Многие операции оптимизированы, наиболее частые и легкие правила используются первыми, что позволяет снизить нагрузку и уменьшить вероятность тяжелой обработки. Для небольших и средних организаций подходят настройки из коробки. Обеспечивается легкое горизонтальное масштабирование, синхронизация статистики между мастер-узлом и подчиненными, мониторинг работы, возможность выдерживать всплески загрузки. Событийно-управляемая модель обработки позволяет без блокировок работать с несколькими сообщениями одновременно. Изначально адаптирован для работы на многопроцессорных системах.

В Rspamd поддерживается расширение при помощи плагинов, которые могут быть написаны на С и Lua, есть простая возможность добавления новых фильтров и алгоритмов обработки писем. В поставке уже есть несколько готовых модулей, которые можно отключить или подключить по мере необходимости. При загрузке стартует master-процесс, производящий считывание конфигурации и базовые проверки и запускающий несколько процессов-обработчиков (workers), каждый из которых может иметь свое назначение (обработка сообщений, SMTP-прокси, хеш и так далее). Все это регулируется в конфигурационном файле.

Для удобной настройки правил, веса и списков, сканирования и просмотра статистики разработчиками предлагается простой, понятный и, главное, встроенный веб-интерфейс на HTML5/JS. Для запуска его нужно просто активировать в настройках. Изначально rspamd разрабатывался с расчетом на управление через веб-интерфейс. Первое время базовые настройки сохранялись в XML-файле, в последних релизах уже используется совместимый с JSON UCL-формат, принятый в nginx, который так же удобно парсить. Именно поэтому базовые параметры (вес и пороги срабатывания, пути к журналам, включение фильтров и прочее) настраиваются через UCL-файлы. Файлов несколько, так как отдельные установки представлены своими файлами (это удобно), все они подключаются в rspamd.conf. Для правил и более тонкой настройки работы rspamd оставлена возможность конфигурирования из Lua (перекрывая XML-конфиги) в rspamd.lua.

В rspamd доступен веб-интерфейс
В rspamd доступен веб-интерфейс

Rspamd позволяет указать некоторые данные как динамические (dynamic maps), которые проверяются во время выполнения с обновлением данных в случае их изменения. Поддерживаются файловые и HTTP-карты. Для обучения, проверки писем и мониторинга rspamd можно использовать консольный клиент rspamc.

Распространяется по BSD-лицензии. Ориентирован на применение только в *nix-системах. Пакет есть в портах FreeBSD и репозитории CentOS, universe-репозитории некоторых версий Ubuntu и Debian (правда, далеко не последние версии). Остальным придется собирать из исходников.

В настоящее время rspamd еще не достиг релиза, хотя текущий номер (0.9.4) отражает скорее требование разработчиков, чем информацию о законченности продукта.

 

Razor/Pyzor

Обнаружение и распознавание спама в потоке — задача, забирающая достаточное количество ресурсов, а варианты спам-писем при этом практически неиссякаемы. Как и в случае с вирусами, один из методов решения — использовать распределенную сеть датчиков, обнаруживающих спам на максимальном количестве систем. Далее генерируется сигнатура, упрощающая распознавание спама и не требующая большого количества вычислительных мощностей. Чтобы систему нельзя было запутать незначительными изменениями исходного спам-сообщения, используются алгоритмы получения нечетких сигнатур. Полученный хеш сравнивается с данными в централизованной базе: в случае обнаружения совпадения такое сообщение помечается как спам и может быть отброшено на раннем этапе. В результате такая антиспам-система работает быстро, практически не дает ошибок и незаметна для пользователей. Практика показывает, что такой простой метод даже в самых сложных случаях позволяет легко отсеять более 80% спам-писем.

По такому принципу работает Razor, написанный на Perl. Он используется как самостоятельно, так и в качестве аддона к SpamAssassin. В последнем случае он дает возможность начать отсев спама с ходу без предварительного обучения байесовского анализатора. Единственный минус — проект не развивался с 2007 года.

Pyzor представляет собой версию Razor, написанную на Python. Кроме кода клиента, предлагается и серверная часть, позволяющая развернуть свою базу. Пакет есть в репозиториях дистрибутивов. Рекомендуемый разработчиками способ установки Pyzor — через PIP. Для хранения информации может использоваться GDBM (для небольших нагрузок), MySQL или Redis. Все настройки производятся в нескольких файлах каталога ~/.pyzor. В файле config, в servers прописываются серверы, с которыми работает клиент. По умолчанию публичный сервер проекта - public.pyzor.org:24441. Файл config при установке из пакетов не создается, но на сайте есть хороший пример.

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

$ pyzor check < message.eml

Входной файл может быть в трех форматах: сообщение по RFC5321, mbox и дайджест Pyzor. Есть коммерческая версия Razor, предлагаемая компанией Cloudmark. По аналогичной технологии — проверка контрольных сумм и сверка с базой — работает и Distributed Checksum Clearinghouse.

 

ASSP

Спам нужно останавливать до SMTP-сервера, у которого и так большая нагрузка, кроме того, спам-фильтры в этом случае настраивает админ, а не пользователи, которые чаще запутывают ситуацию, чем помогают. Поэтому ASSP, или Anti-Spam SMTP Proxy, — один из самых популярных и любимых проектов среди сисадминов. Он представляет собой платформонезависимый SMTP-прокси-сервер, принимающий сообщения до MTA и анализирующий его на спам. После анализа нормальное сообщение переправляется дальше на SMTP-сервер и попадает в трафик нормальной почты. Иначе письмо блокируется, отправителю посылается сообщение об ошибке, а письмо ложится в коллекцию спама. Есть режим Test Mode, когда сообщение не блокируется, а помечается тегом и доставляется получателю.

Поддерживаются все популярные технологии: белые и серые списки, байесовский фильтр, DNSBL, DNSWL, URIBL, SPF, DKIM, SRS, проверка на вирусы (с ClamAV), блокировка или замена вложений и многое другое. Обнаруживается кодированный MIME-спам и картинки (при помощи Tesseract). Поддерживаются SSL/TLS-соединения, имеется клиент для проверки валидности сертификатов. Ведется автоматический белый список клиентов, список необрабатываемых адресов и доменов, защита от пересылки почты третьими лицами. Для проверки спама может подключаться в качестве модулей Razor и DCC. Возможности расширяются при помощи модулей, все они доступны на сайте проекта. Есть функция архивирования спам-писем на POP3-сервере. Генерируется статистика в SVG-файл.

Практически все настройки производятся через веб-интерфейс, по умолчанию используется http://127.0.0.1:55555/, данные для входа — root/nospam4me. Но готовься: параметров там очень много, и придется потратить время, чтобы все обойти. Для хранения данных по умолчанию используется BerkeleyDB, можно подключить MySQL, DB2, PgSQL, Firebird. Возможна синхронизация настроек между двумя серверами ASSP и автоматическое обновление движка и модулей через PPM или CPAN.

ASSP настраивается при помощи веб-интерфейса
ASSP настраивается при помощи веб-интерфейса

В настоящее время актуальна вторая версия ASSP, поддерживающая множество новых функций, включая IPv6 и Multithreading, поэтому рекомендуется использовать ее. Разработка V1 прекращена в конце 2014 года, и со временем прекратится выпуск багфиксов, хотя нужно признать, что она несколько «легче» V2.

ASSP можно устанавливать отдельно или на том же сервере, что и SMTP. При развертывании ASSP занимает 25-й порт (опционально 465-й и 587-й), поэтому, если SMTP-сервер расположен на той же машине, рабочий порт необходимо будет перенастроить. Версия 2 может работать в режиме прозрачного прокси.

Документация проекта не всегда внятная, а инструкции в Сети нередко уже устаревшие, но при наличии некоторого опыта разобраться можно. Тем более что после установки все работает из коробки, а дальше помогает веб-интерфейс. Правда, некоторые параметры не представлены в веб-интерфейсе, поэтому для более тонкой подстройки следует заглянуть в конфигурационный файл. В основных репозиториях дистрибутивов пакета ASSP нет. Для установки в *nix и Win проект предлагает архив, все зависимости при этом необходимо установить вручную. По умолчанию настроен Test Mode, после обучения на примерно тысяче писем можно включать режим блокировки.

 

MailScanner

MailScanner представляет собой all-in-one решение для проверки почты на наличие вирусов и спама, борьбы с фишинговыми письмами. Он анализирует содержание письма, блокируя некоторые атаки, направленные на email-клиентов и HTML-теги, проверяет вложения (запрещенные расширения, двойные расширения, зашифрованные архивы и прочее), контролирует подмену адреса в письме и многое другое. Есть возможность создания белого списка, архивирования почты определенной группы пользователей.

Реализованы и собственные правила, позволяющие администратору управлять почтой по любому критерию, в том числе и реализуя нечто вроде DLP. При помощи правил можно легко конвертировать HTML в некоторых сообщениях в текст. Есть еще одна технология, позволяющая предотвратить утечку информации, — MCP (Message Content Protection), в этом случае производится запуск дополнительной копии SpamAssassin, но без активации антиспам-проверок. Администратор указывает в файле ключевые слова и действия, которые должны произойти при их появлении.

MailScanner легко интегрируется с любым МТА, в поставке есть готовые конфигурационные файлы. Помимо собственных наработок, он может использовать сторонние решения. Например, проверка на вирусы может производиться одним из более чем двадцати движков. Конечно, разработчики рекомендуют ClamAV, но в списке практически все популярные, в том числе и коммерческие решения. Для проверки на спам может использоваться SpamAssassin.

MailScanner написан на Perl (около 50 тысяч строк) и распространяется под лицензией GNU GPL. Разработки стартовали в 2001 году, с тех пор его загрузили более миллиона раз, и он используется для защиты от вирусов и спама в тысячах организаций по всему миру. MailScanner служит основой некоторых систем борьбы со спамом промышленного уровня (например, Mailborder или Baruwa). Весь процесс полностью контролировался одним человеком — Джулианом Филдом (Julian Field), остальные разработчики не имели доступа к ветке Git. С 2014 года его заменил Джерри Бентон (Jerry Benton).

Официально поддерживаются Red Hat / CentOS, Debian, Ubuntu LTS, SuSE и FreeBSD, хотя будет работать и на любом другом *nix. Установку и конфигурирование сложными назвать нельзя. Все параметры прописываются в MailScanner.conf и хорошо комментированы: в большинстве случаев достаточно указать антивирус и антиспам-программу. Кроме этого, сегодня доступны модуль к Webmin и веб-интерфейс MailWatch, делающие установку более наглядными.

К MailScanner доступно несколько интерфейсов
К MailScanner доступно несколько интерфейсов

 

Scrollout

Свободные решения традиционно считаются более сложными в настройке и требуют некоторого опыта, но это легко решаемо. Scrollout F1 представляет собой преднастроенный и автоматически конфигурируемый почтовый шлюз с защитой от вирусов и спама, распространяемый по лицензии GNU GPL v2. Предлагается веб-интерфейс, написанный на PHP, и скрипты оболочки с преднастройками ко множеству открытых продуктов — Postfix, getmail4, Razor, SpamAssassin, Pyzor, FuzzyOCR, СlamAV, OpenSSL, Mailgraph и другим. Обеспечивается антивирусная и антиспам-проверка, геофильтрация по нескольким параметрам, проверка при помощи DKIM, простое создание адресов-ловушек, резервное копирование почты на специальный адрес и многое другое. Основой всего является Linux (официально поддерживается Debian и Ubuntu).

Установка Scrollout F1 возможна двумя способами: на чистое «железо» при помощи подготовленного ISO или на «чистый» Debian/Ubuntu. Также предлагается в виде сервиса.

Как альтернативу можно рассматривать MailCleaner, который распространяется в виде ISO и требует установки на чистый компьютер, или E.F.A. Project, представленный в виде образа для VMware или Hyper-V.

Настройка уровня «агрессивности» компонентов системы в Scrollout
Настройка уровня «агрессивности» компонентов системы в Scrollout

 

Спам в картинках

В 2006 году алгоритмы борьбы со спамом уже практически полностью блокировали его распространение, но спамеры придумали новый способ — картинки, эффективно преодолевающие все фильтры, поскольку те были рассчитаны лишь на работу с текстом. Пик спама такого рода пришелся на 2007 год, затем было несколько вспышек. Как ответ на угрозу стартовало несколько open source проектов, задача которых — определение спама в рисунках; все они ориентированы в основном на использование в качестве модуля SpamAssassin: FuzzyOcrPlugin, Image Cerberus, BayesOCR, OcrPlugin и Tesseract-OCR.

Принцип работы прост: файл обычно преобразуется в PNM, затем передается в gocr, который возвращает текст. Все это требует некоторых ресурсов. Разработки нацелены на англоязычное население, качество распознавания оставляет желать лучшего, поэтому, как правило, требуется дополнительная обработка; но большая часть спама отсеивается при помощи ставших уже стандартными методов, и сегодня применение специальных решений нужно не всегда.

Оставить мнение