PDC Samba com OpenLDAP

11 02 2008

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.


Ações

Informações

6 respostas

15 04 2008
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?

14 08 2008
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

11 08 2009
Ali Abou Abbas

Fiz um tuto para isto cara…

http://discipulosdopinguim.com.br/blog/2009/08/01/debian-5-0-lenny-squid-autenticando-em-openldap/

veja ai funciona perfeito.. valeu!

14 10 2008
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

8 01 2009
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…

18 10 2009
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

Deixe um comentário