Средства межсетевого экранирования стали де-факто атрибутом любой сетевой инфраструктуры. Почтовому трафику тоже необходимы средства фильтрации. Поэтому в современных релеях реалях тяжело представить почтовую инфраструктуру организации без почтовых шлюзов (mail gateways).
Зачем нужен почтовый шлюз и как его выбрать #
Электронная почта (ЭП) является одним из векторов атак, как средство для доставки ВПО клиентам с целью проникновения в корпоративную сеть организации. Но у ЭП есть и еще один враг - спам, мешающий работе и заполняющий полезное дисковое пространство на почтовых серверах. Для решения данных проблем, уже разработаны решения: коммерческие и распространяемых под свободными лицензиями. Из коммерческих наибольшей популярностью пользуется продукт Cisco Email Security Appliance (ESA). Но все мы знаем про проблемы “окирпичивания” и отзывов окончания лицензий вендоров в текущих условиях, поэтому попробуем посмотреть в сторону свободно распространяемых продуктов.
Свободные решения считаются более сложными в настройке и требуют опыта настройки и администрирования. Конечно, можно накатить CentOS и поставить туда Postfix с использованием SpamAssassin, ClamAV, OpenDKIM, SPF и DMARC. Однако, если вам, как и мне, хотелось бы раскатать одну виртуалку (в которой уже из коробки есть все необходимое), зайти на вебку и все там настроить - тогда ваш выбор - Proxmox Mail Gateway (PMG).
Proxmox Mail Gateway #
Многие слышали о Proxmox благодаря решению для виртуализации - Proxmox VE (PVE), как замену ESXi от VMWare. Поэтому людям, знакомых с PVE, PMG не покажется чем-то новым в установке и администрировании, так как это тот же Debian с тем же Web-интерфейсом, только заточен под ЭП.
Кто использует Proxmox Mail Gateway #
Честно сказать, я думал, что мало кто использует данный программный продукт и скептически относился к нему, как замена для ESA. Однако, информация с shodan меня удивила и придала мне уверенности, что я не один такой.
378 результатов скана shodan
Wildberries похоже тоже успешно используют Proxmox
Где ставить #
Как говорилось выше, почтовый шлюз является аналогией межсетевого экранирования для почты. Поэтому ставить PMG, как и любой другой шлюз, нужно вразрез (на границе попадания почтового трафика извне) прохождения почтового трафика. Таким образом, между SMTP-сервером отправителя (или спамера) и SMTP-сервером получателя есть барьер в виде почтового шлюза.
На чем ставить #
PMG поставляется в виде ISO-инсталлятора. Поэтому на чем его устанавливать - решение на вкус и цвет каждого. Хоть на старый ПК, хоть на сервак, хоть использованием виртуализации.
Установка #
Установка предельно простая, описана в официальной документации и мало чем отличается от установки типичной ОС из ISO-инсталлятора. Пользователи PVE вообще не заметят существенной разницы.
Как зайти #
После успешной установки, для управления PMG необходимо перейти в браузере по адресу: https://{ip_or_domain_name_pmg}:8006 и ввести учетные данные, указанные при установке.
Настройка Proxmox Mail Gateway #
Если описывать настройку всех возможностей, то статья превратится в документацию сайта разработчика, поэтому опишу кратко основные (необходимые) параметры. Для настройки (администрирования) механизмов почтового шлюза представлены следующие разделы:
-
Mail Filter - настройка цепочек правил контентной фильтрации писем (аналог Content Filters у ESA). Касается обработки писем и действий над ними;
-
Configuration - настройка основных параметров самого шлюза. Включение/отключение механизмов защиты, настройки сети, ретрансляции, антивирусного и спам движков, управление пользователями, настройка кластера, бекапирования, сертификатов;
-
Administration - управление почтовыми очередями, карантинами, настройка Black/White листов, просмотр трекинга сообщений;
Mail Filter #
PMG из коробки уже наделен цепочками правил в Mail Filter, готовыми к работе на страже вашего почтового трафика. Подробно останавливаться на этом не вижу смысла, кто работал с ESA - поймет, и допилит под себя, кто впервые на это смотрит - необходимо понять суть. Суть в том, что для построений цепочек правил (Rules) существуют следующие объекты:
-
Action Objects - действия, применяемые при попадании в правило (Rule). Например, доставить письмо пользователю, дропнуть письмо, поместить в карантин, удалить вложения, оповестить администратора и т.д.;
-
Who Objects - сгруппированные по какому-либо признаку списки объектов, относящихся к отправителю или получателю (конкретные адреса, домены, IP-адреса, регулярные выражения и т.д.);
-
What Objects - сгруппированные по какому-либо признаку списки объектов, относящихся к содержимому электронного письма (картинки, ссылки, вложения, офисные файлы и т.д.);
-
When Objects - сгруппированные по какому-либо признаку списки объектов, относящихся к временному интервалу, например, нерабочее время или ночь;
Блокировка адресов из блеклиста
Соответственно, подобно составлению ACL, комбинирование данных объектов в цепочку - это и есть правила. Образно работает это так: Если мне прислали письмо от [email protected] (адрес из Blacklist в Who Objects), в письме офисный документ .docx (файл из What Objects) - заблокировать письмо или отправить в карантин (действие из Action Objects).
Блокировка писем с офисными документами
Configuration #
Основной раздел для настройки работы почтового шлюза. В этом разделе первым делом нужно настроить Mail Proxy.
Mail Proxy #
В разделе Relaying в поле Default Relay указываем IP-адрес или доменное имя SMTP-сервера, на который нужно отправлять письма дальше (сервер, обслуживающий ваш домен).
- В разделе Relay Domains необходимо добавить домены, обслуживаемые вашим SMTP-сервером. Делается это для того, чтобы PMG понимал, какие письма ему обрабатывать и отправлять дальше.
- В разделе Ports вы можете изменить какие порты PMG должен слушать. По-умолчанию 25 порт (External) служит для приема писем снаружи (из Интернета). Порт 26 (Internal) является релеем для получения писем от вашего почтового сервера и отправки их затем наружу (на другие почтовые домены).
- В разделе Transports необходимо указать какому домену какой SMTP-сервер использовать для пересылки. У вас может быть несколько обслуживаемых доменов и на каждый из этих доменов может быть свой SMTP-сервер.
- В разделе Networks необходимо указать доверенные сети - сети с которых будет разрешен прием для пересылки на другие домены. Делается это для того, чтобы письма пересылались наружу только с ваших доверенных SMTP-серверов.
- В разделе TLS можно включить TLS при отправки и получении сообщений. Это означает, что при включенном TLS PMG будет пытаться отправлять письма наружу с использованием расширения ESMTP - STARTTLS, а так же сможет такие такие письма принять.
-
В разделе DKIM можно включить подпись исходящих сообщений. О том как добавить в PMG свой ключ подписи - написано в документации.
-
В разделе Whitelist можете указать те адреса и домены, которые не будут проходить проверки, включенные в разделе Options.
-
В разделе Options настраивайте механизмы проверок в зависимости от политики вашей организации. От себя хочу посоветовать изменять стандартный баннер и не показывать всем, что вы используете.
На этом основное конфигурирование почтового шлюза заканчивается. Все остальные настройки корректируются в зависимости от ваших личных предпочтений и требований безопасности.
Spam Detector #
В качестве антиспам-решения PMG использует под капотом SpamAssassin. По-умолчанию включен и готов к работе из коробки. Для изменения параметров антиспама используются разделы: Options, Quarantine, Status, Custom Scores
Virus Detector #
В качестве АВЗ PMG использует движок ClamAV. По-умолчанию включен и готов к работе из коробки. Для изменения параметров антивирусного движка используются разделы: Options, ClamAV, Quarantine
Cluster #
Cisco ESA позволяет работать в режиме кластера. Это означает, что у вас может быть 2 почтовых шлюза (для балансировки нагрузки или отказоустойчивости). При этом режиме работы, настройки и политики применяемые на одном шлюзе синхронизируются с другим и наоборот (аналог стека у коммутаторов).
Proxmox Mail Gateway так же из коробки позволяет сделать вам кластер из нескольких нод. Аналогией является кластер в PVE, где несколько физических гипервизоров можно объединить в кластер.
Настройка банально проста и происходит в разделе Cluster. Для настройки объединения нод PMG в кластер необходимо:
- На мастер ноде создать кластер (нажать кнопку Create) и подождать завершения операции;
Создание кластера
- На мастер ноде нажать на кнопку Add и скопировать себе IP Address и Fingerprint;
Копирование фингерпринта
- На ноде, которую хотите добавить в кластер нажать кнопку Join и ввести IP Address, Пароль и Fingerprint, скопированного с мастер-ноды.
Добавления ноды в кластер
Кластер готов. Теперь настройки применяемые на одной из нод будут применены и на другой. Все просто, не так ли?
Рабочий кластер из двух нод
Итог #
И это все? Конечно, да нет. Данная статья рассчитана на то, чтобы познакомить вас с таким замечательным, на мой взгляд, решением, как Proxmox Mail Gateway. Конечно до Cisco ESA ему еще далеко, но из того, что предлагает OpenSource - это топ. Настройки, приведеные в статье позволяют лишь подготовить PMG для пересылки писем от внешнего отправителя на внутренний почтовый сервер и наоборот. Как я говорил в самом начале, прелесть данного решения в готовности к бою со спамом из коробки, при минимальных затратах на его настройку. Главная задача настройки сводится к “направлению” почтового трафика через почтовый шлюз. Прелесть данного решения еще и в том, что под капотом Debian с Postfix, SpamAssassin, ClamAV, OpenDKIM и т.д., которые уже взаимодействуют между собой. Все, что вам остается - тюнить правила и политики. Если не хватает возможностей с вебки - лезем по SSH на PMG, устанавливаем пакеты, конфигурируем файлы, танцуем с бубном - все в ваших руках, все как мы любим. Ну и, конечно же - чтение документации. У PMG есть свои утилиты для управления политиками, а так же Rest API.
Не забудьте указать на вашем SMTP-сервере (MTA) в качестве релея - PMG с портом 26, для отправки всех писем наружу через шлюз. Так же не забудьте настроить NAT на вашем пограничном оборудовании, чтобы внешний IP с портом 25 указывал на 25 порт PMG. Дерзайте!