Configuração LDAP + SAMBA (PDC

)
Autor: Camila Coelho - Data: 27 de janeiro, 2005

Sumário
1 Objetivos 2 Configuração do Sistema Operacional 3 Instalação dos serviços 3.1 OpenLDAP 2.2.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 SAMBA 3.0.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Configurando OpenLDAP 4.1 Configuração do “slapd” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 LDAP como um NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Gerando a base LDAP 5.1 Conceitos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Incluindo registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Configurando o Samba 6.1 Samba como PDC . . . . . . . . . 6.2 Samba com LDAP . . . . . . . . . 6.2.1 Pacote smbldap-tools . . . 6.2.2 Gerenciamento de usuários 2 2 2 3 3 4 4 6 6 6 7 7 7 8 8 9 10 10

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

7 Ferramentas de gerenciamento de usuários LDAP 8 Referências

org • Samba 3: www. por sua vez. O Samba. ao backend “bdb” e à autenticação TLS/SSL.13 2 Configuração do Sistema Operacional Por razões de estabilidade.0. que apresente suporte às versões dos programas que serão necessários para atender aos requisitos determinados acima. utilizar pacotes de terceiros pode prejudicar a integridade e performance do sistema. Para manter a configuração mínima. Sendo assim. além da simplicidade de configuração e manutenção.10) adequada ao hardware detectado no servidor • Configuração de uma rotina simples de controle de acesso via firewall e monitoramento de logs (TODO) • Criação de usuários/grupos: – ldap/ldap: Serviço LDAP 3 Instalação dos serviços As versões pré-compiladas dos programas. segurança e custo.samba.10 + OpenLDAP 2. Os seguintes aplicativos foram instalados no sistema: • ferramentas GNU e core (série A) • ambiente de desenvolvimento e bibliotecas compartilhadas C/C++ (série D e L) • ambiente de rede tcp/ip e openSSL (série N) • aplicativos adicionais: db4 (Berkeley DB4) A configuração do ambiente consistiu em: • Compilação da versão do Linux atual (2. Copyright (c) 2005 by linuxbr. • Ferramentas utilizadas: Samba 3. a flexibilidade de manter-se apenas o mínimo necessário no sistema.6.10 foi instalado no servidor em questão. o sistema operacional Linux 2.6.1. os passos a seguir poderão ser efetuados em qualquer distribuição linux recente. o serviço LDAP necessita do suporte ao algoritmo “crypt”. em geral.org Além destes programas.openldap. utilizaremos alguns aplicativos adicionais que serão mencionados no decorrer do texto. sem recursos adicionais e desnecessários. Privilegiar soluções open-source. Entretanto. que oferece. Além disso.Configuração OpenLDAP com Samba3 1 Objetivos • Configurar um servidor de dados e PDC (Personal Domain Controller ) Centralizar a base de usuários Windows e Linux em um único no servidor. sem custo adicional de conexões e/ou licenças. Por exemplo. necessita de suporte ao backend LDAP.org 2 . não atendem a todos os requisitos da aplicação. prosseguiremos com a instalação dos aplicativos através dos fontes obtidos nos sites oficiais destas aplicações: • OpenLDAP: www.2. a distribuição Linux escolhida foi o Slackware 10.

c o n f " PID= " / u s r / l o c a l / v a r / run " DB= " / u s r / l o c a l / v a r / openldap−data " ARGS= "−4 −u l d a p −g l d a p " case " $1 " i n s t a r t ) / u s r / l o c a l / l i b e x e c / s l a p d $ARGS −h " l d a p : / / / l d a p s : / / / " & / u s r / s b i n / nscd & . stop ) k i l l ‘ cat $PID / s l a p d . * ) echo " Usage : $0 < s t a r t | s t o p | s t a t s > " . s t a t s ) echo ‘ l s − l $DB / | grep t o t a l ‘ echo " p i d o f slapd ’ ’ .ldap Nesse exemplo.0. o que requer a existência do diretório /var/run/nscd no filesystem./configure --enable-crypt # make depend && make # checkinstall Neste caso.10 Da mesma forma. As bases serão instaladas em /usr/local/var.23 foi instalado no diretório /usr/local. O diretório /var/log/samba deve ser criado para armazenar os logs. utilizo o nscd para caching de nomes. . Altere as permissões desses diretórios para o usuário e grupo LDAP criado inicialmente. o OpenLDAP 2.13 Após descompactar a versão atual do OpenLDAP.Configuração OpenLDAP com Samba3 3. prosseguimos com a instalação do Samba (3.2 SAMBA 3. .0. O diretório /usr/etc/openldap será referenciado como $LDAPCONF de agora em diante. O seguinte suporte foi adicionado na compilação: --with-ldap --with-ldapsam --with-smbmount --enable-cups --with-syslog --with-logfilebase=/var/log/samba --with-quotas --with-acl-support Copyright (c) 2005 by linuxbr. .1 OpenLDAP 2. prossiga com a instalação da seguinte forma: # CPPFLAGS="-I/usr/include/db4" ..2. 3. esac Listing 1: rc.2.org 3 . com suas configurações em /usr/local/etc. pid ‘ .10). Vamos rodar nosso serviço de diretório através do seguinte script de inicialização: # ! / b i n / sh # S c r i p t para i n i c i a r o LDAP CONFIG= " / u s r / l o c a l / e t c / openldap / s l a p d .

s t o p ) k i l l a l l smbd nmbd . Utilizaremos dominio.userPassword by * read by self write access to * by * read # Certificados para conexão segura SSL Copyright (c) 2005 by linuxbr.org 4 .schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/samba. Iniciamos a configuração do $LDAPCONF/slapd.samba 4 Configurando OpenLDAP Primeiramente. 4. foi utilizado o “slackbuild” original do samba.1 Configuração do “slapd” Copie o samba. Desta forma.schema # ACLs access to attrs=sambaLMPassword. definimos a seguinte estrutura inicial para nosso diretório LDAP: Nossa árvore neste caso inicia com um domínio (“dc”).schema (encontrado em /usr/doc/samba-VERSION) para $LDAPCONF/schema/. . esac Listing 2: rc.conf # A ordem dos esquemas é relevante include /usr/local/etc/openldap/schema/core. .schema include /usr/local/etc/openldap/schema/inetorgperson.Configuração OpenLDAP com Samba3 Para tanto.sambaNTPassword.schema include /usr/local/etc/openldap/schema/nis. Altere de acordo com a sua configuração. mas poderia ser uma organização. * ) echo " Usage : $0 < s t a r t | stop > " .com neste exemplo.conf: # slapd. . etc. O script criado para iniciar/finalizar o samba é bastante simples: # ! / b i n / sh # S c r i p t para i n i c i a r o Samba case $1 i n s t a r t ) / u s r / s b i n / smbd −D / u s r / s b i n / nmbd −D . o samba foi instalado em /usr (– prefix=/usr) e seus arquivos de configuração encontram-se em /etc/samba.

