PDC Samba com OpenLDAP

Recentemente precisei implantar Samba como PDC autenticando em uma base LDAP. Encontrei muito material na internet, porém alguns muito complexos, outros incompletos. A questão é que deve-se saber muito bem o que está fazendo antes de um projeto como esse. Ainda mais levando em conta que a base LDAP irá autenticar outros serviços, como squid e aplicações internas. Costumo aplicar a filosofia KISS (Keep It Simple, Stupid), pois quanto mais complexo for, mais fácil é de dar problemas e mais demorado é para solucioná-los. Tudo isso tive que levar em conta, afinal não quero perder meu emprego.

Após ler vários manuais e fazer inúmeros testes, fiz a implantação do Samba + OpenLdap + Squid. Este é um passo-a-passo que criei enquanto fazia a implantação.

Tutorial: Samba como PDC + OpenLdap + Squid no Debian Etch.

Instalar o Samba: aptitude install samba samba-doc winbind
Arquivo exemplo de configuração do smb.conf: smb.conf

Instalar o OpenLDAP: aptitude install openssl db4.2-util sasl2-bin libsasl2-modules libsasl2-modules-ldap slapd ldap-utils

Copiar o schema do samba para o ldap:
cd /usr/share/doc/samba-doc/examples/LDAP/
gunzip samba.schema.gz
cp samba.schema /etc/ldap/schema/
cd /etc/ldap

Arquivo exemplo de configuração do slapd.conf: slapd.conf

descomentar a linha: allow bind_v2
Adicionar o schema do samba(no final da lista):
include /etc/ldap/schema/samba.schema
suffix “dc=empresa,dc=com,dc=br”
password-hash {MD5}
rootdn “cn=admin,dc=empresa,dc=com,dc=br”
rootpw (senha MD5)
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
by dn=”cn=admin,dc=empresa,dc=com,dc=br” write

Comando para criar senha: slaplasswd -h {MD5} -s senha

reiniciar openldap: etc/init.d/slapd restart

verificar se está online: netstat -lnt |grep 389
ps aux |grep slapd

Instalar smbldap-tools:aptitude install smbldap-tools

Editar os arquivos em /etc/smbldap.conf:

smbldap.conf

smbldap_bind.conf

Pegar o SID do samba: net getlocalsid

Passar a senha do admin do openldap para o samba: smbpasswd -w senha_adm_ldap

Popular a base: smbldap-populate

Inserir usuário root na base ldap: smbpasswd -a root (caso dê erro, popule a base novamente)

Instalar nss: aptitude install libnss-ldap
editar /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
editar /etc/libnss-ldap.conf
bind policy soft (remover logs na inicialização do servidor)

Verifique se o sistema está reconhecendo os usuários da base com o comando: getent passwd

Por indicação do pessoal da lista debian-br estou utilizando a ferramenta LAM (LDAP Account Manager) para gerenciar minha base LDAP. Realmente é uma excelente opção para gerenciamento de um PDC.

instalar dependências: aptitude install apache2 apache2-ssl php5 php5-ldap php5-mhash php-fpdf
site oficial: http://sourceforge.net/projects/lam
wget http://ufpr.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.2.0-1_all.deb
dpkg -i ldap-account-manager_2.2.0-1_all.deb

Configurar a memória do apache:
editar o arquivo /etc/php5/apache2/php.ini
Alterar o parâmetro memory_limit para 64M

Acessar o endereço: http://seu_ip/lam

Para configurar o squid para acessar a base ldap basta utilizar a autenticação ldap_auth:

auth_param basic program /usr/lib/squid/ldap_auth -b “ou=users,dc=empresa,dc=com,dc=br” -h ip_do_servidor_ldap -v 3

No meu próximo post, abordarei backup e réplica da base LDAP.

Anúncios

