Servidor independente do Samba usando LDAP para autenticação: incompatibilidade de SID

5

Estou tentando colocar meu novo servidor samba em funcionamento há dias e começo a perder a cabeça por não descobrir o que estou fazendo de errado. Aqui está minha configuração:

Servidor OpenLDAP 2.4.21 com ~ 15 grupos e > 100 usuários, todos com uma senha unix e samba armazenada no LDAP, bem como um SID do Usuário e um SID do Grupo Primário atribuídos e armazenados no LDAP, derivados do SID do servidor LDAP.

Agora eu quero usar vários servidores samba para usar o servidor LDAP para autenticar usuários. O servidor samba é um linux configurado com o NSS / PAM usando o servidor ldap. getent passwd / group retorna todos os usuários e o ssh para a máquina do samba funciona para todos os usuários. Agora aqui está o smb.conf:

[global]
workgroup = XXXXX
security = user
passdb backend = ldapsam:ldap://myldapserver
ldap suffix = dc=mydomain,dc=com
ldap admin dn = cn=replicator,dc=mydomain,dc=com
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap machine suffix = ou=computers
ldap ssl = start tls

A conexão ldap funciona, como pdbedit -L mostra

pm_process() returned Yes
smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=SAMBAHOSTNAME))]
StartTLS issued: using a TLS connection
smbldap_open_connection: connection opened
ldap_connect_system: successful connection to the LDAP server
The LDAP server is successfully connected
smbldap_search_paged: base => [dc=mydomain,dc=com], filter => [(&(uid=*)(objectclass=sambaSamAccount))],scope => [2], pagesize => [1024]
smbldap_search_paged: search was successful
sid S-1-5-21-[LDAPSID]-5168 does not belong to our domain

e, em seguida, a última mensagem é repetida para todos os uids. Usando smbclient -L localhost -U someid o arquivo de log diz:

check_ntlm_password:  Checking password for unmapped user [XXX]\[someid]@[SAMBAHOST] with the new password interface
check_ntlm_password:  mapped user is: [SAMBAHOST]\[someid]@[SAMBAHOST]
StartTLS issued: using a TLS connection
smbldap_open_connection: connection opened
ldap_connect_system: successful connection to the LDAP server
The LDAP server is successfully connected
init_sam_from_ldap: Entry found for user: someid
Home server: SAMBAHOST
Home server: SAMBAHOST
init_group_from_ldap: Entry found for group: 1011
init_group_from_ldap: Entry found for group: 1011
Primary group S-1-5-21-[LDAPSID]-1000 for user someid is a UNKNOWN and not a domain group
Forcing Primary Group to 'Domain Users' for someid
ntlm_password_check: Checking NTLMv2 password with domain [CIN]
sam_account_ok: Checking SMB password for user someid
The primary group domain sid(S-1-5-21-[LOCALSID]-513) does not match the domain sid(S-1-5-21-[LDAPSID]) for someid(S-1-5-21-[LDAPSID]-5708)
check_sam_security: make_server_info_sam() failed with 'NT_STATUS_UNSUCCESSFUL'
check_ntlm_password:  Authentication for user [someid] -> [someid] FAILED with error NT_STATUS_UNSUCCESSFUL

O que eu vejo aqui é que o servidor samba não reconhece o grupo primário do usuário (que é um grupo existente no LDAP) e, portanto, mapeia o grupo primário para seu grupo "Usuários do Domínio" local que obviamente não corresponde ao domainSID do userid. Mas por que o servidor samba não reconhece o grupo? Ou existe um problema subjacente diferente?

O que eu tentei até agora:

Alterando o SID do servidor samba para o SID do servidor LDAP, mas net setlocalsid S-... não alterou o SID local. Nenhuma mensagem de erro, apenas executada com sucesso, mas getlocalsid retornou o SID antigo.

Configurando o id de domínio do servidor samba para o SID do servidor ldap. net setdomainsid S-... foi bem-sucedido, mas o servidor samba ainda se recusa a autenticar os usuários.

Tentei adicionar o servidor ao domínio com net join XXX , mas a resposta foi apenas "servidor autônomo não pode ingressar no domínio".

Eu tentei executar smbpasswd -a para adicionar o usuário ao banco de dados samba local (mesmo que isso não seja uma opção para a solução final, mas é o que outros usuários recomendaram), mas o erro não mudou. / p>

Como eu posso dizer ao samba para ignorar a incompatibilidade de SID do domínio ou forçar o samba a ter o mesmo SID que o LDAP? Ou isso causaria outros problemas se ~ 10 Samba Server e o LDAP no final tivessem exatamente o mesmo SID?

    
por Phil 13.06.2013 / 21:25

1 resposta

3

Eu tive um problema semelhante. O que eu tive que fazer foi editar as entradas do sambaSID para o domínio, usuário e grupo no LDAP para que eles correspondessem com o que meu servidor tinha. Caso contrário, você receberá a seguinte mensagem de erro no log do Samba em seu servidor. Para ver este log, certifique-se de log level = 2 em seu smb.conf .:

[2015/12/03 14:39:19.753690,  1] ../source3/auth/server_info.c:346(samu_to_SamInfo3)
  The primary group domain sid(S-1-5-21-748580849-194208185-3916830000-513) does not match the domain sid(S-1-5-21-2566626306-4294080665-3504248766) for someuser(S-1-5-21-2566626306-4294080665-3504248766-11678)
[2015/12/03 14:39:19.753733,  0] ../source3/auth/check_samsec.c:492(check_sam_security)
  check_sam_security: make_server_info_sam() failed with 'NT_STATUS_UNSUCCESSFUL'
[2015/12/03 14:39:19.753755,  2] ../source3/auth/auth.c:288(auth_check_ntlm_password)
  check_ntlm_password:  Authentication for user [someuser] -> [bbogaert] FAILED with error NT_STATUS_UNSUCCESSFUL
[2015/12/03 14:39:19.753777,  2] ../auth/gensec/spnego.c:743(gensec_spnego_server_negTokenTarg)
  SPNEGO login failed: NT_STATUS_UNSUCCESSFUL

No seu servidor, execute net getdomainsid . Isso retornará o localsid e domainsid . Estes valores devem corresponder . Se eles não executarem net setdomainsid para o valor de SID for local machine .

root@TheWiggle:~# net getdomainsid
SID for local machine THEWIGGLE is: S-1-5-21-748580849-194208185-3916830000
SID for domain THISDOMAIN is: S-1-5-21-748580849-194208185-3916830000

Agora, em seu servidor LDAP, use o valor SID for domain e verifique se esse é o valor do atributo sambaSID para sambaDomainName=THISDOMAIN .

Verifique também se sambaSID e sambaPrimaryGroupID dos usuários e sambaSID do grupo são compostos de SID for domain e um valor exclusivo para o atributo.

Por exemplo, o sambaSID para someuser seria S-1-5-21-748580849-194208185-3916830000-99999 e o sambaPrimaryGroupID seria S-1-5-21-748580849-194208185-3916830000-555 . O sambaSID do grupo seria S-1-5-21-748580849-194208185-3916830000-77777

Espero que isso ajude !!!

    
por 03.12.2015 / 23:44