O software discutido aqui é o OpenLDAP, que é uma implementação open source do LDAP que pode ser executada em ambientes GNU/Linux. - PDF
Download "O software discutido aqui é o OpenLDAP, que é uma implementação open source do LDAP que pode ser executada em ambientes GNU/Linux."
Miguel Gorjão Vasques
1 Mario Luiz Bernardinelli 22 de outubro de 2012 v1.6 Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux A autenticação centralizada evita vários problemas enfrentados por usuários e administradores: memorização de várias contas (e senhas) e o gerenciamento de contas, respectivamente. No GNU/Linux, é possível implementar a autenticação centralizada usando o OpenLDAP. Este documento foi escrito usando um ambiente com GNU/Linux e Samba (operando como PDC), ambos autenticando diretamente no serviço OpenLDAP. Como o intuito é fornecer o caminho das pedras para uma configuração básica, questões como backup, replicação de dados e suporte ao SSL/TLS, todas suportadas pelo OpenLDAP, não são abordadas neste documento. 1. Introdução A diversidade de tipos de serviços disponíveis numa rede, seja ela de qualquer tamanho, tende a crescer com tempo. Novas necessidades surgem a todo momento e novos serviços são disponibilizados nas redes. Muitos destes serviços requerem a autenticação de usuários, por exemplo, o que obriga num primeiro momento, que sejam criadas contas para cada indivíduo em cada um destes serviços. Duplicidade de dados duplicadas surgem em decorrência disso. O trabalho e a complexidade na administração destes ambientes cresce quase que exponencialmente. A integração de diversos ambientes, de diferentes fabricantes e tecnologias nem sempre é fácil ou mesmo possível. O LDAP é um protocolo de acesso à diretórios que permite a centralização de dados, permitindo que diversos sistemas consultem bases de dados centralizadas, eliminando problemas de duplicidade de dados. O software discutido aqui é o OpenLDAP, que é uma implementação open source do LDAP que pode ser executada em ambientes GNU/Linux. O OpenLDAP possui diversas características muito interessantes, tais como replicação de dados, suporte SSL/TLS. Neste documento serão apresentadas as configurações básicas do serviço LDAP para integrá-lo com o GNU/Linux e Samba. Questões como replicação de dados e uso de SSL/TLS, que é imprescindível para a segurança do sistema, não serão discutidas aqui. Estes assuntos serão deixados para uma versão futura deste artigo, ou até mesmo, um artigo específico para isso. Como este documento é mais um how to (como fazer) do que um artigo propriamente dito, muitas das configurações aqui apresentadas seguiram sugestões apresentadas por (SUNGAILA, 2008) e (OPENLDAP, 2011). Notas: Windows, MS-Windows e Microsoft Windows são marcas registradas da Microsoft Corporation. 2. LDAP: configuração tradicional versus configuração online A forma tradicional de configuração do OpenLDAP consiste em adicionar os parâmetros de configuração num único arquivo, normalmente o slapd.conf. Esta forma de configuração tem seus prós e contras. Um dos prós é que torna a configuração mais fácil de entender. Por outro lado, o contra é que toda vez que a configuração é alterada, o serviço deve ser reiniciado para que as alterações sejam carregadas. Uma nova forma de configuração foi criada para resolver este problema, conhecida como runtime configuration ou simplesmente cn=config. Esta forma permite que o administrador altere os parâmetros em tempo de execução, ou seja, as alterações são carregadas sem que o serviço tenha que ser totalmente reiniciado. Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 1 de 27
2 Na configuração baseada no cn=config, os parâmetros são carregados em memória seguindo o formato DIT (Directory Information Tree), que é uma árvore. A grande vantagem disso é que esta árvore de parâmetros é similar à qualquer outra árvore da base de dados do LDAP, permitindo que os parâmetros sejam alterados utilizando-se a mesma interface de utilizada para acesso às bases de dados. Isto permite que as configurações sejam alteradas utilizando arquivos no formato LDIF e que as mesmas sejam assumidas imediatamente após a carga e/ou alteração, sem a necessidade de reinicialização do serviço LDAP. Segundo a documentação, esta nova forma de configuração tornou-se disponível à partir da versão 2.3 do OpenLDAP. na versão 2.4 do OpenLDAP, esta configuração ainda é opcional, mas a tendência é que ela passe a ser padrão nas próximas versões, inclusive, podendo substituir completamente a configuração tradicional (slapd.conf). Alguns cuidados devem ser tomados no uso do novo formato de configuração: Como trata-se de um formato novo, o suporte ainda está incompleto. Por exemplo, a remoção de configurações ainda exige a reinicialização do serviço. As alterações têm efeito imediato, então, é preciso muito cuidado ao alterar as ACLs (Access Control List). Uma vez gerada a configuração no formato cn=config (o pacote OpenLDAP trás uma ferramenta capaz de fazer isto), não há nenhuma ferramenta que converta o formato cn=config novamente para o formato slapd.conf cn=config: estrutura Vejamos a estrutura de um diretório de configuração no formato cn=config armazenado em /etc/ldap/ slapd.d: 1 /etc/ldap/slapd.d/ cn=config cn=module0.ldif cn=schema cn=0core.ldif cn=1cosine.ldif cn=2nis.ldif cn=3inetorgperson.ldif cn=4samba.ldif cn=5autofs.ldif cn=schema.ldif olcdatabase=0config.ldif olcdatabase=1bdb.ldif olcdatabase=-1frontend.ldif cn=config.ldif Observe que todos os arquivos de configuração agora estão no formato LDIF, que é um formato texto no qual os parâmetros (ou atributos) são separados de seus valores pelo caractere dois pontos. O arquivo cn=config.ldif contém as configurações globais que antes eram armazenadas no arquivo slapd.conf. Todos os atributos usados pelo OpenLDAP possuem o prefixo olc (OpenLDAP Configuration). Alguns arquivos e/ou diretórios possuem também números, como por exemplo, cn=0core.ldif, que é uma forma de indicar a ordem de carregamento do arquivo. O conteúdo básico do diretório de configuração é o seguinte: cn=config.ldif: Contém os parâmetros globais de configuração. cn=config: Contém os arquivos e/ou diretórios com as demais configurações. cn=module{numero}: Armazena a configuração de um módulo, o que equivale ao parâmetro moduleload do arquivo slapd.conf. Observe que, para cada módulo adicionado, deve ser criado um Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 2 de 27
3 novo arquivo com um número diferente dos demais. Este número irá indicar a ordem de carregamento do módulo. cn=schema: Neste diretório ficam armazenados os schemas utilizados. olcdatabase={-1}frontend.ldif: é uma base de dados especial que contém as configurações que serão aplicadas à todas as demais bases de dados. Se uma diretiva deste arquivo for repetida na configuração da base de dados específica, valerá o valor especificado na configuração específica da base. Portanto, os parâmetros aqui especificados podem ser considerados valores padrões que, se não forem reconfigurados nas configurações específicas, serão utilizados como definidos aqui. olcdatabase={número}[backend].ldif: Definição da base de dados específica. Os valores aqui definidos podem sobrescrever os valores definidos globalmente. O olcdatabase de número zero (0) é o próprio cn=config. 3. Instalando os pacotes Vamos fazer a instalação dos pacotes necessários em quatro etapas, a saber: Pacotes para o serviço LDAP Pacotes para a autenticação do Linux (contas POSIX) Servidor Samba Pacotes para a manipulação de base de dados LDAP para autenticação de estações Windows c (Samba) e POSIX (Linux) Este documento é baseado em sistemas Debian, porém, o ambiente de teste utilizado foi um Ubuntu. Se você estiver usando o Ubuntu, instale primeiro o aptitude: 1 apt-get install aptitude Ou, se preferir, utilize o apt-get para instalar os softwares apresentados a seguir. Vamos partir para a instalação dos softwares Pacotes para o serviço LDAP Estes pacotes só devem ser instalados no servidor de autenticação. Durante a instalação dos pacotes a seguir, serão solicitadas algumas informações como senha do administrador e nome do domínio da empresa. Preencha com qualquer valor, ou assuma os valores padrões (se apresentados), pois iremos reconfigurar todo o sistema manualmente, para entendermos o funcionamento com detalhes. 1 aptitude install slapd ldap-utils 3.2. Pacotes para autenticação de clientes Linux no LDAP 1 aptitude install libpam-ldap libnss-ldap ldap-utils nscd Nota: o pacote nscd só tem utilidade para máquinas Linux clientes Pacotes para o serviço Samba Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 3 de 27
4 1 aptitude install samba samba-client 3.4. Pacotes de ferramentas O smblda-tools contém ferramentas para manipular contas Windows c e POSIX e suporte à criação de base de dados LDAP para contas Windows c (Samba) e POSIX (Linux). 1 aptitude install smbldap-tools 4. Configuração do LDAP Nesta etapa iremos configurar o LDAP com as configurações necessárias para a criação das bases de dados de autenticação POSIX e Windows c (Samba). Antes de iniciarmos o processo, devemos ter em mãos algumas informações: precisamos do nome do domínio da empresa e de uma senha para o administrador do serviço LDAP. Vamos utilizar os seguintes valores: Domínio da empresa: EMPRESA Senha do administrador: (invente uma senha que seja forte) As versões mais atuais do OpenLDAP utilizam um mecanismo de configuração baseado em inúmeros arquivos e diretórios armazenados normalmente em /etc/ldap/slapd.d. Utilizaremos, porém, a forma convencional de configurar o OpenLDAP, que utiliza apenas um arquivo de configuração. Depois de criado o arquivo de configuração, utilizaremos uma ferramenta do próprio OpenLDAP que faz as conversões necessárias. Precisaremos criar uma senha para o administrador da base LDAP e adicionar o seu hash no arquivo de configuração (onde indicado pelo parâmetro rootpw). Para criar o hash da senha, utilize o comando slappasswd a seguinte forma: 1 slappasswd 2 New password: 3 Re-enter new password: 4 SSHAolrVkiKDx4P/omI55IatjsVQMfFUSZln Adicione a linha contendo o hash no parâmetro rootpw do arquivo de configuração. A configuração do OpenLDAP deve ser realizada através do arquivo /etc/ldap/slapd.conf. O exemplo a seguir apresenta as configurações básicas para a autenticação Windows c (Samba) e POSIX. Observe, no entanto, que o nome da empresa (domínio) deve ser alterado em função das suas necessidades (veja o parâmetro rootdn no arquivo de configuração). O exemplo apresentado já contempla as configurações necessárias para autenticação de contas POSIX e Samba. 1 # /etc/ldap/slapd.conf 2 # slapd.conf 3 # 4 # EMPRESA 5 # 6 7 # Protocol version 8 allow bind_v # Schemas 12 include /etc/ldap/schema/core.schema 13 include /etc/ldap/schema/cosine.schema Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 4 de 27
5 14 include /etc/ldap/schema/nis.schema 15 include /etc/ldap/schema/inetorgperson.schema 16 include /etc/ldap/schema/samba.schema # X.509 certificate 19 #TLSCipherSuite HIGH:MEDIUM:+SSLv2:RSA 20 #TLSCipherSuite HIGH:MEDIUM:-SSL2:+RSA 21 #TLSCipherSuite +AES-256-CBC:+AES-128-CBC:+SHA256:+RSA 22 #TLSCertificateFile /etc/ldap/ssl/certs/ldap.pem 23 #TLSCertificateKeyFile /etc/ldap/ssl/certs/ldap.key # Process control files 26 pidfile /var/run/slapd/slapd.pid 27 argsfile /var/run/slapd/slapd.args # Modules 30 modulepath /usr/lib/ldap 31 moduleload back_bdb # Backend type 34 backend bdb # Database type 37 database bdb # No limit for retrieving records 40 sizelimit unlimited # Directory structure and management 43 suffix "dc=empresa" 44 rootdn "cn=admin,dc=empresa" 45 rootpw SSHAolrVkiKDx4P/omI55IatjsVQMfFUSZln # Database directory (storage) 48 directory /var/lib/ldap # Search indexes 51 index objectclass eq 52 index cn,sn,givenname eq,sub,approx 53 index mail eq,sub 54 index uid,uidnumber,gidnumber,memberuid,loginshell eq 55 index default eq,sub 56 index sambasid eq 57 index sambaprimarygroupsid eq 58 index SambaDomainName eq # ACLs # Root dir access 63 access to dn.exact="" 64 by * read # Password access control (TLS) 67 #access to attrs=userpassword,sambalmpassword,sambantpassword 68 # by anonymous ssf=56 auth 69 # by self ssf=56 write 70 # by * none # Password access control (without TLS) Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 5 de 27
6 73 access to attrs=userpassword,sambalmpassword,sambantpassword 74 by anonymous auth 75 by self write 76 by * none # Password changes date and time 79 access to attrs=shadowlastchange 80 by self write 81 by * none # Global access 84 access to * 85 by * read Como este arquivo já contempla as configurações necessárias para o Samba, precisamos adicionar ao diretório /etc/ldap/schema o esquema da base de dados do Samba. Este esquema acompanha o pacote do Samba e devemos copiá-lo manualmente. Execute os seguintes comando para fazer isso: 1 cd /etc/ldap/schema/ 2 cp /usr/share/doc/samba/examples/ldap/samba.schema.gz. 3 gunzip samba.schema.gz Agora, vamos parar o serviço LDAP: 1 # invoke-rc.d slapd stop 2 Stopping OpenLDAP: slapd. Como estamos configurando o LDAP do zero, vamos remover a base de dados atual: 1 rm -f /var/lib/ldap/* Agora vamos criar o arquivo /var/lib/ldap/db\_config, que contém configurações específicas para base dados e que deve sempre ser mantido no diretório da base de dados LDAP (/var/lib/ldap): 1 #-----/var/lib/ldap/db_config 2 set_cachesize set_lk_max_objects set_lk_max_locks set_lk_max_lockers 1500 Agora vamos alterar as permissões do arquivo, já que o LDAP deve poder lê-lo: 1 chown openldap:openldap /var/lib/ldap/* Agora vamos converter a configuração do OpenLDAP para o novo formato. Devemos criar o diretório de configuração. Antes disso, porém, vamos remover o diretório existente, se existir: 1 rm -rf /etc/ldap/slapd.d 2 mkdir /etc/ldap/slapd.d Para evitar confusões futuras, vamos renomear o arquivo de configuração do OpenLDAP para ficar claro que o sistema não utiliza este arquivo, mas sim as configurações especificadas no diretório /etc/slapd.d: 1 mv slapd.conf slapd.conf.old Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 6 de 27
7 Para converter o arquivo de configuração slapd.conf.old para o novo formato, vamos utilizar o aplicativo slaptest, que é parte do OpenLDAP: 1 slaptest -f slapd.conf.old -F /etc/ldap/slapd.d 2 bdb_db_open: database "dc=empresa": db_open(/var/lib/ldap/id2entry.bdb) failed: 3 No such file or directory (2). 4 backend_startup_one (type=bdb, suffix="dc=empresa"): bi_db_open failed! (2) 5 slap_startup failed (test would succeed using the -u switch) Observe que ocorreram alguns erros, que são esperados, porque a base de dados ainda não existe. Como executamos os comandos como root e o OpenLDAP é executado por um usuário de privilégios reduzidos (openldap, no caso do Debian), devemos alterar as permissões dos arquivos da base de dados e de configuração: 1 chown openldap:openldap /var/lib/ldap/* 2 chown -R openldap:openldap /etc/ldap/slapd.d Edite o arquivo /etc/default/slapd e procure pelo parâmetro SLAPD_CONF e deixe-o em branco (se já não estiver): 1 #---- trecho do arquivo /etc/default/slapd SLAPD_CONF= 4... Isto irá garantir que o slapd utilizará o novo formato de configuração que está em /etc/slapd. Vamos iniciar o serviço LDAP: 1 invoke-rc.d slapd start 2 * Starting OpenLDAP slapd [ OK ] Verifique se o serviço está em execução: 1 netstat -ntpul grep slap 2 tcp : :* LISTEN 3415/slapd 3 tcp6 0 0 :::389 :::* LISTEN 3415/slapd Atenção: Sempre que remover uma base da dados LDAP, antes de iniciar o slapd o arquivo DB CONFIG deve ser criado no diretório /var/lib/ldap. Sempre que a base de dados LDAP for removida, inicie o serviço slapd antes de tentar reindexá-la, para que a base, mesmo que vazia, seja efetivamente criada. Sempre que a base de dados for reindexada, devemos alterar o proprietário dos arquivos, pois a indexação é realizada como root, mas o serviço LDAP no Debian é sempre executado como um usuário sem privilégios administrativos (usuário openldap e grupo openldap). A base de dados pode ser reindexada através do comando slapindex. Como nossa base de dados está vazia, não há necessidade de reindexá-la. Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 7 de 27
8 4.1. Restaurar a base de dados Se você estiver substituindo ou instalando um servidor de backup, é bem provável que você tenha uma cópia da base de dados LDAP do servidor outro servidor. Se o outro servidor estiver em operação, você pode fazer uma cópia de segurança da base de dados e restaurá-la agora. Basicamente, há várias formas de fazer o backup da base de dados LDAP: Copiar os arquivos do diretório /var/lib/ldap, incluindo os arquivos de log contidos neste mesmo diretório, pois estes arquivos contém as informações de transações realizadas. Realizar um dump da base de dados em arquivo texto para posterior recuperação. neste caso, apenas o dump será necessário para a recuperação. O ideal é fazer o backup pelos dois métodos (o seguro morreu de velho :)). O dump da base pode ser realizado pelo comando ldapsearch, mas há alguns problemas: Como a base é acessada em tempo de execução (online), as restrições de consulta e acesso serão aplicadas e, portanto, será necessário o uso da conta de administrador da base para a execução do backup. O número de linhas retornado pelo comando ldapsearch é limitado, por padrão, e isto pode inviabilizar o seu uso em bases grandes. Para contornar este problema, deve ser inserido o seguinte parâmetro nos arquivos /etc/ldap/ldap.conf e /etc/ldap.conf: 1 SIZELIMIT 0 Além disso, o seguinte parâmetro deve ser configurado no arquivo /etc/ldap/slapd.conf: 1 sizelimit unlimited Uma segunda forma de realizar o dump da base LDAP é usar o comando slapcat. Este utilitário acessa diretamente os arquivos da base de dados, não tendo nenhuma interferência das ACLs definidas. Ele pode ser usado com o slapd em execução, mas o prórpio manual sugere que é melhor que o slapd não esteja em execução no momento do backup, a fim de evitar inconsistências caso ocorram operações de escrita na base durante a execução da cópia de segurança. Em linhas gerais, o backup com o slapcat pode ser executado da seguinte forma: 1 invoke-rc.d slapd stop 2 slapcat -l ARQUIVO_DE_BACKUP.ldif 3 invoke-rc.d slapd start Em linhas gerais, o dump gerado pelo slapcat não pode ser utilizado como entrada para o comando ldapadd, pois o dump é realizado na ordem dos registros na base, e não na ordem da estrutura de diretórios. A base de dados pode ser reconstruída (restaurada) usando o comando slapadd (observe que não é o ldapadd). Para restaurar a base de dados no servidor novo, execute os seguintes comandos (observe que o serviço deve ser encerrado antes da restauração): 1 invoke-rc.d slapd stop 2 slapadd -g -F /etc/ldap/slapd.d -q -b dc=empresa -l ARQUIVO_DE_BACKUP.ldif Antes de iniciar o serviço, altere as permissões dos arquivos de configuração e base de dados: 1 chown openldap:openldap /var/lib/ldap/* 2 chown -R openldap:openldap /etc/ldap/slapd.d Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 8 de 27
9 Agora o serviço slapd pode ser iniciado: 1 invoke-rc.d slapd start Para testar se a base de dados foi restaurada, podemos usar o comando ldpapsearch. Este utilitário possui inúmeras opções, mas para nosso objetivo, o comando a seguir é suficiente: 1 ldapsearch -x -b "dc=empresa" "(objectclass=*)" Substitua EMPRESA pelo DC da empresa, lembrando que ele deve ser completo, conforme configurado no OpenLDAP. Por exemplo: dc=empresa,dc=com,dc=br. O comando apresentado irá mostrar todos os registros da base de dados LDAP. Também podemos procurar por um determinado usuário na base de dados, como apresentado no exemplo a seguir: 1 ldapsearch -x -b "dc=empresa" "(uid=antonio)" Neste exemplo, como a base de dados continha dados das contas POSIX (Linux) e Samba, o resultado foi o seguinte: 1 # extended LDIF 2 # 3 # LDAPv3 4 # base <dc=empresa> with scope subtree 5 # filter: (uid=antonio) 6 # requesting: ALL 7 # 8 9 # antonio, Users, EMPRESA 10 dn: uid=antonio,ou=users,dc=empresa 11 objectclass: top 12 objectclass: person 13 objectclass: organizationalperson 14 objectclass: inetorgperson 15 objectclass: posixaccount 16 objectclass: shadowaccount 17 objectclass: sambasamaccount 18 cn: antonio 19 sn: antonio 20 givenname: antonio 21 uid: antonio 22 uidnumber: gidnumber: homedirectory: /home/antonio 25 gecos: System User 26 sambalogontime: 0 27 sambalogofftime: sambakickofftime: sambapwdcanchange: 0 30 displayname: mario 31 sambaprimarygroupsid: S sambalogonscript: antonio.cmd 33 sambasid: S loginshell: /bin/bash 35 sambaacctflags: [U] 36 sambapwdlastset: Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 9 de 27
10 37 sambapwdmustchange: shadowlastchange: shadowmax: # search result 42 search: 2 43 result: 0 Success # numresponses: 2 46 # numentries: Configuração das ferramentas básicas do OpenLDAP Configure o arquivo /etc/libnss-ldap.conf (substitua EMPRESA pelo nome do domínio): 1 host # The distinguished name of the search base. 4 base dc=empresa 5 6 # The LDAP version to use (defaults to 3 7 # if supported by client library) 8 ldap_version # The distinguished name to bind to the server with 11 # if the effective user ID is root. Password is 12 # stored in /etc/libnss-ldap.secret (mode 600) 13 # Use echo -n "mypassword" > /etc/libnss-ldap.secret instead 14 # of an editor to create the file. 15 rootbinddn cn=admin,dc=empresa Crie/altere o arquivo /etc/libnss-ldap.secret para que tenha apenas uma linha com a senha do administrador do LDAP (admin, em nosso exemplo). Exemplo: 1 senha_do_admin_ldap Por questões de segurança, altere as permissões do arquivo /etc/libnss-ldap.secret: 1 chmod 600 /etc/libnss-ldap.secret 2 chown roo:root /etc/libnss-ldap.secret Para facilitar o uso dos comandos e integrar o NSS com o LDAP, crie um link simbólico para o arquivo de configuração no diretório /etc/ldap: 1 cd /etc/ldap 2 mv ldap.conf ldap.conf.old 3 ln -s../libnss-ldap.conf ldap.conf Esta alteração se faz necessária porque os utilitários do OpenLDAP procuram as configurações em /etc/ ldap/ldap.conf, porém, outras ferramentas, como as de sistema, procuram as configurações do LDAP em /etc/ libnss-ldap.conf. Como os dois arquivos devem possuir o mesmo conteúdo, ao criarmos um link simbólico, evitamos problemas com a sincronização dos arquivos (isto é, mantê-los sempre com o mesmo conteúdo). No caso do Ubuntu, verifiquei que ele também utiliza os arquivos /etc/ldap.conf e /etc/ldap.secret. Para evitar problemas, vamos criar também os links para estes arquivos apontando para os arquivos libnss-ldap. conf e libnss-ldap.secret: Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 10 de 27
11 1 cd /etc 2 ln -sf libnss-ldap.secret /etc/ldap.secret 3 ln -sf libnss-ldap.conf /etc/ldap.conf 5. Configuração básica do Samba Antes de configurarmos o Linux para autenticar no LDAP, vamos configurar um PDC básico com Samba. A razão disso é que vamos utilizar o smbldap-tools para criar e popular a base de dados LDAP e esta ferramenta cria as bases tanto para contas POSIX (Linux), como Windows c (Samba). O Samba é configurado através do arquivo /etc/samba/smb.conf. Os detalhes de configuração não serão explorados aqui, mas o arquivo de configuração de um PDC básico é apresentado a seguir. Note que este arquivo já contempla as configurações necessárias para acesso à base de dados LDAP, que criaremos mais tarde. 1 #---- /etc/samba/smb.conf 2 [global] 3 # # Domain information 5 # workgroup = EMPRESA 7 server string = EMPRESA s Domain Controller 8 netbios name = vmubuntu 9 10 # # Log 12 # log file = /var/log/samba/%m.log 14 max log size = log level = # # Name resolution 19 # name resolve order = lmhosts wins bcast 21 dos charset = CP unix charset = UTF-8 23 display charset = UTF-8 24 wins support = Yes # # Security and authentication 28 # security = user 30 encrypt passwords = true 31 passdb backend = ldapsam:ldap:// / 32 username map = /etc/samba/smbusers # # Printing 36 # load printers = No 38 # printing = cups 39 # printcap name = cups # # PDC options Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 11 de 27
12 43 # domain logons = Yes 45 logon script = %U.cmd # # Disable remote profiles 49 # logon path = 51 logon home = 52 logon drive = # # Domain browser options 56 # #preferred master = auto 58 #domain master = auto 59 preferred master = Yes 60 domain master = Yes 61 local master = yes 62 os level = time server = Yes 64 remote announce = # # LDAP parameters. 68 # ldap admin dn = cn=admin,dc=empresa 70 ldap ssl = off 71 ldap delete dn = no 72 ldap user suffix = ou=users 73 ldap group suffix = ou=groups 74 ldap machine suffix = ou=computers 75 ldap suffix = dc=empresa 76 # Allow mambers of "Domain Admins" to add computers into the domain 77 enable privileges = yes # # Allow the automatic creation of machine accounts 82 # on domain joins. 83 # add user script = /usr/sbin/smbldap-useradd -m "%u" 85 delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" 90 #delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" 93 delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" # Password synchronization 98 passwd program = /usr/sbin/smbldap-passwd -u "%u" 99 passwd chat = "Changing*\nNew*password*" %n\n "*Retype*new*password*" %n\n 100 ldap password sync = yes 101 unix password sync = yes Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 12 de 27
13 # # ACL control through Windows Explorer 106 # To this options run, it is necessary to add the following options 107 # to the file fstab: "acl,user_xattr" for all shared partitions 108 # map acl inherit = Yes 110 inherit acls = Yes 111 inherit permissions = Yes 112 nt acl support = Yes # # Client access 116 # hosts allow = 10.0., # # Network options 122 # socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF= #obey pam restrictions = Yes 126 #smb passwd file = /etc/samba/smbpasswd 127 #pam password change = Yes 128 #passwd program = /usr/bin/passwd %u 129 #passwd chat = *New*password* %n\n *Retype*new*password* %n\n \ 130 # *passwd:*all*authentication*tokens*updated*successfully* 131 #unix password sync = Yes 132 #add machine script = /usr/sbin/useradd -g machines -c Workstation -d /dev/null \ 133 # -s /sbin/false %u 134 #dns proxy = No # # Domain administrator s group 139 # admin users Admins" # # Allow the user authentication through smb_auth (Squid) 144 # lanman auth = yes [netlogon] 148 comment = Network Logon Service 149 path = /var/lib/samba/netlogon 150 write list = root 151 browseable = yes [infra] 154 comment = Infra estrutura 155 path = /EMPRESA/infra 156 valid users = Users" 157 read list = Users" 158 write list = Users" 159 read only = No 160 create mask = 0775 Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 13 de 27
14 161 directory mask = browseable = No Este arquivo de configuração assume o seguinte: Já possui as configurações para acesso ao LDAP (smbldap-tools, que ainda não configuramos). É um controlador de domínio (security=user). O nome NetBIOS do servidor é vmubuntu (netbiosname=vmubuntu). Assume que o nome do domínio é EMPRESA (workgroup=empresa). Está configurado para aceso através da rede /16 (hosts allow = 10.0., 127.). Assume que o servidor LDAP está instalado no próprio servidor (passdbbackend=ldapsam:ldap:// /). Possui dois compartilhamentos: um de sistema (netlogon) e outro de dados (infra). Observando a configuração do Samba apresentada no exemplo, devemos criar o diretório de armazenamento dos scripts de logon dos usuários: 1 mkdir /var/lib/samba/netlogon Além disso, também devemos criar o diretório especificado para os compartilhamentos. No caso do exemplo, deveríamos criar o diretório /EMPRESA/infra: 1 mkdir -p /EMPRESA/infra Também pode ser necessário alterar as permissões do diretório, mas vamos deixar isso por conta das necessidades da aplicação real. Antes de iniciarmos o samba, devemos armazenar a senha do administrador do LDAP no arquivo de controle do samba, o secrets.tdb (/var/lib/samba/secrets.tdb): 1 smbpasswd -w senhadomanager 2 Setting stored password for "cn=admin,dc=empresa" in secrets.tdb Além disso, vamos obter o SID do domínio para adicioná-lo na configuração do smbldap-tools, que realizaremos posteriormente: 1 net getlocalsid EMPRESA 2 SID for domain empresa is: S Anote o SID obtido, pois ele será necessário na configuração do smbldap-tools. Vamos parar o serviço Samba. Se estivermos usando o Debian (considerando a versão 6.x - Squeeze), o comando é o seguinte: 1 invoke-rc.d samba stop Já se for o Ubuntu, é provável que o sistema já esteja utilizando o upstart, que é uma variação do init. Neste caso, os comandos devem ser os seguintes: 1 stop nmbd 2 nmbd stop/waiting 3 stop smbd 4 smbd stop/waiting Autenticação centralizada usando OpenLDAP e exemplos com Samba e Linux 14 de 27
Integre seu servidor Samba a uma base OpenLDAP SYSADMIN Integrado é mais fácil Se você acha entediante administrar múltiplas bases de autenticação, veja como integrar o Samba ao OpenLDAP para gerenciar
LDAP Parte 2 Autenticando Usuários Ldap no Linux
LDAP Parte 2 Autenticando Usuários Ldap no Linux By admin on 6 de fevereiro de 2012 in News 4 Flares Twitter 1 Facebook 0 Google+ 2 LinkedIn 1 Email -- Filament.io 4 Flares Na primeira parte deste artigo,