Problema de autenticação do Samba 4 OpenLDAP

2

O que eu fiz até agora

  • Servidor DHCP instalado e bind9 para a rede local de clientes (o servidor deve atuar como um gateway)
  • construiu o Samba4 a partir do código-fonte com o bind9_dlz como o backend do dns
  • instalado OpenLDAP usando apt-get install slapd ldap-utils
  • alterou as portas slapd para 390,637 devido ao bloqueio do samba 389,636
  • importou o esquema samba ldap, inicialmente configurou o diretório ldap e provisionou o domínio
  • instalado libnss-ldapd para autenticação ldap ( getent passwd exibe corretamente os usuários LDAP)
  • deu ao samba a senha do administrador para meu diretório ldap ( smbpasswd -w xxx )

O problema

Eu entrei em um cliente do Windows 7 para o domínio e tentei fazer login em um usuário criado com smbldap-useradd . Eu recebo uma mensagem de senha errada do windows mas absolutley sem erros / avisos do samba. Meu usuário de teste é realmente existente no LDAP (verificado com phpldapadmin ), então presumo que o samba não esteja falando corretamente com o ldap. Estou preso neste momento e preciso de ajuda!

O que eu notei

Eu configurei passdb backend = ldapsam:ldap://testsrv.alfr.local:390/ , o que não está aparecendo na saída de testparm (veja abaixo).

Software que estou usando

  • Ubuntu Server 12.04 atualizado
  • Samba 4.1.6 compilado da fonte (repositório oficial do git)
  • Vincular 9.8.1
  • slapd 2.4.28
  • isc-dhcp-server 4.1

Configurações e saídas

  • Nome do host do servidor: testsrv
  • Nome do domínio: alfr.local
  • 2 interfaces de rede, eth0 = DHCP, externamente WAN, eth1 = 192.168.25.1 (o servidor atua como DHCP para essa rede, variando de 25,50 a 25,254)

Saída de testparm

root@testsrv:~# testparm 
Load smb config files from /usr/local/samba/etc/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[profiles]"
Processing section "[netlogon]"
Processing section "[sysvol]"
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_ACTIVE_DIRECTORY_DC
Press enter to see a dump of your service definitions

[global]
    workgroup = ALFR
    realm = alfr.local
    server role = active directory domain controller
    passdb backend = samba_dsdb
    add user script = /usr/sbin/smbldap-useradd -m '%u' -t 1
    rename user script = /usr/sbin/smbldap-usermod -r '%unew' '%uold'
    delete user script = /usr/sbin/smbldap-userdel '%u'
    add group script = /usr/sbin/smbldap-groupadd -p '%g'
    delete group script = /usr/sbin/smbldap-groupdel '%g'
    add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
    delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
    add machine script = /usr/sbin/smbldap-useradd -w '%u' -t 1
    domain logons = Yes
    os level = 10
    preferred master = Yes
    domain master = Yes
    dns proxy = No
    wins support = Yes
    ldap admin dn = cn=admin,dc=alfr,dc=local
    ldap group suffix = ou=Groups
    ldap idmap suffix = ou=Idmap
    ldap machine suffix = ou=Computers
    ldap suffix = dc=alfr,dc=local
    ldap ssl = no
    ldap user suffix = ou=Users
    server services = rpc, nbt, wrepl, cldap, ldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb
    dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
    rpc_server:tcpip = no
    rpc_daemon:spoolssd = embedded
    rpc_server:spoolss = embedded
    rpc_server:winreg = embedded
    rpc_server:ntsvcs = embedded
    rpc_server:eventlog = embedded
    rpc_server:srvsvc = embedded
    rpc_server:svcctl = embedded
    rpc_server:default = external
    idmap config * : backend = tdb
    map archive = No
    map readonly = no
    store dos attributes = Yes
    vfs objects = dfs_samba4, acl_xattr

[profiles]
    path = /srv/samba/profiles
    read only = No
    create mask = 0611
    directory mask = 0700
    profile acls = Yes
    map hidden = Yes
    map system = Yes
    browseable = No
    csc policy = disable

[netlogon]
    path = /usr/local/samba/var/locks/sysvol/alfr.local/scripts
    read only = No

[sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = No

[homes]
    comment = Eigener Ordner
    path = /srv/samba/homes/%S
    read only = No
    create mask = 0611
    directory mask = 0711
    browseable = No
    vfs objects = acl_xattr, full_audit
    full_audit:failure = connect opendir disconnect unlink mkdir rmdir open rename
    full_audit:success = connect opendir disconnect unlink mkdir rmdir open rename

Saída de ps aux (corte coisas sem importância)

root@testsrv:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       699  0.0  0.0   7272   608 ?        Ss   08:08   0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth
bind       827  0.0  2.8 502280 58392 ?        Ssl  08:08   0:01 /usr/sbin/named -u bind
dhcpd      833  0.0  0.2  14552  4476 ?        Ss   08:08   0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/ltsp/dhcpd.conf
openldap  1024  0.0  0.3 722000  6524 ?        Ssl  08:08   0:00 /usr/sbin/slapd -h ldap://127.0.0.1:390/ ldaps://127.0.0.1:637/ ldapi://%2fvar%2frun%2fslapd%2fldapi/??
root      1051  0.0  0.0 693092  1172 ?        Ssl  08:08   0:00 /usr/sbin/nscd
nslcd     1075  0.0  0.0 443600  1376 ?        Ssl  08:08   0:00 /usr/sbin/nslcd
ntp       1279  0.0  0.0  25960  1836 ?        Ss   08:08   0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:114
root      1595  0.0  2.2 534364 46152 ?        Ss   09:52   0:00 samba start
root      1597  0.0  1.8 538976 38532 ?        S    09:52   0:00 samba start
root      1598  0.0  1.7 539772 35624 ?        S    09:52   0:00 samba start
root      1599  0.0  1.6 536876 33716 ?        S    09:52   0:00 samba start
root      1600  0.0  1.6 534364 34568 ?        S    09:52   0:00 samba start
root      1601  0.0  1.8 534804 37568 ?        S    09:52   0:00 samba start
root      1602  0.0  1.8 538516 37212 ?        S    09:52   0:00 samba start
root      1603  0.0  1.6 534364 34328 ?        S    09:52   0:00 samba start
root      1604  0.0  1.6 537192 33928 ?        S    09:52   0:00 samba start
root      1605  0.0  1.5 534364 32716 ?        S    09:52   0:00 samba start
root      1606  0.0  2.0 534364 41264 ?        S    09:52   0:00 samba start
root      1607  0.0  1.6 534364 33884 ?        S    09:52   0:00 samba start
root      1608  0.0  1.6 534364 33360 ?        S    09:52   0:00 samba start

/etc/nsswitch.conf

root@testsrv:~# cat /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the 'glibc-doc-reference' and 'info' packages installed, try:
# 'info libc "Name Service Switch"' for information about this file.

# pre_auth-client-config # passwd:         compat
passwd: files ldap
# pre_auth-client-config # group:          compat
group: files ldap
# pre_auth-client-config # shadow:         compat
shadow: files ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

# pre_auth-client-config # netgroup:       nis
netgroup: nis
    
por peipst9lker 04.04.2014 / 10:36

3 respostas

2

Eu não vejo nenhuma diretiva de segurança no seu arquivo de configuração. Eu suponho que você quer segurança = ad. Eu passei o mês passado tentando fazer exatamente a mesma coisa - use o OpenLDAP como banco de dados principal de informações de login do usuário.

Eu testei algumas abordagens:

  1. O Samba 4 AD não pode confiar no momento (o Samba Team publicará em breve o Samba 4.2 no momento da escrita), então você não pode usar mecanismos de confiança.

  2. O Samba 4 no AD, até onde eu sei, não pode ser baseado no OpenLDAP porque falta de esquemas necessários ao Active Directory.

  3. Estou cansado de usar um software chamado LSC, que basicamente permite que você sincronize usuários e grupos entre o AD e o OpenLDAP. Nenhuma sorte aqui também. A documentação e os exemplos da LSC estão desatualizados e não são compatíveis com a versão atual. Eu finalmente consegui fazer com que a sincronização do usuário funcionasse, mas há poucos bugs (pelo menos no LSC v2.0 eu estou cansado), quando você atualiza a senha no OpenLDAP, o LSC não a captura. Você precisa armazenar senhas em texto simples para que funcione.

Por enquanto, nenhum controlador do Samba AD com o OpenLDAP como backend. Estou planejando furar o controlador de domínio NT clássico assim que o Samba apoiará relações de confiança, então eu quero delegar relações de confiança de uma direção (do samba4 NT DC ao Samba4 AD) e usá-lo no controlador de domínio AD com informações do usuário localizado no OpenLDAP.

Se alguém encontrar algum erro aqui, ficarei mais do que feliz em ouvi-lo. ; -)

UPDATE : De acordo com a informação de Francesco Malvezzi no Samba 4.3, a confiança agora é suportada:

link

Improved support for trusted domains (as AD DC)

The support for trusted domains/forests has improved a lot.

samba-tool got "domain trust" subcommands to manage trusts:

create - Create a domain or forest trust.

delete - Delete a domain trust.

list - List domain trusts.

namespaces - Manage forest trust namespaces.

show - Show trusted domain details.

validate - Validate a domain trust.

External trusts between individual domains work in both ways (inbound and outbound). The same applies to root domains of a forest trust. The transitive routing into the other forest is fully functional for kerberos, but not yet supported for NTLMSSP.

While a lot of things are working fine, there are currently a few limitations:

  • Both sides of the trust need to fully trust each other!
  • No SID filtering rules are applied at all!
  • This means DCs of domain A can grant domain admin rights in domain B.
  • It's not possible to add users/groups of a trusted domain into domain groups.

Exemplo de configuração: link

Trust relationship is created and can be check using winbind:

wbinfo -u -> get local users list

wbinfo -u --domain=trusted.domain.tld -> get trusted domain users list (short domain can be used too)

It can also be validated using --local-dc-username and --local-dc-password switches:

samba-tool domain trust validate trusted.domain.tld \ --local-dc-password=trustedAdminPass \ --local-dc-username=administrator \ -U administrator at trusted.domain.tld

Using Samba's internal DNS make DNS queries forwarding transparent (with the few tools I think about to check).

To be able to connect on machine.A.domain.tld using a user from B.domain.tld you'll have to "Authenticated users" special group to RDP authorized peoples.

Ainda estou esperando até que esteja disponível no canal oficial da minha distro (debian 8-9).

    
por 31.01.2015 / 20:49
-1

Você tem necessidade explícita de usar o ldap?

Eu uso o diretório ativo do samba há mais de um ano e o único problema que tenho é com o timescew. Você deve verificar isso especialmente quando estiver usando máquinas virtualizadas.

    
por 16.09.2014 / 19:54
-1

Eu tenho feito um servidor LDAP com o SAMBA. Os problemas que enfrentei com o SAMBA, e que podem te atrapalhar, estão entre a configuração de diferentes versões do SAMBA. Você tem certeza que usou a configuração apropriada para sua versão do samba? Seria muito útil se você copiasse a .bash_history para que eu possa procurar qualquer configuração incorreta ou mesmo testá-la em uma máquina.

    
por 16.09.2014 / 18:39