'Common Name' deve ser igual ao hostname) (A seguir geramos o certificado do servidor) # openssl req -new -nodes -keyout newreq. o servidor LDAP deve estar no ar e aguardando conexões nas portas 389 (padrão) e 686 (SSL).dc=com TLS_CACERT /usr/local/etc/openldap/ca/cacert.conf: HOST 127.dc=com" # A senha deve ser gerada com o slappaswd rootpw {SSHA}.sh que acompanha o openSSL (/etc/ssl/misc). Renomeamos os certificados gerados para seguir o padrão sugerido (newcert.pem /usr/local/etc/openldap/ca/serverkey. adicione o parâmetro “-d” seguido de um nível de debug aos argumentos passados ao slapd no script de inicialização.sh -newca (Programa interativo.. Para gerar os certificados. conforme os passos abaixo: # mkdir $LDAPCONF/ca/ # CA. e delete o diretório demoCA/.pem /usr/local/etc/openldap/ca/servercrt.0. Verifique as respostas do servidor no log /var/log/debug.pem -out newreq.sh -sign (Fonte: OpenLDAP FAQ) Mova o cacert que foi gerado para nosso diretório de certificados no LDAP. para permitir a conexão segura ao LDAP.Configuração OpenLDAP com Samba3 TLSCACertificateFile TLSCertificateFile TLSCertificateKeyFile /usr/local/etc/openldap/ca/cacert.pem Voltando à configuração do LDAP. vamos indicar nosso certificado e base padrão em $LDAPCONF/ldap.1 BASE dc=dominio.0.pem). Para prosseguirmos.pem # CA. e removemos a permissão de leitura: # chmod 600 /usr/etc/openldap/ca/serverkey.pem # Banco de dados LDAP database bdb suffix "dc=dominio. # Caminho para a base de dados LDAP directory /usr/local/var/openldap-data # índices para otimizar acesso index objectClass eq index uid eq index gidNumber eq index uidNumber eq Precisamos gerar os certificados. utilizamos o script CA..pem Isso encerra a configuração do daemon. Inicie-o.dc=dominio.pem -> servercrt. newreq -> serverkey.pem. conforme indicados nas cláusulas “TLS” (Transport Layer Security ).dc=com" # Definimos a conta administradora como "Manager" rootdn "cn=Manager. Copyright (c) 2005 by linuxbr.org 5 . Caso ocorra algum problema.

