Аутентификация пользователей c использованием библиотеки Cyrus SASL

© Andrey Domas

Введение

Cyrus IMAP Server для аутентификации пользователей использует библиотеку Cyrus SASL. Пожалуйста ознакомьтесь с документацией на Cyrus SASL для получения более детальной информации о SASL.

Аутентификационные механизмы

На момент написания этого руководства, основная библиотека Cyrus SASL поддерживает  такие SASL-механизмы, как CRAM-MD5, DIGEST-MD5, KERBEROS_V4 и GSSAPI. Cyrus IMAP, POP и LMTP также поддерживают STARTTLS используя сертификаты на стороне клиента и внешние (EXTERNAL) аутентификационные методы.

GSSAPI - это спецификация Kerberos 5. И еще, STARTTLS-сертификация на стороне клиента не была должным образом протестирована.

Когда STARTTLS разрешен, PLAIN SASL-механизм (если установлен) также будет доступен. Это нормально, потому что всеравно нельзя будет передать пароль открытым текстом по шифрованному соединению.

Рекомендации


Настройка аутентификации

Cyrus SASL имеет множество опций, кторое могут быть настроены через использующее ее (библиотеку) приложение. Для настройки через smtp/imapd.conf, к нужной опции просто добавляется префикс  sasl_ (например: pwcheck_method будет выглядеть как  sasl_pwcheck_method).

/etc/sasldb2

Простейший метод аутентификации заключается в использовании аутентификационной базы libsasl, аккаунты в которой создаются с помощью утилиты "saslpasswd2". В настройках должно стоять "sasl_pwcheck_method: auxprop" и в SASL у sasldb должен быть установлен auxprop-модуль (это ставится по умолчанию). Удостоверьтесь, что Cyrus может прочитать из "/etc/sasldb2":

chown cyrus /etc/sasldb2*

Shadow Passwords (Теневые пароли)

Реализация аутентификации пользователей из "/etc/shadow" более сложна , т. к. cyrus-пользователь не может чиатть файл теневых паролей. Также, это не полволит использовать механизмы shared secret. Чтобы осуществить это, необходимо настроить libsasl с поддержкой  saslauthd, и прописать в настройках "sasl_pwcheck_method: saslauthd". Библиотека SASL будет вызывать внешнююутилиту, запущенную от имени root'а, чтобы аутентифицировать пользователей.

Kerberos

Настройка Kerberos v4

Cyrus IMAP сможет поддерживаеть Kerberos v4 если библиотеку SASL собрать(откомпилировать) с поддержкой KERBEROS_V4.

Вам потребуется создать для сервера идентификатор Kerberos v4  и добавить ключ сервера в файл "srvtab". Cyrus-пользователь должен иметь право на чтение на этот файл. Сервер убдет иметь идентификатор Kerberos вида "imap.HOST@REALM", где "HOST " - первый компонент имени хоста сервера, а "REALM " - область Kerberos.

  1. Вот пример процедуры создания srvtabфайла для хоста с именем "foobar":
    ksrvutil -f /var/imap/srvtab add

    Ниже идет информация для запроса "ksrvutil". Необходимо вводить значения или нажимать  RETURN(Enter) . В этом примере имя хоста - "foobar", а имя области - "ANDREW.CMU.EDU".

       Name: imap
       Instance: foobar
       Realm: ANDREW.CMU.EDU
       Version number: 
       New principal: imap.foobar@ANDREW.CMU.EDU; version 0
       Is this correct? (y,n) [y] 
       Password: 
       Verifying, please re-enter Password: 
       Key successfully added.
       Would you like to add another key? (y,n) [y] n
  2. Если Вы планируете внедрять Kerberized POP, создайте идентификатор Kerberos "pop.HOST@REALM" и добавте ключ в файл "srvtab". Аналогично, если использовать LMTP через TCP, создайте Kerberos-идентификатор "lmtp.HOST@REALM" и добавте ключ в файл "srvtab ".
  3. Сделайте cyrus-пользователя владельцем файла "srvtab ":
    chown cyrus /var/imap/srvtab
  4. Добавте поцию srvtab в /etc/imapd.conf:
       srvtab: /var/imap/srvtab
  5. Протестируйте все это командой  imtest -m KERBEROS_V4. i mtest попытается авторизовать текущего Unix-пользователя независимо от текущей авторизации. Этого не бутет при использовании опции " -u" .

Разрешение проблем Kerberos_V4

Запустите программу "krbck"(находится в директории  imap) как cyrus-пользователь на IMAP-сервере. Эта программа продиагностирует неготорые конфигурачионные ошибки Kerberos v4.

Настройка Kerberos v5

Cyrus IMAP сможет поддерживать Kerberos v5 если библиотека SASL собрана с поддержкой GSSAPI.

Вам нужно будет создать идентификатор Kerberos v5 для сервера. Ключи Kerberos v5 хранятся в "/etc/krb5.keytab".

  1. Добавте ключ "imap/hostname" используя "kadmin".
  2. Дайте cyrus-пользователю право на чтение "/etc/krb5.keytab ":
    chown cyrus /etc/krb5.keytab
  3. Проверте настройки с помощью  imtest -m GSSAPI. i mtest попытается авторизовать текущего Unix-пользователя независимо от текущей авторизации. Этого не бутет при использовании опции " -u".

© Andrey Domas