Электронная почта основательно закрепилась в качестве стандарта делового общения. Благодаря высокой экономической эффективности электронных писем, а также ряду особенностей, связанных с цитированием текста и прикреплением вложений, именно электронные письма как нельзя лучше подходят на роль универсального способа для обмена документами и вежливого делового общения. Эти же особенности стали причиной, по которой электронную почту так полюбили спамеры. В результате, на сегодняшний день электронная почта представляет из себя огромный бушующий океан спама, в водах которого лишь изредка встречаются деловые письма. Именно поэтому одной из первоочередных задач администратора любого почтового сервера является защита от спам-рассылок. Давайте же посмотрим на то, что с этим можно сделать в Zimbra Collaboration Suite Open-Source Edition.
Несмотря на бесплатность решения, Zimbra OSE способна предоставить системному администратору массу крайне эффективных инструментов для решения проблемы получения нежелательных писем. Мы уже писали о таких утилитах как Amavis, SpamAssassin, ClamAV и cbpolicyd, которые позволяют надежно фильтровать входящую почту, отсеивая спам-рассылки, а также зараженные и фишинговые письма. Тем не менее, ключевым их недостатком является то, что все они работают с уже полученными почтовыми сообщениями и расходуют на фильтрацию бесполезных сообщений системные ресурсы, которым всегда можно найти гораздо лучшее применение. Но что если ваше предприятие оказалось под прицелом крупного ботнета, который постоянно закидывает ваш почтовый сервер настолько большими количествами мусорных писем, что на одну только их фильтрацию уйдет львиная доля серверных мощностей MTA?
В теории защититься от этого можно при помощи подключения облачного сервиса для фильтрации входящей почты, однако на практике такой способ защиты подойдет далеко не каждому предприятию, ведь в таком случае придется доверить третьим лицам обработку не только спама, но и деловой переписки, что далеко не всегда безопасно, а зачастую и прямо противоречит политике безопасности компании. Кроме того, появляются риски, связанные с надежностью работы облачного спам-фильтра. Выходом из данной ситуации может стать организация защиты сервера собственными силами. Специально для этих целей в Zimbra была встроена утилита Postscreen, которая призвана защищать почтовый сервер от писем, посылаемых ботнетами, не нагружая при этом почтовый сервер.
Суть работы Postscreen заключается в том, что эта утилита просматривает все запросы на подключение к почтовому серверу и не дает соединяться с сервером тем клиентам, которые покажутся ей подозрительными. Поскольку, согласно статистике, около 90% спама в мире рассылается именно ботнетами, Postscreen часто используют как первую степень защиты почтового сервера от нежелательных почтовых рассылок. Благодаря этому почтовый сервер может стабильно работать без перегрузок даже в условиях сильных спам-атак со стороны крупных ботнетов.
Принцип работы Postscreen довольно прост, утилита способна проводить ряд простейших проверок входящих писем перед тем как передать их почтовому серверу или другим службам, которые проводят более глубокую и детальную проверку входящих писем. Каждая из проверок, соответственно, может быть пройдена, а может быть не пройдена. На основании результатов каждой из проверок Postscreen может применить одно из трех действий по выбору администратора Zimbra: Drop, Ignore или Enforce. Действие Drop принудительно разрывает соединение с клиентом в случае, если проверка не пройдена, действие Ignore позволяет игнорировать результаты проверки при принятии итогового решения, но при этом собирать информацию и статистику о проведении проверок, а действие Enforce позволяет учитывать результаты проведенных проверок при вынесении итогового решения, но при этом продолжать выполнять все тесты, которые запланированы системным администратором.
Простой принцип работы вовсе не означает простоту в использовании и настройке. Дело в том, что неправильно сконфигурированный Postscreen может стать причиной, по которой ряд важных для предприятия писем не достигнут адресата. Именно поэтому к настройке такого мощного инструмента как Postscreen необходимо подходить с большой осторожностью и постоянно тестировать его на поведение в тех или иных ситуациях.
Postscreen в Zimbra включен изначально, однако многих может не устроить изначальная конфигурация. Сейчас мы рассмотрим наилучший в плане безопасности и отсутствия рисков вариант настройки Postscreen. Суть его заключается в том, что после провала какой-либо из проверок, Postscreen не будет без разговоров разрывать соединение с клиентом, а проведет все проверки до конца и в том случае, если эти проверки будут провалены, выдаст сообщение об ошибке. Это позволит оповестить живого отправителя о недоставке письма в том случае, если Postscreen примет его за спам. Достигается это установкой значения enforce в параметрах проведения проверок. Именно это значение позволяет завершать начатые проверки до конца, не разрывая соединение с клиентом при первом же провале, но при этом по их завершении все-таки заблокировать письмо со спамом, не доставляя его на сервер.
Для того, чтобы включить необходимые проверки, нужно ввести следующие команды:
zmprov mcf zimbraMtaPostscreenDnsblSites ‘b.barracudacentral.org=127.0.0.2*7’ zimbraMtaPostscreenDnsblSites ‘zen.spamhaus.org=127.0.0.[10;11]*8’ zimbraMtaPostscreenDnsblSites ‘zen.spamhaus.org=127.0.0.[4..7]*6’ zimbraMtaPostscreenDnsblSites ‘zen.spamhaus.org=127.0.0.3*4’ zimbraMtaPostscreenDnsblSites ‘zen.spamhaus.org=127.0.0.2*3’
Эта команда позволяет добавить DNS-проверку входящих соединений по двум наиболее популярным публичным спам-базам и рейтинговать письма в зависимости от того, в какой из баз будет найден адрес отправителя. Чем больше штрафных «звезд» наберет клиент, тем более вероятно, что он является спамером
zmprov mcf zimbraMtaPostscreenDnsblAction enforce
Этой командой определяется действие, которое совершается по итогам прохождения DNS-проверки. В данном случае результат проверки запоминается, а само письмо продолжает проходить дальнейшие тесты.
zmprov mcf zimbraMtaPostscreenGreetAction enforce
Поскольку в SMTP-протоколе, после непосредственного соединения, сервер первым начинает общение с клиентом и, соответственно, Postscreen может послать клиенту приветствие. Благодаря тому, что многие спам-клиенты, не дожидаясь окончания приветствия, начинают посылать команды, их можно легко распознать. Данная команда позволяет учесть результаты данной проверки, но при этом продолжать выполнить дальнейшие тесты.
zmprov mcf zimbraMtaPostscreenNonSmtpCommandAction drop
В рамках данной проверки Postscreen позволяет отсеять те подключения, которые исходят не от почтовых клиентов. Поскольку никаких писем они не посылают, можно безо всяких опасений отключать их от сервера.
zmprov mcf zimbraMtaPostscreenPipeliningAction enforce
Данная проверка основывается на том, что по умолчанию в протоколе SMTP клиент может отправить лишь одну команду за раз и затем ожидать ответа сервера на эту команду. Однако многие спам-боты ведут себя иначе, отправляя множество команд, не дожидаясь ответа от сервера. Это позволяет практически безошибочно идентифицировать спам-бота.
В принципе, данных проверок для Postscreen будет более чем достаточно для того, чтобы отсечь от сервера основную массу спам-ботов и добиться значительного снижения нагрузки на свой почтовый сервер. При этом живые люди будут получать сообщение о том, что их письмо не было доставлено, что значительно снижает риск потери важных писем из-за настроек Postscreen. В том случае, если такое произошло, вы можете добавить надежного отправителя в белый список Postscreen. Для того, чтобы создавать белые и черные списки Postscreen, сперва необходимо создать файл /opt/zimbra/conf/postfix/postscreen_wblist.
В него мы добавим перечень разрешенных и запрещенных ip-адресов и подсетей в формате таблицы CIDR. Для примера заблокируем подсеть 121.144.169.*, но разрешим подключение единственному ip-адресу из данной подсети:
# Rules are evaluated in the order as specified.
# Blacklist 121.144.169.* except 121.144.169.196.
121.144.169.196/32 permit
121.144.169.0/24 reject
Обращаем ваше внимание на важность порядка записей. Дело в том, что Postscreen будет сканировать файл с белыми и черными списками до первого совпадения и если заблокированная подсеть будет стоять раньше разрешенного ip-адреса, то проверка просто не дойдет до записи о том, что данный ip-адрес добавлен в белый список и соединение с сервером не произойдет.
После того как файл с белыми и черными списками отредактирован и сохранен, можно включать соответствующую проверку при помощи следующих команд:
zmprov mcf zimbraMtaPostscreenAccessList «permit_mynetworks, cidr:/opt/zimbra/conf/postfix/postscreen_wblist»
zmprov mcf zimbraMtaPostscreenBlacklistAction enforce
Теперь Postscreen, помимо уже заданных нами проверок, будет также обращаться к файлу с белыми и черными списками, что позволит администратору достаточно легко решать вопросы с невозможность подключения к серверу надежных отправителей.
Источник: habr.com