Вы здесь

Аутенификация SASL (cyrus-sasl)

SASL – Simple Authentication and Security Layer, это метод аутенификации пользователя для встраивания в сетевые протоколы основанные на соединении. Ниже описана конфигурация одной из реализаций механизма - cysrus-sasl версии 2.

В cysrus-sasl существует два основных способа аутенификации: auxprop - через библиотеку, слинкованную с приложением и saslauthd - по особому протоколу через сервер аутенификации saslauthd.

auxprop позволяет проводить аутенификацию в базе данных SQL (mysql, sqlite), файле BeklyDB или в LDAP. Список вариантов проверки saslauthd можно узнать командой

# saslauthd -v
saslauthd 2.1.26
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap httpform

Один экземпляр saslauthd может использовать только один механизм аутенификации.

Не стоит использовать auxprop совместно с БД, поскольку существующая реализация требует хранить пароли БД открытым текстом. Более гибким способом является связка saslauthd + pam + pam_mysql.

Поддержка SASL включена, в частности, postfix и в cyrus-imapd. Опции SASL для cyrus-imapd прописываются в файл /etc/imapd.conf, для postfix в CentOS 7 - в файле /etc/sasl2/smtpd.conf (/usr/[local/]lib[64]/sasl2/smtpd.conf в других дистрибутивах).

Пример конфигурации с хранением незашифрованных паролей в mysql

Файл конфигурации cyrus-imapd /etc/imapd.conf

#Для отладки взаимодействия с SQL сервером (печать sql-запросов)
sasl_log_level: 5
#Для логирования необходимо вставить в конфигурацию `rsyslogd` строку
#*.=debug /var/log/debug

#Механизм запроса пароля. В данном случае в виде открытого текста.
sasl_mech_list: PLAIN

#Механизм доступа к SASL
sasl_pwcheck_method: auxprop

#Плагин, используемый через auxprop
#Сами плагины лежат в /usr/[local/]lib[64]/sasl2/
sasl_auxprop_plugin: sql

#Опции для sql плагина
# mysql - тип сервера (еще есть sqlite)
sasl_sql_engine: mysql
# Доступ к базе
sasl_sql_user: mailadmin
sasl_sql_passwd: mailpassword
sasl_sql_hostnames: localhost
sasl_sql_database: mail

# Запрос должен извлечь пароль в виде текста для пользователя %u@%r (%r - realm)
# По умолчанию вместо %r подставляется имя хоста, на котором запущен cyrus-imapd
sasl_sql_statement: select password from accountuser where username = '%u' and domain_name = '%r'

Пример использования saslauthd с postfix

Файл конфигурации postfix - /etc/postfix/main.cf

# Сервер, который будет делать проверку
smtpd_sasl_path = smtpd

smtpd_sasl_auth_enable = yes

Файл /etc/sysconfig/saslauthd содержит опции для запуска saslauthd, в том числе, используемый механизм проверки.

MECH=pam

Файл настроек sasl для демона smtpd /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: PLAIN

Файл настроек PAM для службы smtp /etc/pam.d/smtp Приложения передают в saslauthd имя сервиса. postfix передаёт строку smtp.

#%PAM-1.0
auth required pam_mysql.so config_file=/etc/security/pam_mysql.conf [where=smtpauth=1]
account required pam_mysql.so config_file=/etc/security/pam_mysql.conf [where=smtpauth=1]
Яндекс.Метрика