semelhante a um OID. Após a instalação dos pacotes.Configuração OpenLDAP com Samba3 4. este comando não faz verificações de autorização. Para inserir o registro.dc=com rootbinddn cn=Manager.conf (não confundir com a configuração do openldap. em $LDAPCONF/ldap. utiliza-se o padrão de arquivos LDIF. A partir de agora. sempre que um usuário logar no sistema. “ou” (organization unit). essa alteração foi transferida após a inicialização do LDAP. remoção e busca de registros na base LDAP serão apresentadas nesta seção. sendo assim.conf: passwd files compat ldap group files compat ldap shadow files compat ldap Dessa forma. alteramos nosso nsswitch. Uma forma de se entender este formato é através de um exemplo: # base.ldif dn: dc=dominio.padl. ficando a cargo do “files” apenas os usuários padrão do sistema (ie.conf) para indicar nossa base LDAP: host 127. há uma alteração de permissões do “utmp” no rc. No Slackware. Pacotes utilizados (obtidos em www. Para configurar o LDAP como a base padrão de usuários/grupos. “dc” (domain). definimos o “nó” inicial com um “dc” (domínio) no topo da hierarquia.0. como “cn” (canonical name). Vamos utilizar para isso o comando ldapadd: Copyright (c) 2005 by linuxbr. 5 5.dc=com Em seguinda. podemos invocar o “slapd” diretamente para efetuar a inclusão: # slapadd -l base.0. todo o gerenciamento de usuários Unix de nossa rede será gerenciado pelo LDAP. sendo o responsável por distinguir cada elemento da árvore. do contrário levará um tempo até o timeout da consulta. etc.S (modo single-user). a chamada foi incluída no rc. etc (ver manpage). utilizaremos a libnss_ldap. ele será buscado tanto em “files” quanto em “ldap”.conf) para acessar a base de usuários (/etc/passwd) e proceder com a autenticação.1 base dc=dominio.2 LDAP como um NIS O programa de login de sistemas unix-like utilizam arquivos de “name service” (libnss_files e nsswitch. dc=com dc: dominio objectClass: top objectClass: domain O atributo “dn” (Distinguished Name) possui um significado especial. PS: Inicie o LDAP antes dos processos que consultam a base de usuários. Para adicionar “nós” ao LDAP.com): NSS_ldap e MigrationTools. No exemplo acima. root).1 Gerando a base LDAP Conceitos básicos As operações de adição.1.dc=dominio. o que causava lentidão no boot. Os atributos “objectClass” definem a situação do registro na hierarquia. para representar seus elementos.org 6 . modificamos o /etc/ldap.M (multi-user runlevel).ldif Porém. O LDAP apresenta alguns atributos comuns. Na versão 10.

org 7 . que também não é interativo. Invalid credentials). e “uid” nossas pessoas no diretório LDAP.Configuração OpenLDAP com Samba3 # ldapadd -D cn=Manager. Para isso. Podemos indicar alguns dados no arquivo migrate_common. Ao incluir usuários com senhas.LDIF. Altere isso de forma apropriada aos seus requisitos. e são em resumo. basta alterar a configuração do samba conforme exemplo que segue (/etc/samba/smb. como o $DEFAULT_BASE (dc=dominio. 6 6. 5.ldif .ldif .ldif e o group. Após gerados os arquivos LDIF.x opera como um PDC (Primary Domain Controller ) para redes Windows. utilizam um esquema de dois “hashes” gerados por DES e MD4.dc=com -W -x -f Os parâmetros -D e -W definem os critérios de autenticação para a inclusão do registro. as senhas podem ser geradas pelo “slappasswd”.ldif Conforme definido inicialmente. inclua-os com o “ldapadd” em nossa base. Após efetuar a conexão.2 Incluindo registros O pacote “migration tools” é um conjunto de scripts para a exportação dos usuários/grupos originais do sistema (/etc/passwd. incompatíveis. CTRL+D. exceto se ocorrer um erro (por exemplo. consulte a manpage. não haverá nenhuma saída. No prompt indicamos o “dn” que desejamos excluir. utilizamos o ldapdelete. o -x que utilizaremos conexão simples (sem Kerberos ou algo semelhante). Para mais informações. o comando efetuará a inclusão do elemento em questão. verifique o passwd. Isso resume o funcionamento básico do LDAP. o grupo “users” e algum usuário de teste). Após autenticado. As senhas do Windows.dc=com).pl /etc/passwd passwd.conf): netbios name = serverlx workgroup = linuxpdc server string = Samba PDC Server security = user # NOME NETBIOS # NOME DOMINIO Copyright (c) 2005 by linuxbr.ph para iniciar a geração dos LDIFs com alguns elementos pré-definidos. Da mesma forma.pl /etc/group group. As bases do “bdb” são armazenadas no diretório openldap-data.1 Configurando o Samba Samba como PDC O Samba 3. Para remover o registro. podemos listar toda a árvore (com slapcat ou ldapsearch -x). por sua vez. e o -f indica o arquivo . etc) no formato LDIF para a inclusão na base LDAP./migrate_passwd. PS: “ou” representa nossos grupos. Basta apagar este diretório para reiniciar a base do zero.dc=dominio. Para buscar um registro. Depois disso executamos os seguintes scripts: .ldif para migrar apenas o que considerar necessário nessa primeira fase (ie. e para sair. ou utilizar filtros. sendo importante incluí-lo em procedimentos de backup./migrate_base. # ldapsearch -x -LLL "dc=dominio" Não autenticamos para fazer a busca pois nossa ACL permite a busca por qualquer usuário./migrate_group.pl > base. nossa “árvore” LDAP apresentará 2 nós: People (usuários) e Group (grupos).ldif de forma que apresente somente estes grupos. Edite o base. sendo que o algoritmo utilizado pelo Unix em geral é o CRYPT.

