Почтовый шлюз для MS Exchange 2007 на базе FreeBSD 7.0 + Postfix 2.4::Журнал СА 11.2008
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
1001 и 1 книга  
19.03.2018г.
Просмотров: 6830
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7361
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4612
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3160
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3965
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3967
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6470
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3312
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3591
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7450
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10814
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12527
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14233
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9263
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7210
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5518
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4749
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3567
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3276
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3508
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3162
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Почтовый шлюз для MS Exchange 2007 на базе FreeBSD 7.0 + Postfix 2.4

Архив номеров / 2008 / Выпуск №11 (72) / Почтовый шлюз для MS Exchange 2007 на базе FreeBSD 7.0 + Postfix 2.4

Рубрика: Администрирование /  Электронная почта

Антон Сенько

Почтовый шлюз для MS Exchange 2007
на базе FreeBSD 7.0 + Postfix 2.4

Недавно фирма, в которой я работаю, перешла на корпоративную почту на базе MS Exchange 2007. Тут же возник вопрос: как защитить почтовый сервер от внешних атак и спама. Об этом и пойдет речь в статье.

Почему так?

Не секрет, что MS Exchange – мощное средство для построения корпоративной почты уровня предприятия, и все больше фирм переходят на это решение от компании Microsoft. Но вместе с этим множественные проблемы с безопасностью продуктов Microsoft могут порядком осложнить жизнь системному администратору, поэтому обычно почтовый сервер прячется за какой-либо пограничный сервер, который работает в качестве SMTP-шлюза – то есть, пересылает письма изнутри периметра безопасности в Глобальную сеть и наоборот.

В MS Exchange 2007 появилась новая роль сервера – Edge Transport Server, призванная выполнять функции пограничного сервера, но для ее использования необходим выделенный сервер, работающий под управлением Windows 2003 Server SP1 либо выше. Поэтому для небольших фирм использование Edge может оказаться неприемлемым, так как это связано с еще большими финансовыми вливаниями: сервер, лицензия для серверной Windows, антивирус. Кроме прочего, все это не плохо бы спрятать за ISA. Отличной альтернативой может стать любая Linux/UNIX-система с установленным MTA Postfix.

Постановка задачи

Итак, что хотим:

  • каждый пользователь в фирме должен иметь корпоративную почту;
  • переписку с внешним миром могут вести только пользователи с внешним почтовым адресом;
  • MS Exchange-сервер спрятан в локальной сети за почтовым шлюзом;
  • письма принимаются только для существующих адресов, проверка адресов производится на почтовом шлюзе;
  • единое хранилище пользовательских аккаунтов – Active Directory;
  • антивирусная проверка и фильтрация спама происходит так же на почтовом шлюзе.

 Что имеем:

  • server.company.ru – FQDN-сервер, на котором установлен Postfix;
  • company.ru – имя внешнего почтового домена;
  • mx.company.local – имя сервера Exchange, работающего под управлением Win2k3, IP-адрес – 192.168.1.1;
  • company.local – имя локального домена Active Directory;
  • gw – имя хоста FreeBSD-сервера, внутренний IP-адрес – 192.168.1.10.

Настройка Postfix

Последней стабильной версией MTA Postfix на момент написания статьи являлась postfix-2.4.7, ее и будем использовать для реализации, а в качестве платформы шлюза отлично подойдет любая *BSD-система, в данном случае FreeBSD 7.0.

Устанавливать Postfix лучше из портов:

gw# cd /usr/ports/mail/postfix24

gw# make config

Поскольку мы хотим проверять существование пользователя в Active Directory, собираем Postfix с поддержкой OpenLDAP, для этого нужно отметить соответствующую опцию в открывшемся диалоге (см. рис. 1):

gw# make install clean

gw# rehash

Рисунок 1. Опции сборки Postfix

Рисунок 1. Опции сборки Postfix

После установки в директории /usr/local/etc/postfix появятся конфигурационные файлы, находим main.cf и правим параметры:

# /usr/local/etc/postfix/main.cf

myhostname = server.company.ru

mydomain = company.ru

myorigin = $mydomain

mydestination = $myhostname

mynetworks_style = host

mynetworks = 192.168.1.1/32, 127.0.0.0/8

Теперь нужно настроить антивирусную проверку и фильтрацию нежелательной почты. Описание этих мероприятий выходит за рамки статьи. Как это сделать, можно прочитать на сайтах [1, 2]. Кроме всего прочего очень рекомендуется включить грейлистинг. Я использую для этих целей пакет gld-1.7, который присутствует в портах, в связке с MySQL [3].

