Como o Samba pode ser configurado para usar o LDAP apenas para autenticação?

2

Eu estou olhando para configurar um novo compartilhamento de arquivos Samba que usa LDAP para autenticação de back-end. O servidor LDAP já está configurado e a máquina em que o servidor Samba estará ligado já está configurada para permitir o acesso SSH usando a autenticação LDAP.

Parece que os casos de uso mais comuns documentados para a integração Samba / LDAP envolvem o armazenamento de esquemas do Samba no servidor LDAP, a sincronização de senhas, a permissão de atualizações de senha para o LDAP via Samba e assim por diante. Eu não estou procurando nada disso - tudo que eu quero fazer é ter o servidor Samba autenticado anonimamente através de LDAP, e recuperar os dados do grupo no usuário para que a autorização possa ser manipulada na configuração do Samba.

Se é importante:

  • LDAP: OpenLDAP 2.4 no RHEL 7.4
  • SMB: Samba 4.7 no Ubuntu 18.04

Aqui está o que eu tenho até agora:

[global]
    server string = Samba Server (%v)
    workgroup = WORKGROUP
    interfaces = eno1
    server role = standalone server
    log file  = /var/log/samba/smb.log
    max log size = 10000
    log level = 3 passdb:5 auth:5

    passdb backend = ldapsam:ldaps://hostname
    ldap suffix = dc=hostname,dc=TLD
    ldap user suffix = cn=users,cn=accounts
    ldap group suffix = cn=groups,cn=accounts

[Share1]
    path = /srv/share1
    valid users = @group1, @group3
    force group = @group1
    read only = no
    browsable = yes

[Share2]
    path = /srv/share2
    valid users = @group2, @group3
    force group = @group2
    read only = no
    browsable = yes

O Samba não será iniciado, no entanto. O status do Systemctl exibe o seguinte:

../source3/passdb/secrets.c:362(fetch_ldap_pw)
  fetch_ldap_pw: neither ldap secret retrieved!
../source3/passdb/pdb_ldap.c:6542(pdb_init_ldapsam_common)
  pdb_init_ldapsam_common: Failed to retrieve LDAP password from secrets.tdb
../source3/passdb/pdb_interface.c:180(make_pdb_method_name)
  pdb backend ldapsam:ldaps://hostname did not correctly init (error was NT_STATUS_NO_MEMORY)

Eu gostaria que não tivesse que fazer o seguinte:

  • Configurar um novo usuário para o próprio servidor Samba para usar
  • Permitir que o Samba modifique o LDAP
  • Carregar o esquema do Samba para o LDAP

Eu só quero que o Samba:

  • Confirme se as solicitações de entrada têm um usuário / passe válido configurado no LDAP
  • Use os dados do LDAP no usuário (nome, grupos, etc) para sua própria configuração de permissões de compartilhamento

O que mais eu preciso fazer?

    
por Brian Bauman 18.10.2018 / 21:25

1 resposta

0

Eu suponho que você queira rodar o Samba no modo de controlador de domínio compatível com WinNT, não no modo completo do Active Directory.

Primeiro, você precisa entender que a autenticação SMB é baseada em um hash de senha NTLM. Basicamente, essa é uma credencial de texto não criptografado para uma autenticação de resposta a desafio que pode ser armazenada em entradas do usuário LDAP, mas em um atributo separado sambaNTPassword . Atributo userPassword não é usado e o Samba não envia uma solicitação de ligação ao servidor LDAP para verificar a senha do usuário.

= > Você deve instalar o esquema do Samba e incluir a classe de objeto auxiliar sambaSamAccount nas entradas do usuário.

Em uma configuração apropriada, você tem que autorizar o usuário do serviço do Samba DC a ler este atributo sambaNTPassword . Suas ACLs devem impedir que qualquer outra pessoa leia esse atributo.

= > Você deve criar uma entrada de serviço para o Samba DC no diretório LDAP e conceder acesso de leitura às entradas do usuário.

Há também uma sobreposição de servidor OpenLDAP chamada slapo-smbk5pwd que atualiza sambaNTPassword no caso de o atributo userPassword ser definido via senha. veja RFC 3062 . Ao usar isso, você não terá que conceder acesso de gravação do Samba à entrada do usuário.

    
por 22.10.2018 / 19:28