Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

linux:artigos:ldap-howto [13/01/2015 10:44] (atual)
Linha 1: Linha 1:
 +~~NOTOC~~
 +====== Configurando um Servidor Ldap no Debian ======
 +
 +**Observações:​**
 +  * Iremos levar em consideração que você possui uma instalação "​limpa"​ do S.O. Debian GNU/Linux.
 +  * Os serviços que estão sendo usandos na solução também devem estar devidamente configurados e em operação.
 +
 +===== Instalando o Servidor LDAP =====
 +
 +Antes de instalar o Ldap, precisamos ajustar o arquivo hosts.
 +
 +<​code>​
 +root@debian:​~#​ vi /etc/hosts
 +
 +127.0.0.1 ​      ​localhost.localdomain ​   localhost
 +10.0.0.22 ​      ​nome.dominio.com.br ​     nome
 +</​code>​
 +
 +Em seguida, vamos instalar os pacotes.
 +
 +<​code>​
 +root@debian:​~#​ aptitude install slapd ldap-utils
 +
 +Omitir a configuração do servidor OpenLDAP: <​Não>​
 +Senha do admin: *********
 +Confirme a senha: *********
 +Permitir protocolo LDAPv2? <​Não>​
 +</​code>​
 +
 +Em seguida
 +
 +<​code>​
 +root@debian:​~#​ aptitude install libnss-ldap libpam-ldap
 +
 +Identificador de Recurso Uniforme (URI) do Servidor LDAP: ldap://​localhost:​389
 +O nome distinto ("​distinguished name") da base de procura: dc=dominio,​dc=com,​dc=br
 +Versão LDAP a ser utilizada: 3
 +A base de dados LDAP requer login? <​Não>​
 +Privilégios especiais LDAP para o root? <​Não>​
 +Permitir a leitura/​escrita no ficheiro de configuração apenas para o dono? <​Não>​
 +O nsswitch.conf não é gerido automaticamente. <OK>
 +Tornar a conta root local o administrador da base de dados. <​Não>​
 +A base de dados LDAP requer autenticação?​ <​Não>​
 +</​code>​
 +
 +===== Configurando o Servidor LDAP =====
 +Agora vamos configurar o servidor LDAP e habilitar o sistema operacional para realizar autenticação no mesmo. Verifique as seguintes linhas:
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​ldap/​slapd.conf
 +
 +#######################################################################​
 +# Diretivas Globais:
 +
 +# Recursos disponiveis
 +#allow bind_v2
 +
 +# Definindo os schemas
 +include ​        /​etc/​ldap/​schema/​core.schema
 +include ​        /​etc/​ldap/​schema/​cosine.schema
 +include ​        /​etc/​ldap/​schema/​nis.schema
 +include ​        /​etc/​ldap/​schema/​inetorgperson.schema
 +include ​        /​etc/​ldap/​schema/​samba.schema
 +
 +# Local do Pidfile
 +pidfile ​        /​var/​run/​slapd/​slapd.pid
 +
 +# Argumentos adicionar que sao passados ao slapd
 +argsfile ​       /​var/​run/​slapd/​slapd.args
 +
 +# Habilitando Logs
 +loglevel ​       256
 +
 +# Opcoes de modulos
 +modulepath ​     /​usr/​lib/​ldap
 +moduleload ​     back_hdb
 +
 +# Quantidade maxima de entradas que serao retornadas na busca
 +sizelimit 5000
 +
 +# Quantidade de CPUs que serao usados para as indexacoes
 +tool-threads 1
 +
 +#######################################################################​
 +# Especificando as diretivas de backend
 +backend ​        hdb
 +
 +#######################################################################​
 +# Especificando diretivas para a base de dados
 +database ​       hdb
 +
 +# Base DN
 +suffix ​         "​dc=dominio,​dc=com,​dc=br"​
 +
 +# Root DN
 +rootdn ​         "​cn=admin,​dc=dominio,​dc=com,​dc=br"​
 +#​rootpw ​        123
 +
 +# Diretorio de armazenamento da base de dados
 +directory ​      "/​var/​lib/​ldap"​
 +
 +# Definindo o tamanho do cache - Para o Debian vamos usar o padrao de 2MB
 +dbconfig set_cachesize 0 2097152 0
 +# Numero de objetos que estarao em lock
 +dbconfig set_lk_max_objects 1500
 +# Numero de locks
 +dbconfig set_lk_max_locks 1500
 +# Numero de lockers
 +dbconfig set_lk_max_lockers 1500
 +
 +# Indexes
 +#​index ​          ​objectClass eq
 +index objectClass,​entryCSN,​entryUUID ​     eq,pres
 +index sambaSID ​                           eq
 +index sambaPrimaryGroupSID ​               eq
 +index sambaDomainName ​                    eq
 +index ou,​cn,​mail,​surname,​givenname ​       eq,pres,sub
 +index uidNumber,​gidNumber,​loginShell ​     eq,pres
 +index uid,​memberUid ​                      ​eq,​pres,​sub
 +
 +# Tempo em que a entrada e modificada
 +lastmod ​        on
 +
 +# Permissoes e ACLs
 +access to attrs=userPassword,​shadowLastChange,​sambaLmPassword,​sambaNtPassword
 +        by dn="​cn=admin,​dc=dominio,​dc=com,​dc=br"​ write
 +        by anonymous auth
 +        by self write
 +        by * none
 +
 +access to dn.base=""​
 +        by * read
 +
 +access to *
 +        by dn="​cn=admin,​dc=dominio,​dc=com,​dc=br"​ write
 +        by * read
 +</​code>​
 +
 +**Obs.:** Um exemplo de arquivo //​**slapd.conf**//​ pode ser obtido em [[http://​downloads.fabriciovc.eti.br/​ldap/​]]
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​ldap/​ldap.conf
 +
 +BASE    dc=dominio,​dc=com,​dc=br
 +URI     ​ldap://​127.0.0.1:​389
 +</​code>​
 +
 +Não esquecendo de reiniciar o serviço.
 +
 +<​code>​
 +root@debian:​~#​ /​etc/​init.d/​slapd stop
 +root@debian:​~#​ /​etc/​init.d/​slapd stop
 +</​code>​
 +
 +===== Configurando a PAM =====
 +E agora vamos habilitar a PAM para autenticar no LDAP, permitindo assim que o sistema operacional possa utilizar os usuários e grupos contidos no servidor.
 +
 +**Nota:** //No **Debian Squeeze** algumas configurações de PAM já são configuradas automaticamente.//​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​pam.d/​common-account
 +#​account ​   required ​     pam_unix.so
 +account ​    ​sufficient ​   pam_ldap.so
 +account ​    ​required ​     pam_unix.so try_first_pass
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​pam.d/​common-auth
 +#auth       ​required ​     pam_unix.so nullok_secure
 +auth        sufficient ​   pam_ldap.so
 +auth        required ​     pam_unix.so nullok_secure use_first_pass
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​pam.d/​common-password
 +#​password ​  ​required ​     pam_unix.so nullok obscure min=4 max=8 md5
 +password ​   sufficient ​   pam_ldap.so
 +password ​   required ​     pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​pam.d/​common-session
 +#Adicionar
 +session ​    ​optional ​     pam_mkhomedir.so skel=/​etc/​skel umask=0027
 +[...]
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​nsswitch.conf
 +[...]
 +passwd: ​        ​compat ldap
 +group: ​         compat ldap
 +shadow: ​        ​compat ldap
 +[...]
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​pam_ldap.conf
 +[...]
 +base dc=dominio,​dc=com,​dc=br
 +uri ldap://​127.0.0.1
 +ldap_version 3
 +[...]
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​libnss-ldap.conf
 +[...]
 +base dc=dominio,​dc=com,​dc=br
 +uri ldap://​127.0.0.1
 +ldap_version 3
 +rootbinddn cn=admin,​dc=dominio,​dc=com,​dc=br
 +[...]
 +</​code>​
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​libnss-ldap.secret
 +senha_de_admin_da_base_ldap
 +</​code>​
 +
 +===== Instalando o phpLdapAdmin =====
 +
 +Agora iremos realizar o download do utilitário phpLdapAdmin para que a administração do LDAP seja facilitada. O download de uma versão justada para melhor administração com templates em português pode ser obtida em [[http://​downloads.fabriciovc.eti.br/​ldap/​]].
 +
 +<​code>​
 +root@debian:/​var/​www#​ wget -c http://​downloads.fabriciovc.eti.br/​ldap/​phpldapadmin-1.1.0.5.tar.gz
 +</​code>​
 +
 +=== Pacotes extras necessários:​ ===
 +  * apache2
 +  * php5
 +  * php5-ldap
 +
 +<​code>​
 +root@debian:​~#​ aptitude install <​pacotes>​
 +</​code>​
 +
 +Realizado o download e instalado os pacotes do //apache2// e do //php5// necessários,​ descompacte o pacote do phpLdapAdmin na área de hospedagem (/var/www). Lembre-se que essa aplicação precisa ser configurada. ​
 +
 +<​code>​
 +root@debian:/​var/​www#​ tar xzvf phpldapadmin-1.1.0.5.tar.gz
 +root@debian:/​var/​www#​ mv phpldapadmin-1.1.0.5 phpldapadmin
 +root@debian:/​var/​www#​ cd phpldapadmin/​config
 +root@debian:/​var/​www/​phpldapadmin/​config#​ cp config.php.example config.php
 +root@debian:/​var/​www/​phpldapadmin/​config#​ vi config.php
 +</​code>​
 +
 +Configure as seguintes linhas.
 +
 +<​code>​
 +$ldapservers->​SetValue($i,'​server','​name','​DN LDAP Server'​);​
 +$ldapservers->​SetValue($i,'​server','​host','​127.0.0.1'​);​
 +$ldapservers->​SetValue($i,'​server','​port','​389'​);​
 +$ldapservers->​SetValue($i,'​server','​base',​array('​dc=dominio,​dc=com,​dc=br'​));​
 +$ldapservers->​SetValue($i,'​server','​auth_type','​session'​);​
 +$ldapservers->​SetValue($i,'​login','​dn','​cn=admin,​dc=dominio,​dc=com,​dc=br'​);​
 +$ldapservers->​SetValue($i,'​server','​sasl_auth',​false);​
 +$ldapservers->​SetValue($i,'​server','​low_bandwidth',​false);​
 +$ldapservers->​SetValue($i,'​appearance','​password_hash','​md5'​);​
 +$ldapservers->​SetValue($i,'​appearance','​show_create',​true);​
 +$ldapservers->​SetValue($i,'​auto_number','​enable',​true);​
 +$ldapservers->​SetValue($i,'​auto_number','​mechanism','​search'​);​
 +$ldapservers->​SetValue($i,'​auto_number','​min','​1000'​);​
 +$ldapservers->​SetValue($i,'​login','​timeout',​30);​
 +</​code>​
 +
 +===== Adicionando dados na base LDAP (com arquivos .ldif) =====
 +==== raiz.ldif ====
 +<​code>​
 +dn: dc=dominio,​dc=com,​dc=br
 +dc: exemplo
 +objectClass:​ domain
 +objectClass:​ top
 +</​code>​
 +
 +==== unidadeorganizacional.ldif ====
 +<​code>​
 +dn: ou=contatos,​dc=dominio,​dc=com,​dc=br
 +ou: contatos
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +
 +dn: ou=usuarios,​dc=dominio,​dc=com,​dc=br
 +ou: usuarios
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +
 +dn: ou=grupos,​dc=dominio,​dc=com,​dc=br
 +ou: grupos
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +</​code>​
 +
 +==== usuarios.ldif ====
 +<​code>​
 +dn: uid=fabricio,​ou=usuarios,​dc=dominio,​dc=com,​dc=br
 +givenName: Fabricio
 +sn: Vaccari Constanski
 +cn: Fabricio Vaccari Constanski
 +uid: fabricio
 +userPassword:​ {MD5}F5dfrtvcmAMadsZZsjaasdsdspBQ==
 +uidNumber: 1000
 +gidNumber: 1000
 +homeDirectory:​ /​home/​usuarios/​fabricio
 +loginShell: /bin/bash
 +objectClass:​ OpenLDAPperson
 +objectClass:​ posixAccount
 +objectClass:​ top
 +</​code>​
 +
 +==== grupos.ldif ====
 +<​code>​
 +dn: cn=nome_do_grupo,​ou=grupos,​dc=dominio,​dc=com,​dc=br
 +cn: nome_do_grupo
 +gidNumber: 1000
 +objectClass:​ posixGroup
 +objectClass:​ top
 +</​code>​
 +
 +==== Comando de adição ====
 +<​code>​
 +root@debian:​~#​ ldapadd -x -W -D "​cn=admin,​dc=dominio,​dc=com,​dc=br"​ -f arquivo.ldif
 +</​code>​
 +
 +===== Referências Consultadas =====
 +  * http://​nomis52.net/?​section=docs&​page=samldap
 +\\
 +----
 +
 +<​html>​
 +<a href="​javascript:​window.history.go(-1)">​Voltar</​a>​
 +</​html>​
  
linux/artigos/ldap-howto.txt · Última modificação: 13/01/2015 10:44 (edição externa)