Fazer nss_ldap usar STARTTLS

1

Estou tentando configurar a autenticação LDAP com STARTTLS (li que o TLS / ldaps foi preterido). A autenticação LDAP não criptografada BTW funciona, mas não é isso que eu quero.

Consegui configurar um servidor de diretório LDAP usando este tutorial a partir de uma nova instalação do Ubuntu Server 16.10 (2 máquinas VirtualBox, uma para o servidor, uma para o cliente) e seguiu todas as etapas, incluindo a última etapa opcional para permitir apenas conexões TLS.

Agora, posso executar os comandos ldapwhoami e ldapsearch com o argumento -Z no servidor e no cliente. Assim, parece conexões LDAP para o servidor via trabalho STARTTLS. Quando tento me conectar sem -Z , recebo o seguinte erro (esperado):

Confidentiality required (13)
Additional information: TLS confidentiality required

Agora, desejo usar o servidor para autenticar usuários LDAP no cliente. Para isso eu executei os seguintes comandos no cliente :

sudo apt-get install ldap-auth-client
# LDAP Server: ldap://ldap.example.com
# Base DN:     dc=example,dc=com
# Bind DN:     cn=admin,dc=example,dc=com

sudo auth-client-config -t nss -p lac_ldap

sudo vi /usr/share/pam-configs/mkhomedir
# changed "Default: no" to "Default: yes"
# changed "optional" to "required"

sudo pam-auth-update
# enabled "Create home directory on login"

Agora, quando eu quiser alterar o usuário no cliente com su - otheruser , a seguinte mensagem de erro é anexada a /var/log/auth.log no cliente:

nss_ldap: failed to bind to LDAP server ldap://ldap.example.com: Confidentiality required

Esta é a mesma mensagem de erro de quando eu tento executar comandos LDAP sem STARTTLS (veja acima), então o problema parece ser que nss_ldap não está configurado corretamente para usar STARTTLS.

O que tentei (sem sucesso) é adicionar entradas a /etc/ldap/ldap.conf . Agora parece com isso:

BASE         dc=example,dc=com
URI          ldap://ldap.example.com
TLS_CACERT   /etc/ldap/ca_certs.pem
LDAP_VERSION 3
SSL          start_tls
TLS_REQCERT  allow
    
por bassjoe 03.01.2017 / 16:51

1 resposta

1

Percorrendo a configuração do cliente, eu acidentalmente abri /etc/ldap.conf em vez de /etc/ldap/ldap.conf e fiquei surpreso que ambos existissem!

O arquivo /etc/ldap.conf é gerado pelo debconf, ou seja, ao chamar sudo apt-get install ldap-auth-client ou sudo dpkg-reconfigure ldap-auth-config , e parece ser o usado pelo nss_ldap. Ele contém muitas opções comentadas.

Como o STARTTLS não parece ser suportado pelo assistente debconf, mudei o seguinte em /etc/ldap.conf :

  • removeu a primeira linha ###DEBCONF###
  • desmarcou a linha ssl start_tls

Agora a autenticação no cliente finalmente funciona.

    
por 04.01.2017 / 15:18