Académique Documents
Professionnel Documents
Culture Documents
1 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
OpenLDAP
o projeto que mantm uma implementao completa em Software Livre de um servidor de servios de
diretrios LDAP, estando presente em todas as principais distribuies GNU/Linux e BSD.
Instalao do servidor
Primeiro, vamos adicionar dois repositrios no CentOS:
Para CentOS 6 - 32 bits:
# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Para CentOS 6 - 64 bits:
# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Agora vamos instalar os pacotes necessrios para configurar o servidor:
# yum install openldap-servers openldap-clients
Uma boa prtica realizar os backups dos arquivos originais. Geralmente, eu crio em /home o diretrio
BackUp, mas isso fica a seu critrio:
# mkdir /home/BackUp
20/02/2014 18:25
2 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
# mkdir /home/BackUp/LDAP
# cp -r /etc/openldap/ /home/BackUp/LDAP/
# cp -r /usr/share/openldap-servers /home/BackUp/LDAP/
Voltando configurao, vamos editar o arquivo ldap.conf. Como editor, utilizei o Nano, mas voc pode
utilizar qualquer um de sua preferncia:
# nano /etc/openldap/ldap.conf
Adicione as linhas BASE e URI ao final do arquivo. No esquea de trocar o nome da BASE e da URI,
conforme as configuraes de seu servidor.
Exemplo:
Se o seu servidor LDAP se chama: ldap-server.com
E tiver o IP: 192.168.255.1
... a configurao ser como esta abaixo. No lugar do IP, voc tambm pode utilizar o domnio:
BASE dc=ldap-server,dc=com
URI
ldap://192.168.255.1
Vamos copiar o arquivo de configurao "slapd.conf" para /etc/openldap, e o "DB_CONFIG" para /var/lib
/ldap:
# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
Criaremos uma senha criptografada para o usurio root do LDAP e copiaremos o hash para o arquivo
"slapd.conf". Lembrando que a senha pode ser diferente da senha do usurio root do servidor.
Utilize o comando slappasswd para criar a senha e copie o hash da senha aps digitar a sua senha.
Exemplo:
# slappasswd
New password:
Re-enter new password:
{SSHA} Senha Criptografada
Edite o arquivo "slapd.conf", alterando as seguintes linhas (seguirei nosso exemplo do ldap-server.com):
De:
by dn.exact="cn=Manager,dc=my-domain,dc=com" read
Para:
by dn.exact="cn=Manager,dc=ldap-server,dc=com" read
De:
20/02/2014 18:25
3 de 14
suffix
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
"dc= my-domain,dc=com"
Para:
suffix
"dc= ldap-server,dc=com"
De:
rootdn
Para:
rootdn
Crie um arquivo com o nome do seu domnio ".ldif" (exemplo: ldap-sever.ldif), com o seguinte contedo,
alterando as configuraes para o seu domnio:
dn: dc=ldap-server,dc=com
dc: ldap-server
objectClass: dcObject
objectClass: organization
o: ldap-server.com
Removeremos o diretrio slapd.d/ e adicionaremos nosso arquivo no servidor.
# rm -rf /etc/openldap/slapd.d/*
# slapadd -n 2 -l /etc/openldap/ldap-server.ldif
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
Vamos definir as permisses dos diretrios:
# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/slapd.d
Colocaremos o servio do slapd para ser iniciado junto ao boot da mquina:
# chkconfig slapd on
# service slapd start
Faremos os testes finais para garantir o correto funcionamento do servio slapd:
# rm -rf /etc/openldap/slapd.d/*
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
# chown -R ldap:ldap /etc/openldap/slapd.d
# service slapd restart
20/02/2014 18:25
4 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
20/02/2014 18:25
5 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
# nano /etc/nsswitch.conf
hosts: ldap files dns
Adicione as seguintes regras no firewall do CentOS, alterando "192.168.255.0/24" para o endereo de rede da
sua LAN:
# nano /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.255.0/24 --dport 389 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.255.0/24 --dport 636 -j ACCEPT
Reinicie o firewall:
# service iptables restart
Comandos importantes
slappasswd
O comando slappasswd nos permite gerar senhas para os usurios do LDAP com uma variedade de
criptografias. Este comando muito til em scripts, onde preciso colocar senhas criptografadas em arquivos
".ldif" para adio de usurios em massa.
Segue algumas opes teis (para verificar todas as opes, utilize: slappasswd help):
# slappasswd -g # Cria uma senha randmica
# slappasswd -h hash # Cria uma senha com o hash especificado.(Ex: {MD5})
# slappasswd -s secret # Permite gerar o hash da senha sem perguntar a confirmao
# slappasswd -T file # Permite pegar a senha a partir de um arquivo
Exemplo muito til para scripts:
# slappasswd -h {MD5} -s senha
20/02/2014 18:25
6 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
ldapsearch
Comando utilizado para consultar uma base de dados LDAP.
Algumas opes do comando:
-b A partir de que ponto do diretrio a pesquisa ir iniciar;
-L Mostra informaes restritas ao formato LDIFv1;
-LL Mostra informaes do LDIF sem os comentrios;
-LLL Mostra informaes sobre o LDIF sem os comentrios e sem a verso.
Vamos fazer uma consulta simples no nosso servidor:
# ldapsearch -h 127.0.0.1 -b "dc=ldap-server,dc=com" -x
ldapadd
Comando utilizado para adicionar entradas no diretrio LDAP.
Vamos criar duas OUs, uma para os grupos e outra para os usurios do nosso servidor.
Crie um arquivo chamado "groups.ldif", com o seguinte contedo:
dn: ou=Groups,dc=ldap-server,dc=com
ou: Groups
objectClass: top
objectClass: organizationalUnit
Crie um arquivo chamado "users.ldif", com o seguinte contedo:
dn: ou=Users,dc=ldap-server,dc=com
ou: Users
objectClass: top
objectClass: organizationalUnit
Adicione as entradas com os seguintes comandos:
20/02/2014 18:25
7 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
20/02/2014 18:25
8 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
dn: cn=User-02,ou=Users,dc=ldap-server,dc=com
cn: User-02
gidNumber: 501
givenname: User-02
homedirectory: /home/user-02
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: User-02
uid: user-02
uidNumber: 1002
userpassword: {MD5}6VkIjGBJ8RBMhMm95VYKEw==
Observao: O uidNumber deve ser controlado manualmente. Cuidado para no adicionar dois usurios com
mesmo UID, repare que a senha foi adicionada com criptografia MD5.
Use este comando para saber qual o seu uidNumber atual:
# ldapsearch -h 127.0.0.1 -b "dc=ldap-server,dc=com" -x | grep uidNumber | sort | tail -1 | awk '{print
$2}'
Use esse comando para gerar o Hash da senha, neste caso usei criptografia MD5:
# slappasswd -h {MD5} -s SENHA
Adicione as entradas com os comandos abaixo:
# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f user-01.ldif -W
# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f user-02.ldif -W
ldapmodify
Comando utilizado para modificar dados no diretrio LDAP.
Adicionando o User-01 no Grupo-B.
Crie um arquivo com nome "addgrp.ldif", com o seguinte contedo:
dn: cn=Grupo-B,ou=Groups,dc=ldap-server,dc=com
changetype: modify
add: memberuid
memberuid: user-01
Comando para aplicar a modificao no servidor:
# ldapmodify -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -f addgrp.ldif
20/02/2014 18:25
9 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
Modificando o grupo do User-01. Crie um arquivo com nome "modgrp.ldif", com o seguinte contedo:
dn: cn=User-01,ou=Users,dc=ldap-server,dc=com
changetype: modify
replace: gidNumber
gidNumber: 501
Comando para aplicar a modificao no servidor:
# ldapmodify -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -f modgrp.ldif
Deletando todos os usurios do Grupo-B. Crie um arquivo com nome "delgrp.ldif", com o seguinte contedo:
dn: cn=Grupo-B,ou=Groups,dc=ldap-server,dc=com
changetype: modify
delete: memberuid
Comando para aplicar a modificao no servidor:
# ldapmodify -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -f delgrp.ldif
O ldapmodify extremamente importante para mantermos os dados sempre atualizados, podemos realizar
muitas aes no nosso servidor atravs desta ferramenta.
ldapdelete
Comando utilizado para apagar uma ou mais entradas do diretrio LDAP.
Vamos deletar o User-01, para isso use o comando abaixo:
# ldapdelete -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -v "cn=User01,ou=Users,dc=ldap-server,dc=com"
Agora, vamos deletar a "OU Groups" e todo seu contedo. Para isso, use o comando abaixo. Repare a opo
-r, que recursivo para deletar o contedo de dentro da OU Groups:
# ldapdelete -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -v -r "ou=Groups,dc=ldapserver,dc=com"
20/02/2014 18:25
10 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
20/02/2014 18:25
11 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
# chkconfig httpd on
# service httpd restart
Se o Apache retornar um aviso como este:
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for
ServerName
Edite o arquivo /etc/httpd/conf/httpd.conf e altere a linha "ServerName", retirando o comentrio, caso exista.
Exemplo:
ServerName ldap-server.com:80
Reinicie novamente o servio do Apache:
# service httpd restart
Agora o servio estar rodando perfeitamente.
20/02/2014 18:25
12 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.255.0/24 --dport 443 -j ACCEPT
Reinicie o firewall:
# service iptables restart
Acesse atravs do endereo: https://ip_do_seu_ldapserver/ldapadmin
Coloque em Login DN: cn=Manager,dc=ldap-server,dc=com (altere dc=ldap-server,dc=com para o seu
Servidor LDAP).
No campo senha, digite a senha de root do Servidor LDAP.
20/02/2014 18:25
13 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
URI ldaps://192.168.255.1
BASE dc=ldap-server,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT allow
Edite o final do arquivo /etc/nslcd.conf como no exemplo. Se existir a linha "ssl", na apague:
# nano /etc/nslcd.conf
uri ldap://192.168.255.1
base dc=ldap-server,dc=com
ssl start_tls
tls_reqcert allow
tls_cacertdir /etc/openldap/cacerts
Agora, no final do arquivo /etc/pam_ldap.conf, se existir a linha "ssl", no apague e deixe como o exemplo
abaixo:
# nano /etc/pam_ldap.conf
uri ldap://192.168.1.20
ssl start_tls
tls_reqcert allow
tls_cacertdir /etc/openldap/cacerts
pam_password md5
Faa uma cpia do arquivo /etc/pam.d/system-auth:
# cp /etc/pam.d/system-auth /etc/pam.d/system-auth.original
Agora edite o arquivo system-auth, e deixe igual ao exemplo abaixo:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth
required pam_env.so
auth
sufficient pam_unix.so try_first_pass likeauth nullok
auth
sufficient pam_ldap.so use_first_pass
auth
required pam_deny.so
account sufficient pam_ldap.so
account required pam_unix.so
password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3
password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow
password sufficient pam_ldap.so use_authtok use_first_pass
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel umask=0022
session optional pam_ldap.so
20/02/2014 18:25
14 de 14
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=14039
Obrigado.
Maycson Fonseca
http://www.vivaolinux.com.br/artigo/Implementacao-de-servico-de-diretorios-com-OpenLDAP-no-CentOS-63
Voltar para o site
20/02/2014 18:25