Назад | Перейти на главную страницу

svnserve + sasl + ldap: saslauthd не связались?

Я пытаюсь аутентифицировать пользователей Subversion против sasl + ldap. Другие вопросы об этой проблеме, похоже, связаны с более ранними версиями subversion или аутентификацией sasldb.

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.1 (jessie)
Release:    8.1
Codename:   jessie

svnserve --version
svnserve, version 1.8.10 (r1615264)
Cyrus SASL authentication is available.

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

Кажется, что часть sasl + LDAP настроена правильно:

testsaslauthd -u user -p password -r realm
0: OK "Success."

Тестирование с неправильными учетными данными дает ошибку:

testsaslauthd -u wronguser -p wrongpassword -r wrongrealm
0: NO "authentication failed"

И показывает ошибку в auth.log:

Sep 10 22:23:53 xxx saslauthd[30948]: Entry not found ((&(objectClass=posixAccount)(uid=wronguser))).
Sep 10 22:23:53 xxx saslauthd[30948]: Authentication failed for wronguser/wrongrealm: User not found (-6)
Sep 10 22:23:53 xxx saslauthd[30948]: do_auth         : auth failure: [user=wronguser] [service=imap] [realm=wrongrealm] [mech=ldap] [reason=Unknown]

Поэтому я предполагаю, что SASL может нормально связаться с сервером LDAP и получить данные.

Я настроил Subversion с помощью:

/etc/sasl2/svn.conf:
pwcheck_method: saslauthd
mech_list: DIGEST-MD5

проверка svnserve с помощью strace -e open показывает, что он открывает этот файл, а не / usr / lib / sasl2 или аналогичный.

Когда я пытаюсь подключиться через svn-клиент, я получаю

Sep 10 22:31:38 xxx svnserve: DIGEST-MD5 common mech free

в auth.log для каждой попытки, но без информации или ошибок от saslauthd.

Если я добавлю учетную запись пользователя в sasldb2:

saslpasswd2 user -u realm
Password: password

Я могу правильно подключиться из клиента svn. Таким образом, похоже, что sasl использует sasldb2, хотя конфигурация для svn и saslauthd настраивает LDAP.

Решение: Я подключил отладчик и прошел аутентификацию. Оказывается, у меня было две проблемы: Разрешения на / var / log / saslauthd:

drwx--x---  2 root        sasl         140 Sep 27 09:44 saslauthd

означает, что пользователь сервера subversion должен быть частью группы sasl.

Второй более сложный: DIGEST-MD5 полагается на пароли в виде простого текста для вычисления хэша на стороне сервера. В моем каталоге LDAP хранятся зашифрованные пароли SSHA, поэтому сервер никогда не сможет сравнить MD5 от клиента с MD5, вычисленным локально. Я предполагаю, что в каталоге может храниться MD5 (имя пользователя: область: пароль), но я не уверен, поддерживается ли это в sasl, и как вы справитесь с этим, если у вас есть несколько областей.

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

# cat /etc/sasl2/svn.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

Не идеальное решение, но, похоже, пока оно работает. Я думаю, что буду применять ssh + svn для внешнего доступа, и, возможно, я потрачу некоторое время на поддержку TLS для svnserve.

(На это ушло бы гораздо меньше времени, если бы было еще несколько вариантов диагностики и лучшая документация.)