svnserve + sasl + ldap: saslauthd não foi contatado?

5

Estou tentando autenticar usuários do subversion contra o sasl + ldap. Outras questões sobre esse problema parecem estar relacionadas a versões anteriores do subversion ou autenticação 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

A parte sasl + LDAP parece estar configurada corretamente:

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

Testar com credenciais erradas dá um erro:

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

E mostra um erro no 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]

Suponho que o SASL pode entrar em contato com o servidor LDAP e obter os dados.

Eu configurei o subversion com:

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

verificar svnserve com strace -e open mostra que ele abre este arquivo, e não / usr / lib / sasl2 ou similar.

Quando tento me conectar de um cliente svn, obtenho

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

no auth.log para cada tentativa, mas nenhuma informação ou erro do saslauthd.

Se eu adicionar a conta de usuário ao sasldb2:

saslpasswd2 user -u realm
Password: password

Eu posso me conectar do cliente svn corretamente. Então parece que o sasl usa o sasldb2, mesmo que a configuração do svn e do saslauthd configure o LDAP.

    
por user1387 10.09.2015 / 23:42

1 resposta

1

Solução: Anexei um depurador e passei pela autenticação. Acontece que eu tive dois problemas: Permissões em / var / log / saslauthd:

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

significa que o usuário do servidor "subversion" precisa fazer parte do grupo sasl.

O segundo é mais complicado: o DIGEST-MD5 depende de senhas de texto simples para calcular um hash no lado do servidor. Meu diretório LDAP armazena senhas criptografadas SSHA, portanto, o servidor nunca poderia comparar o MD5 do cliente com um MD5 computado localmente. Eu acho que o diretório poderia armazenar MD5 (username: realm: password), mas eu não tenho certeza se isso é suportado em sasl, e como você iria gerenciar isso se você tiver vários reinos.

Eu realmente não quero armazenar senhas de texto simples, então, por enquanto, a solução é usar somente autenticação não criptografada:

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

Não é uma solução perfeita, mas parece funcionar por enquanto. Eu acho que vou impor o ssh + svn para acesso externo, e talvez eu invista algum tempo no suporte a TLS para o svnserve.

(Isso consumiria muito menos tempo com mais algumas opções de diagnóstico e melhor documentação.)

    
por 27.09.2015 / 11:24