KSMG Подготовка конфигурационных файлов для подключения к LDAP

 

Подготовка конфигурационных файлов для подключения к LDAP

Перед тем, как настроить верификацию получателей через LDAP на встроенном MTA, необходимо подготовить конфигурационный файл, содержащий параметры подключения к LDAP-серверу. Если у вас несколько доменов (лесов) Active Directory, для каждого из них необходимо подготовить отдельный конфигурационный файл.

Каждый файл с параметрами подключения к LDAP представляет собой обычный текстовый файл в формате Unix (LF переводы строк). Имена файлов должны быть такими: ldap_map1.cfldap_map2.cf и т.д.

Процедура подготовки конфигурационного файла состоит из следующих шагов:

1) Создайте на контроллере домена сервисную учетную запись со сложным паролем, которая будет использоваться для подключения к LDAP-серверам данного домена (леса доменов). Для примера будем использовать учетную запись с именем ksmg-relay.

2) Определите DN (Distinguished Name) сервисной учетной записи. Это можно сделать, например, при помощи команды dsquery на контроллере домена:

dsquery user -Name ksmg-relay

DN сервисной учетной записи должен иметь примерно следующий вид:
CN=ksmg-relay,OU=Service Accounts,OU=Users,DC=example,DC=com

3) Определите параметры поиска в LDAP - базу поиска (search_base) и строку запроса (query_filter).

4) Создайте текстовый конфигурационный файл, укажите в нем все обязательные параметры.

В таблице ниже перечислены обязательные параметры, которые должны быть указаны в конфигурационном файле. Более подробное описание всех доступных параметров см. в документации Postfix - http://www.postfix.org/ldap_table.5.html

Параметр

Описание параметра

server_host

Одна или несколько точек подключения к LDAP, перечисляются через запятую.

Формат точки подключения:
протокол://адрес:порт

Протокол - ldap, либо ldaps (безопасное подключение поверх SSL, рекомендуется).

Адрес - IP-адрес, либо доменное имя (конкретного контроллера домена, или общее, для равномерного распределения нагрузки).

Порт - номер TCP-порта для подключения. Возможные значения:
389 - порт для подключения к LDAP (небезопасное подключение)
686 - порт для подключения к LDAPS (безопасное подключение с использованием SSL)
3268 - порт для подключения к службе глобального каталога (небезопасное подключение)
3269 - порт для подключения к службе глобального каталога (безопасное подключение с использованием SSL)

Подключение к службе глобального каталога может использоваться, если у вас несколько доменов Active Directory, объединенных в общий лес.

Пример: Безопасное подключение по протоколу LDAPS, указано общее доменное имя.
server_host = ldaps://example.com:686

Пример: Безопасное подключение по протоколу LDAPS, перечислены имена нескольких контроллеров домена
server_host = ldaps://dc1.example.com:686, ldaps://dc2.example.com:686

Пример: Безопасное подключение к службе глобального каталога, указано имя конкретного контроллера домена
server_host = ldaps://gc.example.com:3269

Пример: Небезопасное подключение по протоколу LDAP, перечислены IP-адреса нескольких контроллеров домена
server_host = ldap://10.88.44.21:389, ldap://10.88.44.22:389

version

Версия протокола LDAP, всегда должно быть 3.

Пример:
version = 3

timeout

Таймаут LDAP-запроса (в секундах). В случае истечения таймаута произойдет переключение на следующую точку подключения.

Пример: Таймаут 10 секунд (подходит, если указана одна точка подключения, или LDAP-серверы сильно нагружены)
timeout = 10

Пример: Таймаут 5 секунд (для более быстрого переключения в случае нескольких точек подключения)
timeout = 5

search_base

База для поиска записей в LDAP. Примеры ниже даны для домена example.com.

Пример: поиск от корня домена
search_base = DC=example,DC=com

Пример: поиск ограничен определенной группой пользователей
search_base = OU=Exchange Users,OU=Users,DC=example,DC=com

query_filter

Строка запроса для поиска записей в LDAP.

Примечание: служба глобального каталога поддерживает только атрибут mail, атрибут ProxyAddresses не реплицируется.

Пример: поиск e-mail адресов по атрибуту proxyAddresses
query_filter = (&(|(objectclass=User)(objectclass=Group))(proxyAddresses=smtp:%s))

Пример: поиск e-mail адресов по атрибуту mail
query_filter = (&(|(objectclass=User)(objectclass=Group))(mail=%s))

Пример: поиск e-mail адресов одновременно по двум атрибутам
query_filter = (&(|(objectclass=User)(objectclass=Group))(|(proxyAddresses=smtp:%s)(mail=%s)))

result_attribute

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

Пример:
result_attribute = cn

bind

Использовать ли привязку учетной записи при подключении, всегда должно быть yes.

Пример:
bind = yes

bind_dn

DN сервисной учетной записи, используемой для подключения к LDAP.

Пример:
bind_dn = CN=ksmg-relay,OU=Service Accounts,OU=Users,DC=example,DC=com

bind_pw

Пароль сервисной учетной записи.

Пример:
bind_pw = XEZ6Lqu5KA9CTn+fY

Пример конфигурационного файла для подключения к LDAP:

server_host = ldaps://dc1.example.com:636, ldaps://dc2.example.com:636

version = 3

timeout = 5

 

search_base = DC=example,DC=com

query_filter = (&(|(objectclass=User)(objectclass=Group))(|(proxyAddresses=smtp:%s)(mail=%s)))

result_attribute = cn

 

bind = yes

bind_dn = CN=ksmg-relay,OU=Service Accounts,OU=Users,DC=example,DC=com

bind_pw = XEZ6Lqu5KA9CTn+fY

Дополнительно можно создать фиксированный список почтовых адресов и/или почтовых доменов, для которых Kaspersky Secure Mail Gateway будет пропускать электронную почту. Если почтовый адрес либо почтовый домен получателя присутствует в этом списке, адресат будет считаться существующим и проверка его наличия через LDAP производиться не будет. Таким образом, этот список можно использовать для обхода проверка через LDAP, если есть такая необходимость.

Данный список представляет собой обычный текстовый файл в формате Unix (LF переводы строк) с именем relay_bypass (без расширения). Формат содержимого файла описан в таблице ниже, каждая запись в файле располагается на новой строке.

Формат записи

Описание

recipient@example.com OK

Почтовый адрес (только указанный адресат)

@example.com OK

Почтовый домен (любой адресат с данным доменом)

Пример содержимого файла:

postmaster@example.com OK

hr@example.com OK

@company.com OK

После того, как конфигурационные файлы для подключения к LDAP подготовлены, можно переходить к настройке верификации получателей через LDAP на встроенном MTA.

Настройка верификации получателей через LDAP на встроенном MTA

Перед тем, как настроить верификацию получателей через LDAP, необходимо отключить действующий механизм проверки получателей. Для этого зайдите в веб-интерфейс управляющего узла, перейдите в раздел Параметры - Встроенный MTA - Расширенные параметры, найдите параметр Отклонять сообщения на адреса получателей, переключите его в режим Не отклонять.

Далее, чтобы настроить верификацию получателей на встроенном MTA через LDAP, необходимо выполнить процедуру, описанную ниже. Эти действия необходимо повторить на каждом узле кластера Kaspersky Secure Mail Gateway, для обеспечения консистентной работы кластера.

1) Подключитесь к узлу кластера по SSH, чтобы получить доступ к режиму технической поддержки.

2) Поместите подготовленные ранее файлы конфигураций для подключения к LDAP-серверам в директорию /etc/postfix. Конфигурационные файлы должны иметь имена ldap_map1.cf, ldap_map2.cf и т.д.

3) Задайте владельца и права доступа к файлам конфигурации:

cd /etc/postfix
chown root:root ldap_map*.cf
chmod 600 ldap_map*.cf

4) Проверьте при помощи команды postmap, что поиск получателя по e-mail через LDAP осуществляются успешно (вместо existing.recipient@example.com укажите адрес существующего пользователя):

postmap -q existing.recipient@example.com ldap:/etc/postfix/ldap_map1.cf

В случае успеха, команда выведет в консоль CN (Common Name) пользователя, которому соответствует указанный e-mail адрес. Процедуру проверки необходимо выполнить для каждого конфигурационного файла. В случае, если команда ничего не выведет на консоль или выдаст ошибку, проверьте параметры, указанные в конфигурационном файле. Дальнейшие шаги можно выполнять только в случае, если все конфигурационные файлы успешно прошли проверку.

5) Если у вас есть дополнительный список получателей для обхода проверки через LDAP, поместите подготовленный файл relay_bypass в директорию /etc/postfix, затем выполните следующие команды:

cd /etc/postfix
chown root:root relay_bypass
chmod 640 relay_bypass
postmap relay_bypass

6) Перейдите в каталог, где находятся шаблоны конфигурационных файлов встроенного MTA:

cd /opt/kaspersky/ksmg-appliance-addon/share/templates

7) Сделайте резервную копию файла шаблона main.cf.template, если не делали этого ранее:

cp -p main.cf.template main.cf.template.backup

8) Откройте на редактирование файл main.cf.template при помощи текстового редактора:

vim main.cf.template

9) Найдите строку smtpd_reject_unlisted_recipient = no, закомментируйте ее (отмечено красным цветом) и добавьте новые строчки ниже (отмечено зеленым цветом):

Если у вас один конфигурационный файл для подключения к LDAP:
# smtpd_reject_unlisted_recipient = no
# Check recipients via LDAP map
smtpd_reject_unlisted_recipient = yes
relay_recipient_maps = ldap:$config_directory/ldap_map1.cf

Если у вас несколько конфигурационных файлов, необходимо их перечислить в параметре relay_recipient_maps через запятую:
# smtpd_reject_unlisted_recipient = no
# Check recipients via LDAP map
smtpd_reject_unlisted_recipient = yes
relay_recipient_maps = ldap:$config_directory/ldap_map1.cf, ldap:$config_directory/ldap_map2.cf

Если у вас есть дополнительный список адресов для обхода проверки через LDAP, добавьте его в директиву relay_recipient_maps перед параметрами LDAP следующим образом:
relay_recipient_maps = hash:$config_directory/relay_bypass, ldap:$config_directory/ldap_map1.cf

10) Если вы хотите изменить код ошибки SMTP для несуществующего адреса получателя с перманентной ошибки (код 550) на временную ошибку (код 450), добавьте следующую строку после директивы relay_recipient_maps:

unknown_relay_recipient_reject_code = 450

11) Сохраните изменения в файле main.cf.template.

12) Чтобы изменения в шаблоне применились, поменяйте какую-нибудь настройку встроенного MTA через веб-интерфейс. Например, можно увеличить на единицу значение параметра Ограничение размера сообщения (Параметры - Встроенный MTA - Основные параметры), сохранить изменения, а потом вернуть предыдущее значение обратно.

13) Проверьте, что изменения попали в основной конфигурационный файл встроенного MTA:

less /etc/postfix/main.cf

14) Проверьте статус сервиса postfix, он должен быть running:

systemctl status postfix

На этом процедура завершена, механизм проверки получателей через LDAP настроен. Процедуру необходимо повторить на каждом узле кластера Kaspersky Secure Mail Gateway.

Проверка работы механизма верификации получателей

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

1) Подключитесь к узлу кластера по SSH, чтобы получить доступ к режиму технической поддержки.

2) Отправьте письмо через данный узел кластера по протоколу SMTP на существующий адрес. Проверьте по файлу лога /var/log/maillog, как письмо было обработано встроенным MTA.

Ожидаемый результат - сообщение было принято с кодом 250:

Apr 05 12:00:00 ksmg01.example.com postfix/smtpd[34903]: proxy-accept: END-OF-MESSAGE: 250 2.0.0 OK; from=<check@example.com> to=<existing.recipient@example.com> proto=ESMTP helo=<mx.example.com>

3) Отправьте письмо через данный узел кластера по протоколу SMTP на несуществующий адрес. Проверьте по файлу лога /var/log/maillog, как письмо было обработано встроенным MTA.

Ожидаемый результат - сообщение было отклонено с кодом 550 (либо 450, если вы меняли код ошибки):

Apr 05 12:00:00 ksmg01.example.com postfix/smtpd[14258]: NOQUEUE: reject: RCPT from mx.example.com[10.88.44.90]: 550 5.1.1 <wrong.recipient@example.com>: Recipient address rejected: User unknown in relay recipient table; from=<check@example.com> to=<wrong.recipient@example.com> proto=ESMTP helo=<mx.example.com>

4) Дополнительно можно проверить, как ведет себя MTA в случае, когда LDAP-сервер недоступен. Для этого ограничьте доступ к LDAP-серверу со стороны данного узла кластера (например, при помощи фаервола). Отправьте письмо через данный узел кластера по протоколу SMTP на существующий адрес. Проверьте по файлу лога /var/log/maillog, как письмо было обработано встроенным MTA.

Ожидаемый результат - сообщение было отклонено с кодом 451:

Apr 05 12:00:00 ksmg01.example.com postfix/smtpd[20451]: NOQUEUE: reject: RCPT from mx.example.com[10.88.44.90]: 451 4.3.0 <another.recipient@example.com>: Temporary lookup failure; from=<check@example.com> to=<another.recipient@example.com> proto=ESMTP helo=<mx.example.com>

Процедуру проверки работоспособности желательно повторить на всех узлах кластера Kaspersky Secure Mail Gateway.

 

Комментарии

Популярные сообщения из этого блога

У вас нет прав для отправки сообщения вместо указанного пользователя. Ошибка: [0x80070005-0x0004dc-0x000524]

Поиск и удаление писем в ящиках Exchange Server