15 respostas para “PDC Samba com OpenLDAP

  • Diorgenes Mello

    Olá, meus parebéns. Muito bom seu tutorial. Facial e sucinto.
    Mas Acho que pode ser melhorado. Tem algumas coisas que não são obvias e eu tive e ainda estou quebrando a cabeça. Posso passar algumas sugestões para seu correio. o que acha disso? Só falta uma pequena duvida: Eu tenho que criar o Dominio dentro do LAM, ele não achou as informações do Dominio. Será que eu fiz alguma coisa errada?

  • Leonardo

    Ola Bruno. Muito bom o seu tutorial.
    Estou com o seguinte problema, gostaria de saber se voce saberia a solucao.
    O meu proxy ainda autentica no antigo dominio windows. Gostaria de migrar a autenticacao para o LDAP tb.
    Hoje, os parametros do squid sao
    /usr/local/squid/libexec/squid_ldap_group -R -b dc=meudominio,dc=com,dc=br” -D “cn=proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br” -w “*****” -f “(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=Internet,dc=dominioveltrac,dc=com,dc=br))” -h 192.168.0.1

    jah criei esses objetos e grupos (proxy_user e os grupos) no ldap. o object class na linha de comando creio q tenha q colocar como inetOrgPerson (como esta listado no ldap), mas mesmo assim nao funciona. a autenticacao da maneira que eh feita hoje eh dividida em grupos (um permite download de executaveis e outro nao). agradeco se puder me responder

  • Rodrigo Miguel

    Fiz todos os passos porém o samba não conseguia acessar o ldap mesmo com o serviço up, escutando na porta 389, ao verificar o /var/log/syslog a seguinte mensagem era exibida:
    failed to bind to server ldap://127.0.0.1 with dn=”cn=admin,dc=xxxx,dc=xxx,dc=xx” Error: Can’t contact LDAP server

    Solução:
    Defini a porta do ldap na config do samba /etc/samba/smb.com
    passdb backend = ldapsam:ldap://127.0.0.1:389

    Alterei a config do /etc/ldap/ldap.conf
    BASE dc=xxxx, dc=xxx, dc=xx
    URI ldap://127.0.0.1:389

  • Edson

    Eu estou tendo o mesmo problema, já verifiquei as suas dicas, mas ainda continua.

    root@ubuntu:/etc/ldap# net getlocalsid xxxxxx.RJ
    [2009/01/08 14:55:31, 0] lib/smbldap.c:smbldap_connect_system(992)
    failed to bind to server ldap://127.0.0.1 with dn=”cn=admin,dc=xxxxxx,dc=RJ” Error: Invalid credentials
    (unknown)
    SID for domain xxxxxx.RJ is: S-1-5-21-3795218145-456597293-1763196476

    Quer dizer… o OpenLdap está funcionando e o samba também, mas um não está se comunicando com o outro…

  • Sandro Alves

    Henrique ,segui os passos do tutorial mas quando eu mando popular eu tenho o seguinte erro:

    failed to add entry: attribute ‘sambaNextRid’ not allowed at /usr/sbin/smbldap-populate line 499, line 237.

    voce tem idéia o que pode ser isso .

    obs: Utilizo o debian lenny

    • Marcones Nunes

      para resolver o erro de sambaNextRid basta alterar a linha no arquivo

      /etc/smbldap-tools/smbldap.conf deixando assim

      sambaUnixIdPooldn=”sambaDomainName=SEU_DOMINIO_SAMBA,${suffix}”

      e o dominio samba tem que ser em caixa alta mesmo.

      Valeu

  • francisco oliveira

    o arquivo smb.conf nao esta disponivel tem com vc verificar isso, grato.

  • Marcelo

    O seu exemplo do arquivo smb.conf não está disponível.

    Está apresentando a seguinte mensagem:
    The content of this file is dangerous

    Favor verificar. Grato!

  • Fernando

    Pessoal,

    Hoje tenho o samba como pdc no dominio + dns usando um dominio local…por exemplo no meu /etc/hosts esta assim:

    10.33.0.1 samba.nfa samba

    no meu dhcp + dns o meu dominio está como samba.nfa e nfa e estou querendo colocar meus usuários do samba + squid para autenticar no ldap mas vi nas configurações do ldap que ele pede para colocar o .com.br como meu dominio é local como eu coloco na configurações do ldap abaixo:

    include /etc/ldap/schema/samba.schema
    suffix “dc=NFA,dc=com,dc=br”==> como não tenho .com.br e que coloco aqui? ou tenho que colocar .com.br dentro do /etc/hosts e nas zonas do DNS??
    password-hash {MD5}
    rootdn “cn=admin,dc=empresa,dc=com,dc=br”
    rootpw (senha MD5)
    access to

  • Luis

    Olá, ta dando algum problema no smb.conf, teria como fazer o upload novamente ou mandar no meu email ? obrigado

  • Rauhl Leiria

    Henrique, os arquivos de exemplo que possuem links aqui no seu post, estão com os links quebrados. Você poderia verificar por favo? Grato.

  • Uliano

    Bom Dia Henrique. caso seja complicado o ajuste dos links quebrados, seria possível me enviar via e-mail os arquivos de exemplo.
    Obrigado

  • Carlos

    Olá amigo!! ótimo tutorial, bem sucinto, direto e sem frescuras. porém não consigo acessar os arquivos de configuração, poderia me mandar por email, ou consertar os links, se possível?
    Abs

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: