Como prometido na semana passada estou dando prosseguimento sobre o servidor LDAP e desta vez com uma configuração (básica) do mesmo.
Configuração do servidor
# apt-get install slapd ldap-utils
Por padrão o debian sempre define o admin na instalação do slapd, informe a senha e confirme.
Vamos parar o servidor LDAP
# invoke-rc.d slapd stop
Vamos informar ao daemon do ldap que iremos utilizar o arquivo slapd.conf
# vi /etc/default/slapd
SLAPD_CONF="/etc/ldap/slapd.conf"
Apague todos os arquivos de /var/lib/ldap exceto DB_CONFIG
# vi /etc/ldap/slapd.conf
# Permite vínculos LDAPv2 allow bind_v2 # Incluindo os Schemas (Arquivos que contem a estrutura dos atributos e objetos que o LDAP consegue manipular) include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema # Onde estão guardados os módulos lidos dinamicamente modulepath /usr/lib/ldap moduleload back_hdb # Especifica o tipo de base de dados utilizada backend hdb # Definições da base de dados database hdb cachesize 5000 mode 0600 # Define o Domain Componente e o Root Distinguished Name (nome distinto do administrador) suffix "dc=mundotibrasil,dc=local" rootdn "cn=admin,dc=mundotibrasil,dc=local" # Onde esta localizada fisicamente em disco a base de dados para o domínio 1 directory "/var/lib/ldap" # Senha do Administrador do Domínio rootpw {crypt}crX59UXmg2RkY # Arquivo de processo do slapd pidfile /var/run/slapd/slapd.pid # Arquivo com os argumentos de execução do slapd argsfile /var/run/slapd/slapd.args # Numero máximo de resultados de uma operação de pesquisa sizelimit 500 # Quantidade de cpu usadas na indexação tool-threads 1 # Tamanho do cache da base de dados, o Debian usa 2MB por padrão. dbconfig set_cachesize 0 2097152 0 # Opções de indexação da base de dados 1 index objectClass eq # Grava quando as entradas foram modificadas na base de dados 1 lastmod on #Controle de acesso as informações da base de dados (senhas) access to attrs=userPassword,shadowLastChange by self write by anonymous auth by * compare # Acesso ao mecanismo SASL access to dn.base="" by * read # Acesso aos outros atributos access to * by self write by * read
Descrição das principais opções:
include /diretório/schema – Carrega o schema informado (Arquivos que contem a estrutura dos atributos e objetos que LDAP consegue manipular).
modulepath /diretório – Diretório onde estão os módulos que serão lidos dinamicamente.
moduleload módulo – Qual módulo será carregado. Para carregar outro módulo basta adicionar outra linha como esta.
loglevel nível/chave – Nível de log. Pode utilizar o seguinte formato:
LogLevel 129
LogLevel 0x81
LogLevel 128 1
LogLevel 0x80 0x1
LogLevel acl trace
Obs.: -1 Produz uma grande quantidade de informações e “none”.
backend tipo – Tipo de base de dados utilizado, os principais tipos são:
bdb Berkeley DB transactional backend
config backend de configuração do Slapd
dnssrv DNS SRV backend
hdb Variante do backend bdb.
ldap Lightweight Directory Access Protocol (Proxy) backend
ldif Lightweight Data Interchange Format backend
meta Meta Directory backend
monitor Monitor backend
passwd Prove acesso somente de leitura a passwd(5)
perl Perl Programmable backend
shell Shell (programa externo) backend
sql SQL Programmable backend
database <índice>banco – Qual o banco de dados utilizado no diretório. O índice ser utilizado para distinguir vários bancos de dados do mesmo tipo, mas pode ser omitido. E banco é um dos tipos listados acima.
cachesize valor – Define o número de entradas que backend LDAP irá manter na memória. Para melhor performance, este número é igual ao número de entradas no seu diretório, mas pode ser menor. Este não é o cache do Banco de Dados, mas o cache interno próprio do OpenLDAP. O valor padrão -e 1000.
sizelimit valor – Especifica o número máximo de entradas retornadas de uma operação de pesquisa.
mode octal – Permissão dos arquivos da base de dados do diretório.
suffix “DN” – Especifica o sufixo DN de consultas que serão passadas para o backend de banco de dados. Podem haver mais linhas suffix, mas somente um é requerido.
rootdn “DN” – Especifica o controle administrativo sobre o diretório, pode ser utilizado um mechanismo SASL ao invés de um usuário administrador.
rootpw senha – Senha para rootdn, pode ser texto puro ou fornecido um HASH com a senha por meio do comando slappasswd.
directory “/diretório” – Local onde os arquivos da base de dados do diretório estão armazenados.
pidfile arquivo – Arquivo contendo o PID do daemon do ldap (slapd).
argsfile arquivo – Arquivo contendo os parâmetros repassados ao slapd.
tool-threads valor – Especifica a quantidade real de CPUs utilizadas para a indexação.
index atributo tipo – Cria índices para acelerar as buscas do atributo informado e indica qual o tipo de índice utilizado.
Tipos Descrição
pres Relacione com o tipo de atributo, ao invés do valor do atributo.
eq Relaciona com o valor exato do atributo, como (cn=Ricardo) retorna somente as combinações exatas de “Ricardo”.
sub Indexa buscas com coringas, como em (cn=admin*). E as variantes:
subinitial (cn=admin*)
subany (cn=*user1*)
subfinal (cn=*admin)
lastmod on – Grava a hora da última operação de gravação no banco de dados.
access – Lista de controle de acesso, controle de quem pode acessar o que e como será o acesso.
Criar o hash com a senha do admin do ldap
# slappasswd -h {SSHA} | tee -a /etc/ldap/slapd.conf
Como podem reparar o hash foi apresentado na saída padrão e direcionada para o final do arquivo slapd.conf
Voltando ao arquivo slapd.conf
# vi /etc/ldap/slapd.conf
Vá para o final do arquivo localize e selecione o hash da senha
Copie o hash para a memória e adicione na linha rootpw, substituindo a criptografia existente
Após a substituição comente as 3 últimas linhas do slapd.conf, ou se preferir apague-as. Agora podemos iniciar o daemon do ldap.
# invoke-rc.d slapd start
Vamos alterar o arquivo hosts para incluir estaticamente o nome do servidor ldap
# vi /etc/hosts
10.1.1.178 ldap-server
Vamos configurar o cliente ldap
# vi /etc/ldap/ldap.conf
BASE dc=mundotibrasil,dc=local URI ldap://10.1.1.178
Vamos adicionar o domínio e admin a base
# cd /etc/ldap
# mkdir LDIF
# cd LDIF
# vi init.ldif
# Entrada do domínio dn: dc=mundotibrasil,dc=local objectClass: organization objectClass: dcObject o: mundotibrasil.local dc: mundotibrasil # Entrada da conta de administração dn: cn=admin,dc=mundotibrasil,dc=local objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: Administrador LDAP userPassword: {SSHA}tpUEoR8iJk0tA1qAM/NDDmpk34mAsewF
Obs.: Copiei o hash da senha do admin do arquivo slapd.conf e passei para ‘userPassword:’
Vamos adicionar as entradas na base
# ldapadd -x -D ‘cn=admin,dc=mundotibrasil,dc=local’ -W -f init.ldif
Vamos conferir se está tudo certo:
# ldapsearch -x -D ‘cn=admin,dc=mundotibrasil,dc=local’ -W
-x - Autenticação simples, sem SASL -D - Vinculo com a DN informada -W - Solicita a senha
Vamos criar 2 OU para usuários e grupos
# vi OUs.ldif
# OU para usuarios dn: ou=People,dc=mundotibrasil,dc=local objectClass: top objectclass: organizationalUnit ou: People # OU para grupos dn: ou=Group,dc=mundotibrasil,dc=local objectClass: top objectclass: organizationalUnit ou: Group
Para adicionar ao LDAP execute:
# ldapadd -x -D ‘cn=admin,dc=mundotibrasil,dc=local’ -W -f OUs.ldif
Vamos criar um usuário para fins de teste:
# adduser user1
Vamos instalar o migrationtools para converter usuários e grupos Unix para o ldap
# apt-get install migrationtools
Copie os arquivos password e group do migrationtools de /usr/share/migrationtools para seu diretorio atual.
# cp /usr/share/migrationtools/migrate_passwd.pl .
# cp /usr/share/migrationtools/migrate_group.pl .
# cp /usr/share/migrationtools/migrate_common.ph .
Modifique o arquivo migrate_common.ph nas linhas 71, 74, 90:
# vi migrate_common.ph
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "mundotibrasil.local"; # Default base $DEFAULT_BASE = "dc=mundotibrasil,dc=local"; # turn this on to support more general object clases # such as person. $EXTENDED_SCHEMA = 1; ## Comente a variavel DEFAULT_REALM que configura o EXTENDED schema nas linhas 135, 136: # $DEFAULT_REALM = $DEFAULT_MAIL_DOMAIN; # $DEFAULT_REALM =~ tr/a-z/A-Z/;
Para usar o migrationtools para migrar as contas para o arquivo passwd.ldif:
# grep user1 /etc/passwd > user1
# ./migrate_passwd.pl user1 > user1.ldif
O arquivo user1.ldif deve conter entradas apenas para o usuário user1.
Adicione o novo usuário a base de dados:
# ldapadd -x -D ‘cn=admin,dc=mundotibrasil,dc=local’ -W -f user1.ldif
Crie o arquivo de grupo usando migrate_group.pl script:
# grep user1 /etc/group > group
# ./migrate_group.pl group > group.ldif
O arquivo group.ldif deve conter apenas a entrada para o grupo user1.
Adicione o novo grupo a base de dados:
# ldapadd -x -D ‘cn=admin,dc=mundotibrasil,dc=local’ -W -f group.ldif
A parte pesada de configuração, e explicação, do servidor já foi concluída. No próximo post iremos exportar o home dos usuários, e iremos configurar o cliente.
Espero que tenham gostado do post e aguardo seus comentários.
esta etapa de copiar o seguinte arquivo
# cp /usr/share/migrationtools/migrate_common.ph .
não foi possivel não tem este arquivo la …
o fazer?
ta em /etc/migrationtools…
Na distribuição Debian nas versões 6 (Squeeze) e 7 (Wheezy) esses arquivos estão no diretório informado.