Для того чтобы Postfix мог пересылать почту внутрь сети, нужно добавить в main.cf следующие параметры:

# /usr/local/etc/postfix/main.cf

# Описываем виртуальный домен

virtual_mailbox_domains = company.ru

# Информацию о почтовых ящиках искать в LDAP (в нашем случае - AD)

virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap.cf

# Описываем куда пересылать приходящую почту

transport_maps = hash:/usr/local/etc/postfix/virtual_transport

После этого создаем файл ldap.cf и описываем, где искать данные о почтовых ящиках:

# /usr/local/etc/postfix/ldap.cf

server_host = ldap://company.local

server_port = 389

timeout = 60

search_base = DC=company,DC=local

query_filter = (&(proxyAddresses=smtp:%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(objectClass=user) \

(objectClass=group)(objectClass=contact)(objectClass=publicFolder)))

result_format = %s

result_attribute = cn

special_result_attribute =

scope = sub

bind = yes

bind_dn = ldaplookup@company.local

bind_pw = secret_password

dereference = 0

domain = company.ru

version=3

debuglevel = 0

Здесь, в параметре server_host, указан не сервер, у которого запрашиваются данные о существовании пользователя, а имя домена Active Directory, при этом необходимо позаботиться о том, чтобы на FreeBSD корректно разрешались имена из DNS-зоны company.local. Это сделано для того, чтобы Postfix при получении новой корреспонденции не был привязан к конкретному серверу и связка оставалась работоспособной, пока доступен хотя бы один контроллер домена.

Особое внимание нужно обратить на параметр query_filter. По сути, это запрос, который осуществляет выборку из базы LDAP. Используя такой фильтр, запрос будет возвращать почтовые адреса для не заблокированных

(!(userAccountControl:1.2.840.113556.1.4.803:=2) [4]) объектов, принадлежащих классам user, group, contact и publicFolder. Синтаксис ldap.cf зависит от версии Postfix, так что будьте внимательны: без правки, со старыми версиями MTA подобная схема работать не будет!

Параметры bind_dn и bind_pw содержат имя и пароль учетной записи в AD (ее нужно предварительно создать), от имени которой будет происходить поиск.

После этого следует создать файл /usr.local/etc/postfix/virtual_transport и указать в нем, куда пересылать приходящую в домен company.ru почту:

# /usr/local/etc/postfix/virtual_transport

company.ru smtp:[192.168.1.1]

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

gw# postmap /usr/local/etc/postfix/virtual_transport

Для автоматического запуска Postfix, в /etc/rc.conf добавляем:

# /etc/rc.conf

postfix_enable="YES"

Последним штрихом запрещаем пересылку писем в Интернет от локальных почтовых адресов, например, таким образом:

# /usr/local/etc/postfix/sender_access

 

/.*company\.local/i REJECT Sending to internet is forbidden

И подключаем sender_access в main.cf:

# /usr/local/etc/postfix/main.cf

 

smtpd_sender_restrictions = check_sender_access regexp:/usr/local/etc/postfix/sender_access

Теперь почта с локальных адресов не будет перенаправляться в Интернет, и пользователь получит соответствующее сообщение об ошибке, внутренняя же корреспонденция, о которой Postfix даже «не подозревает», будет доставляться без проблем.

Несанкционированно отправить письмо от другого имени пользователь также не сможет, если это не разрешено ему явно в настройках учетной записи в «Консоли управления Exchange».

Осталось только запустить Postfix:

gw# postfix start

и убедиться, что в логах нет ошибок:

gw# cat /var/log/maillog

Переходим к MS Exchange.

Настройка MS Exchange

Как установить и сделать начальное конфигурирование сервера MS Exchange, можно прочитать в [5, 6], мы же остановимся подробней на том, как «научить» его работать по задуманной схеме.

На Exchange-сервере понадобится создать SMTP-соединитель для отправки почты в Интернет через почтовый шлюз и разрешить получать почту от Postfix без авторизации, а также указать обслуживаемый домен.

Открываем консоль управления MS Exchange и переходим: «Конфигурация организации -> Транспортный сервер-концентратор» и выбираем в панели задач (Action Panel, не путать с системной панелью задач) «Создать обслуживаемый домен».

В открывшемся диалоге нужно ввести имя почтового домена company.ru, и выбирать «Домен внутренней ретрансляции», затем нажать кнопку «Создать».

Рисунок 2. Добавление глобального домена

Рисунок 2. Добавление глобального домена

Соединитель отправки и разрешение на получение почты от Postfix без авторизации проще создать из командной строки, для этого нужно открыть командную консоль Exchange и ввести:

