FreeBSD: OpenLDAP, SASL e GSSAPI

2

Eu tive alguns problemas ao obter o OpenLDAP no FreeBSD (8.2-STABLE) para autenticar usando os tickets do Kerberos. Espero ter acabado de ter uma falha cerebral, então, por favor, sinta-se à vontade para me informar que senti falta de algo óbvio.

Veja onde estão as coisas:

  • O Kerberos funciona bem.

    Eu posso adquirir credenciais usando kinit e posso usar essas credenciais para autenticação (por exemplo, para login ssh ou telnet).

  • O OpenLDAP é instalado e funciona com autenticação básica.

  • O slapd está claramente ligado às bibliotecas do SASL; ldd .../slapd relatórios:

    libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x800d07000)
    
  • Existe /usr/local/lib/sasl2/slapd.conf com o seguinte conteúdo:

    mech_list: GSSAPI
    
  • Relatórios slapd compatíveis com a autenticação GSSAPI:

    $ ldapsearch -x -b '' -s base supportedSASLMechanisms
    dn:
    supportedSASLMechanisms: GSSAPI
    
  • Existe /etc/krb5.keytab com chaves para host/<myhostname> e ldap/<myhostname> .

  • O servidor / cliente SASL de amostra parece funcionar bem com a autenticação gssapi:

    # server -p 2222 -s ldap -m gssapi
    

    Seguido por:

    # client -p 2222 -s ldap -m gssapi
    

    Por fim, resulta em:

    successful authentication
    

E ainda assim ...

Não consegui obter slapd para aceitar a autenticação GSSAPI. Basta tentar executar ldapwhoami , com um tíquete Kerberos válido, o que resulta no seguinte erro:

SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Other (e.g., implementation specific) error (80)
    additional info: SASL(-1): generic failure: GSSAPI Error:  No credentials were supplied, or the credentials were unavailable or inaccessible. (unknown mech-code 0 for mech unknown)

O mesmo erro é registrado por slapd . Eu meio que bati em uma parede aqui; slapd mesmo com várias depurações ativadas não está me fornecendo nada útil. Ajuda?

Atualização : Só por diversão, decidi tentar configurar o OpenLDAP dentro de uma cadeia Linux (CentOS 5) para ver se o comportamento era diferente. Depois de reconstruir os pacotes OpenLDAP (o suporte a Linux do FreeBSD não inclui a chamada de sistema epoll() ), ele estava me dando mensagens de erro que pareciam um pouco mais úteis (com relação aos principais Kerberos ausentes). Pelo menos parecia estar realizando a negociação GSSAPI corretamente. Então parece que esta é uma questão do FreeBSD ... talvez? Esperando por informações de alguém lá fora.

    
por larsks 10.06.2011 / 17:20

2 respostas

1

E ... misteriosamente começou a funcionar. Para o registro, aqui está o que parece ser um processo repetitivo:

  • Instale a segurança / cyrus-sasl2.
  • Instale net / openldap24-server. Certifique-se de ativar o suporte a SASL.
  • Instale net / openlda24-client, também com suporte a SASL.
  • Inicialize o Kerberos por manual . Certifique-se de adicionar o ldap/... principal apropriado.
  • Certifique-se de que o slapd possa ler um arquivo keytab. O mecanismo mais simples é:

    chgrp ldap /etc/krb5.keytab
    chmod g+r /etc/krb5.keytab
    
  • Configure o slapd para o SASL. Você provavelmente desejará definir sasl-host , sasl-realm e sasl-regexp .
  • Configure valores apropriados para BASE e URI em /usr/local/etc/openldap/ldap.conf .

Teste adquirindo um tíquete Kerberos e, em seguida, executando ldapwhoami -Y GSSAPI .

    
por 16.06.2011 / 15:10
0

Eu tive exatamente o mesmo problema e no final descobri que era porque eu tinha configurado o sasl-host no slapd.conf para ser o hostname do servidor kerberos.

Quando alterei o sasl-host para ser o nome do host do ldap (por exemplo, sasl-host ldap.example.com), funcionou corretamente.

    
por 14.02.2015 / 13:39