dc=com ldap suffix = dc=dominio.mp3/*. as máquinas serão adicionadas em uma organization unit separada.tdb. Teste a configuração com o comando testparm.dc=com ldap group suffix = ou=Group ldap user suffix = ou=People ldap machine suffix = ou=Machine Para fins de legibilidade.mpg/ Descomente também as linhas referentes ao netlogon. log file = /var/log/samba/\%m. reinicie o serviço: killall -HUP nmbd Nosso Samba está pronto para comunicar-se com o OpenLDAP.0. que será o Domain Admin do PDC. Altere o “smb.0.idealx.wma/*.0. além de necessitar que a mesma conta exista no Unix.2. Depois de adicionadas as entradas referentes ao LDAP.avi/*. porém.Configuração OpenLDAP com Samba3 domain master = yes # aqui ativamos o PDC domain logons = yes time server = yes logon drive = S: hosts allow = 192. 6. através do comando: # smbpasswd -a root Observe que o único arquivo encontrado no diretório de bases do samba (/etc/samba/private) é o secrets. cadastrado com smbpasswd root. 6.org 8 . referindo-se ao local onde os scripts de logon serão armazenados.2 Samba com LDAP Por padrão. Isso demonstra que a base de usuários do samba realmente será obtida do LDAP.dc=dominio.wmv/*.conf”. 127.log # separar o log unix charset = iso8859-1 display charset = cp850 veto files = /*.org). incluindo: passdb backend = ldapsam:ldaps://127. utilizaremos outros comandos compatíveis com o LDAP para gerenciar nossa base de usuários. Copyright (c) 2005 by linuxbr. Ele deverá retornar: Server role: ROLE_DOMAIN_PDC. o Samba utiliza uma base flat-file para armazenar os dados das contas.1/ ldap admin dn = cn=Manager. O Domain Admin por padrão é o usuário root. Finalmente. configure a senha do Manager no Samba: smbpasswd -w NOVASENHA Associe também uma senha Samba ao nosso usuário “root”. O controle de acesso é feito através do cadastro do nome das máquinas e da admissão do usuário pelo “root”.168. utilizaremos nossa configuração LDAP. que deverá apresentar permissões restritivas. Para centralizar a base de usuários Unix e Windows.1 Pacote smbldap-tools Para gerenciar os usuários no Samba. utilizaremos os scripts smbldap-tools (www.

configure o acesso ao CPAN: # FTP_PASSIVE=1 perl -MCPAN -e shell O script cpan2tgz. Utilize os comandos “show” do smbldap-tools para certificar-se de que os scripts estão corretamente instalados. Verificamos a existência de uma conta “Administrator” com o comando getent group | grep Administrator. Como os scripts smbldap-tools dependem de diversos módulos Perl. Antes de efetuarmos os testes.conf deve ser configurado de acordo com nossas definições anteriores: SID (obtido com ``net getlocalsid'') suffix="dc=dominio. e já possuimos os nós “dc” e “ou”. Copie os scripts (smbldap-*) para o /usr/local/sbin.dc=com" usersdn="ou=People. e os módulos perl estiverem instalados ok.\${suffix}" hash-encrypt="CRYPT" userSmbHome="" userProfile="" O comando net.conf com os “dn”s corretos. configure persmissões restritivas. 6. responsável pela geração de IDs sequenciais.Configuração OpenLDAP com Samba3 A instalação dos scripts deve ser feita da seguinte forma. O “getlocalsid” deverá criar uma entrada no LDAP referente ao sambaDomainName. No caso. reinicie o servidor LDAP. verifique se o grupo Idmap foi incluído. Usuários com GID 512 serão administradores em suas máquinas. que acompanha o Samba 3. foi detectada a ausência dos seguintes módulos no sistema. A seguir. é uma versão do comando “net” encontrado no Windows. Crie um diretório /etc/smbldap-tools/ para armazenar os arquivos de configuração (smbldap. serão apresentadas mensagens informando deste fato. Ele deverá ser gerado pelo smbldap-populate.org pode auxiliar na manutenção dos módulos Perl. Verifique também os grupos de domínio (getent group | grep Domain). Altere a permissão (600) para este último. O UID deve ser 0. Com o comando slapcat | grep -i idmap. Se tudo ocorrer ok.2 Gerenciamento de usuários Inicialmente. podem ocorrer erros inesperados. e edite os caminhos para os arquivos de configuração que constam nas variáveis globais deste arquivo.pm” para o diretório de módulos Perl. ele adicionará os usuários e grupos globais do Windows no LDAP.conf menciona um “cn” chamado NextFreeUnixId. encontrado em software. lembrando que SIDs no Windows são equivalentes aos UIDs (salvo o fato de serem muito mais complexos de se gerar e gerenciar). Observe também que o arquivo smbldap.conf e smbldap_bind. vamos popular a base com o comando smbldap-populate: # smbldap-populate Como esse script gera a base do zero. que executaremos a seguir. e como a senha utilizada pelo smbldap-tools deverá ser definida nesse arquivo. O smbldap. caso contrário. Configure também o smbldap_bind. adicione uma máquina que será autorizada no domínio: Copyright (c) 2005 by linuxbr. Copie também o “.\${suffix}" computersdn="ou=Machine. Basicamente.org 9 .2.conf).jaos. Verifique os IDs destes grupos. podemos iniciar a criação de usuários do Samba. e o cpan2tgz responsabilizou-se por gerar os pacotes de cada um deles: # cpan2tgz Net::LDAP # cpan2tgz Crypt::SmbHash # cpan2tgz Digest::SHA1 Os pacotes serão gerados em /usr/src.\${suffix}" groupsdn="ou=Group.

além de suporte total ao gerenciamento de usuários no Samba 3. O LDAP Browser. para permitir o ingresso da máquina previamente cadastrada no LDAP. existem algumas ferramentas de gerenciamento amigáveis (e gratuitas) em modo gráfico. a ferramenta smbldap-useradd demonstrou-se bastante eficiente. obtida em http://snipurl. Também é possível adicionar grupos ao Samba para. Para facilitar a administração de nosso servidor LDAP. será preciso reiniciar o Windows.Configuração OpenLDAP com Samba3 # smbldap-useradd -w MACHINENAME A seguir. podemos criar/alterar/deletar e buscar usuários na base LDAP. Isso encerra a configuração básica de nosso serviço. criado acima. adicione um usuário: # smbldap-useradd -m -a USERPDC # smbldap-passwd USERPDC Com isto. associá-los a grupos do Windows através do comando: # smbldap-groupadd -a MYGROUP Com o comando net groupmap list. Com esse conjunto de ferramentas em modo texto. seus perfis. e apesar de não possuir as facilidades do primeiro.net. 8 Referências • Documentação do site www.com/ ldapbrowser.conf). O LDAP Browser demostrouse simples e funcional. por sua vez. 7 Ferramentas de gerenciamento de usuários LDAP Nesse artigo. o que possibilitará o logon no domínio em questão com o usuário “USERPDC”.com. suporta conexões seguras e a importação/exportação de arquivos LDIF. verifique a associação de um SID ao nosso grupo.br) Powered by L EX 2ε AT Copyright (c) 2005 by linuxbr. é preciso que o PHP suporte conexões LDAP. etc. Nesse momento. A partir daí podemos definir as políticas de acesso desses usuários. e digite a senha de “root” associada ao Domain Admin. Para a criação de usuários Samba. já deverão autenticar normalmente em nosso domínio “PDC”. gerados pelo script MigrateTools.org. o que está fora do escopo deste documento. préviamente cadastradas no samba. já temos um usuário válido no domínio. Para a utilização da primeira. • LDAP Browser / Editor: ferramenta Java com suporte a conexão segura. destacando-se: • phpldapadmin: ferramenta Web. O phpldapadmin apresenta uma interface amigável e completa. não precisa de nenhuma configuração adicional. Naturalmente. obtida em sourceforge. altere o domínio para LINUXPDC (definido em nosso smb. posteriormente.org 10 . apresentamos a criação de usuários Unix através de templates LDIF. Dessa forma.brLDAP-Brasil • Using an LDAP Directory for Samba Authentication (fonte: IBM developerworks) • Smbldap-tools User Manual (fonte: idealx.org) • SlackwareZine (. ele será visível às máquinas Windows. nossas máquinas Windows.ldap. Nas máquinas Windows.