[PS] C:\> New-SendConnector -Name 'Outbound' -Usage 'Internet' -AddressSpaces 'smtp:*;1' \

-DNSRoutingEnabled $false -SmartHosts '[192.168.1.10]' -SmartHostAuthMechanism 'None' -SourceTransportServers 'MX'

здесь: Outbound – имя коннектора, MX – NetBios имя Exchange-сервера.

[PS] C:\> Set-ReceiveConnector "Default MX" -permissiongroups: "ExchangeUsers, ExchangeServers, ExchangeLegacyServers, AnonymousUsers"

Эти настройки можно также сделать в графической консоли управления: «Конфигурация организации -> Транспортный сервер-концентратор -> Соединители отправки и Настройка серверов -> Транспортный сервер-концентратор -> Получающие соединители».

Следует отметить, что если Exchange разворачивался в локальном домене, то политикой по умолчанию каждому почтовому ящику будет присваиваться адрес вида login@company.local, где login – имя пользователя для входа в домен AD. Пользователь с таким адресом не сможет получить почту от других серверов в Интернете, так как company.local – это локальный домен, известный только DNS-серверу компании. Поэтому пользователю, которому необходима возможность обмена электронной почтой с внешними серверами, нужно добавить адрес вида anyname@company.ru и сделать его адресом по умолчанию.

Для этого в консоли управления Exchange нужно перейти: «Настройка получателей -> Почтовые ящики», и открыть свойства почтового ящика на вкладке «Адреса электронной почты».

В открывшемся диалоге нужно добавить желаемый адрес, убрать галку «Автоматически обновлять адреса электронной почты на основе политики адресов электронной почты», встать курсором на созданный адрес и нажать кнопку «Сделать обратным адресом» (см. рис. 3).

Рисунок 3. Добавление пользователю внешнего адреса

Рисунок 3. Добавление пользователю внешнего адреса

Адрес по умолчанию в этом диалоге выделяется жирным шрифтом. В случае если нужно обеспечить каждого пользователя внешней почтой, проще будет создать новую политику адресов электронной почты, либо отредактировать политику по умолчанию.

Кроме этого, следует четко понимать, что при такой связке на почтовом шлюзе нет локальных почтовых ящиков, поэтому адреса «по умолчанию», такие как postmaster@company.ru, root@company.ru, нужно дополнительно прописать в почтовом ящике системного администратора описанным выше способом, но не делать их «обратным адресом». Если этого не сделать, то отчеты, которые шлет и сама FreeBSD, и отчеты о неудачной доставке от MAILER-DAEMON будут теряться.

Заключение

Хочется отметить, что подобная схема показала себя с наилучшей стороны. Postfix, настроенный в соответствии с рекомендациями [1, 3], пропускает максимум 5-7 нежелательных писем в месяц, при нагрузке около 100 пользователей. В начале внедрения, в течение двух недель, были выявлены и прописаны в исключениях несколько «честных» серверов, письма с которых расценивались как спам.

Все управление учетными записями сводится к манипулированию ими в Консоли управления Exchange, никаких дополнительных настроек на postfix для пользователей делать не нужно. Кроме того, подобный подход позволяет снять нагрузку с сервера Exchange в плане фильтрации нежелательной корреспонденции и исключить издержки на приобретение антиспам-фильтров и антивирусов, умеющих работать с хранилищем Exchange.

Также, будучи скрытым в локальной сети, сервер Exchange надежно защищен от сетевых атак извне, что делает почтовую систему более устойчивой, а сон системного администратора – глубже и спокойней.

P.S.: Хочется поблагодарить Агапова Владимира за его статью [8], именно в ней была почерпнута основная идея такой связки.

  1. http://demon.yekt.com/postfix_antyspam.html.
  2. http://demon.yekt.com/clamav_antivirus_postfix.html.
  3. http://www.reid.ru/freebsd/?p=269.
  4. http://blogs.msdn.com/muaddib/archive/2008/10/08/query-individual-properties-of-the-useraccountcontrol-active-directory-user-property.aspx.
  5. Лопутнев С., Ильин Д. Microsoft Exchange Server 2007. Первые шаги по развёртыванию и настройке. //Системный администратор, №2, 2008 г. – С. 40-47.
  6. http://www.msexchange.ru.
  7. http://antonborisov.ru/2008/06/02/postfix-kak-frontend-dlya-exchange-2007.
  8. Агапов В. Устанавливаем связку Postfix + Exchange. //Системный администратор, №7, 2005 г. – С. 42-44.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru