Интеграция с Cyrus SASL

Чтобы реализовать механизм аутентификации SASL клиентов через службу авторизации Cyrus SASL (saslauthd), необходимо выполнить следующие действия:

1.Настроить и запустить службу аутентификации Cyrus SASL (saslauthd).

2.Выполнить настройку Dr.Web MailD на использование Cyrus SASL (все настройки задаются в секции [SASL] и секции [Cyrus-SASL]):

oВключить использование аутентификации SASL и использование драйвера Cyrus SASL:

Use = yes
Driver = cyrus

oВ качестве значения параметра Lib указать корректный путь к библиотеке libsasl;

oВ качестве значения параметра Path указать путь к файлу конфигурации аутентификации клиентов сервисом saslauthd. Например: /etc/sasl2/maild (обратите внимание, что расширение файла .conf указывать в параметре не нужно). Этот файл должен быть помещен в тот каталог, из которого saslauthd читает конфигурацию аутентификации.

warning

Каталог, в котором должен быть расположен конфигурационный фал, зависит от версии Cyrus SASL и используемого дистрибутива ОС.

Cyrus SASL версий 2.x пытается найти файл в каталоге /usr/lib/sasl2/

Cyrus SASL версий 2.1.22 и новее также ищет файл в каталоге /etc/sasl2/

Cyrus SASL в первую очередь ищет файл конфигурации в каталоге /usr/lib/sasl2/. Если она обнаружит файл по этому пути, то другие файлы не будут использоваться.

3.Создать и заполнить файл конфигурации аутентификации (в этом примере – /etc/sasl2/maild.conf). Этот файл состоит из строк вида <параметр>: <значение>. Если параметр допускает список значений, то они должны указываться в одну строку, разделенные пробелом. Обязательны следующие параметры:

opwcheck_method - Метод проверки пароля (способ аутентификации). Здесь указывается имя модуля, используемого для аутентификации. Возможные значения:

Значение

Используемый источник аутентификации

saslauthd

Непосредственно демон saslauthd

auxprop

Модуль, извлекающий атентификационные данные из внешних хранилищ (базы данных, LDAP)

omech_list - Список используемых механизмов аутентификации. Возможные значения: plain, login, cram-md5, digest-md5, ntlm.

Обратите внимание, что если в качестве источника аутентификации выбран неспосредственно saslauthd, то вы можете использовать только механизмы plain и login.

Демон saslauthd может использовать для аутентификации данные, извлекаемые из системного файла /etc/shadow, а также механизм PAM или данные IMAP-сервера. О настройке saslauthd на работу с конкретным источником см. в документации Cyrus SASL.

oЕсли требуется использовать для аутентификации данные, хранящиеся в базах данных или в LDAP, следует использовать authprop. В этом случае источник данных указывается в дополнительном параметре auxprop_plugin. Возможные значения параметра:

Подключаемый модуль

Назначение

sasldb

Использование базы данных sasldb (Berkeley DB для Cyrus SASL)

sql

Использование баз данных MySQL, PostgreSQL, SQLite

ldapdb

Использование LDAP

В случае указания источника sasldb, путь к базе данных указывается в параметре sasldb_path. По умолчанию, если параметр не указан, используется путь /etc/sasldb2.

Если указан источник sql, то следующий набор дополнительных параметров определяет использование базы данных:

Параметр

Назначение

sql_engine

Определяет тип используемой СУБД:

mysql для подключения к MySQL;

pgsql для подключения к PostgreSQL;

sqlite для подключения к SQLite.

sql_hostnames

Определяет хост для подключения к серверу СУБД (имя хоста или пару имя:порт). В случае использования нескольких серверов, адреса можно перечислить через запятую.

Примечание: Для СУБД MySQL укажите localhost для подключения через UNIX-сокет или IP-адрес 127.0.0.1 для подключения через TCP-сокет

sql_user

Имя пользователя для подключения к базе данных

sql_passwd

Пароль пользователя

sql_database

Имя используемой базы данных

sql_select

SQL-оператор SELECT, который должен извлекать из базы данных пароль пользователя в виде plain text.

Важное примечание: Не заключайте текст SQL-выражения в кавычки, а для указания макросов (см. ниже) используйте апострофы.

Макросы, предоставляемые для SQL-выражений, представлены ниже. Они будут заменены на значения соответствующих данных, посланных аутентифицируемым клиентом. Доступны следующие макросы:

%u - Имя пользователя.

%r - Realm (домен), к которому принадлежит пользователь. Это может быть KERBEROS realm, FQDN хоста, на котором запущен SASL, или почтовый домен (часть почтового адреса, указываемая после символа '@')

Если указан источник ldapdb, то следующий набор дополнительных параметров определяет использование LDAP:

Параметр

Назначение

ldapdb_uri

Используемый URI LDAP. Используйте следующие префиксы:

ldapi:// для подключения через UNIX-сокет

ldap:// для подключения через незащищенное TCP-соединение

ldaps:// для использования защищенного TCP-соединения (TLS)

ldapdb_id

Логин для аутентификации на LDAP-сервере (прокси-авторизация)

ldapdb_pw

Пароль (plain text) для аутентификации на LDAP-сервере (прокси-авторизация)

ldapdb_mech

Механизм аутентификации, используемый сервером LDAP

ldapdb_rc

(опционально)

Путь к файлу, содержащему индивидуальные настройки клиента LDAP (libldap). Например, в нем можно определить клиентский сертификат TLS, используемый для защищенного подключения.

ldapdb_starttls

(опционально)

Политика TLS, используемая для подключения к серверу LDAP. Определено два значения – try и demand.

Если указано try, то модуль попытается установить защищенное соединение, а если эта попытка не увенчается успехом, перейдет в режим незащищенного соединения . Если указано demand, и защищенное соединение установить не удается, соединение с сервером LDAP будет разорвано.

Примеры:

1. Простейшая конфигурация (используется saslauthd):

pwcheck_method: saslauthd
mech_list: plain login

2. Использование sasldb:

pwcheck_method: authprop
auxprop_plugin: sasldb
mech_list: plain login cram-md5
sasldb_path: /etc/sasldb2

3. Использование PoslgreSQL:

pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sql_engine: pgsql
sql_hostnames: 127.0.0.1, 192.0.2.1
sql_user: username
sql_passwd: secret
sql_database: dbname
sql_select: SELECT password FROM users WHERE user = '%u@%r'

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