Implementação de serviço de diretórios com OpenLDAP no CentOS 6.3

O objetivo deste tutorial é mostrar como instalar, configurar e administrar um serviço de diretórios com OpenLDAP.

[ Hits: 91.031 ]

Por: Maycson Fonseca em 09/01/2013 | Blog: http://br.linkedin.com/pub/maycson-fonseca/96/b54/12a


Comandos importantes



slappasswd

O comando slappasswd nos permite gerar senhas para os usuários do LDAP com uma variedade de criptografias. Este comando é muito útil em scripts, onde é preciso colocar senhas criptografadas em arquivos ".ldif" para adição de usuários em massa.

Segue algumas opções úteis (para verificar todas as opções, utilize: slappasswd help):

# slappasswd -g   # Cria uma senha randômica
# slappasswd -h hash   # Cria uma senha com o hash especificado.(Ex: {MD5})
# slappasswd -s secret   # Permite gerar o hash da senha sem perguntar a confirmação
# slappasswd -T file   # Permite pegar a senha a partir de um arquivo

Exemplo muito útil para scripts:

# slappasswd -h {MD5} -s senha

OpenLDAP - Consultando, adicionando, modificando e deletando entradas

Algumas opções em comum:
  • -h → Especifica o host no qual deseja se conectar;
  • -p → Especifica uma porta do servidor LDAP;
  • -f → Usado para ler as entradas de um arquivo;
  • -x → Usa autenticação simples no lugar de SASL;
  • -v → Retorna o diagnóstico da operação na saída padrão;
  • -ZZ → Inicia uma conexão segura, com start_tls;
  • -D → Usa a DN informada para se conectar no diretório LDAP;
  • -W → É usado para não especificar a senha na linha de comandos;
  • -w → Senha para se autenticar no servidor LDAP.

ldapsearch

Comando utilizado para consultar uma base de dados LDAP.

Algumas opções do comando:
  • -b → A partir de que ponto do diretório a pesquisa irá iniciar;
  • -L → Mostra informações restritas ao formato LDIFv1;
  • -LL → Mostra informações do LDIF sem os comentários;
  • -LLL → Mostra informações sobre o LDIF sem os comentários e sem a versão.

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 diretório LDAP.

Vamos criar duas OUs, uma para os grupos e outra para os usuários do nosso servidor.

Crie um arquivo chamado "groups.ldif", com o seguinte conteúdo:

dn: ou=Groups,dc=ldap-server,dc=com
ou: Groups
objectClass: top
objectClass: organizationalUnit

Crie um arquivo chamado "users.ldif", com o seguinte conteúdo:

dn: ou=Users,dc=ldap-server,dc=com
ou: Users
objectClass: top
objectClass: organizationalUnit

Adicione as entradas com os seguintes comandos:

# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f groups.ldif -W
# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f users.ldif -W


Vamos criar dois grupos para nosso servidor.

Crie um arquivo chamado "grupo-a.ldif", com o seguinte conteúdo:

dn: cn=Grupo-A,ou=Groups,dc=ldap-server,dc=com
objectClass: posixGroup
objectClass: top
cn: Grupo-A
gidNumber: 500

Crie um arquivo chamado "grupo-b.ldif", com o seguinte conteúdo:

dn: cn=Grupo-B,ou=Groups,dc=ldap-server,dc=com
objectClass: posixGroup
objectClass: top
cn: Grupo-B
gidNumber: 501

Adicione as entradas com os comandos abaixo:

# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f grupo-a.ldif -W
# ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f grupo-b.ldif -W


Observação: O gidNumber deve ser controlado manualmente. Cuidado para não adicionar dois grupos com mesmo GID, isso pode lhe trazer problemas com permissões nos clientes LDAP.

Use este comando para saber qual o seu gidNumber atual:

# ldapsearch -h 127.0.0.1 -b "dc=ldap-server,dc=com" -x | grep gidNumber | sort | tail -1 | awk '{print $2}'

Vamos criar dois usuários. Primeiro, crie o arquivo "user-01.ldif", com o seguinte conteúdo:

dn: cn=User-01,ou=Users,dc=ldap-server,dc=com
cn: User-01
gidNumber: 500
givenname: User-01
homedirectory: /home/user-01
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: User-01
uid: user-01
uidNumber: 1001
userpassword: {MD5}aY3BnUicTk23PiinE+qwew==

Crie o arquivo "user-02.ldif", com o seguinte conteúdo:

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==

Observação: O uidNumber deve ser controlado manualmente. Cuidado para não adicionar dois usuários 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 diretório LDAP.

Adicionando o User-01 no Grupo-B.

Crie um arquivo com nome "addgrp.ldif", com o seguinte conteúdo:

dn: cn=Grupo-B,ou=Groups,dc=ldap-server,dc=com
changetype: modify
add: memberuid
memberuid: user-01

Comando para aplicar a modificação no servidor:

# ldapmodify -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -f addgrp.ldif

Modificando o grupo do User-01. Crie um arquivo com nome "modgrp.ldif", com o seguinte conteúdo:

dn: cn=User-01,ou=Users,dc=ldap-server,dc=com
changetype: modify
replace: gidNumber
gidNumber: 501

Comando para aplicar a modificação no servidor:

# ldapmodify -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -W -f modgrp.ldif

Deletando todos os usuários do Grupo-B. Crie um arquivo com nome "delgrp.ldif", com o seguinte conteúdo:

dn: cn=Grupo-B,ou=Groups,dc=ldap-server,dc=com
changetype: modify
delete: memberuid

Comando para aplicar a modificação 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 ações no nosso servidor através desta ferramenta.

ldapdelete

Comando utilizado para apagar uma ou mais entradas do diretório 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=User-01,ou=Users,dc=ldap-server,dc=com"

Agora, vamos deletar a "OU Groups" e todo seu conteúdo. Para isso, use o comando abaixo. Repare a opção -r, que é recursivo para deletar o conteúdo 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=ldap-server,dc=com"

Página anterior     Próxima página

Páginas do artigo
   1. O que é LDAP
   2. Criando certificado SSL
   3. Comandos importantes
   4. Gerenciando com phpLDAPadmin
   5. Autenticando as estações no servidor OpenLDAP
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Monitorando No-Break no Ubuntu 12.04

Lubuntu, um Ubuntu mais Leve!

Caracteres especiais no teclado Linux: como adaptar às necessidades do escritor

Bootsplash nos kernels 2.6.17.13 e 2.6.18 no Slackware 11

Teclados USB e Linux

  
Comentários
[1] Comentário enviado por will__m em 04/11/2013 - 10:01h


Obrigado.


[2] Comentário enviado por rootss em 15/04/2014 - 20:23h

Cara primeiramente parabéns pelo artigo.

Estou com um problema aqui pra gerenciar pelo PHPldapAdmin.

Eu logo normalmente mas não exibe a árvore de diretórios, aparece assim " Esta base não pode ser criada com PLA. " .... onde deveria estar a base.

Você já passou por isso? ou tem idéia do que pode ser? Já não sei mais o que fazer hehe

Desde já agradeço.

Abs...

[3] Comentário enviado por murilo_ns em 06/05/2014 - 11:51h

como seria a autenticação se a estação fosse um Ubuntu e o servidor um CentOS?

[4] Comentário enviado por jfernandes em 05/10/2014 - 00:37h

Olá rapaz,

Antes de mais nada, parabéns pelo post, mas gostaria de pedir ajudas .

Como faço para localizar objetos específicos pelo nome, exemplo, um usuário, uma impressora, um servidor, quero localizar isso numa base LDAP.

Fico no aguardo

Abraços

[5] Comentário enviado por maycson em 06/10/2014 - 11:52h


[3] Comentário enviado por murilo_ns em 06/05/2014 - 11:51h:

como seria a autenticação se a estação fosse um Ubuntu e o servidor um CentOS?


Olá, seria a mesma coisa. No Ubuntu o que muda é apenas o nome de alguns arquivos e seus respectivos lugares.

[6] Comentário enviado por maycson em 06/10/2014 - 11:56h


[4] Comentário enviado por jfernandes em 05/10/2014 - 00:37h:

Olá rapaz,

Antes de mais nada, parabéns pelo post, mas gostaria de pedir ajudas .

Como faço para localizar objetos específicos pelo nome, exemplo, um usuário, uma impressora, um servidor, quero localizar isso numa base LDAP.

Fico no aguardo

Abraços


Olá, Obrigado

Você pode fazer assim : ldapsearch -h 127.0.0.1 -b "cn=maycson.fonseca,ou=users,dc=ldap-server,dc=com" -x
Se você separar por OUs as impressoras, os usuários e os servidores você consegue localizar bem fácil.
Era essa sua duvida ?

Abraços

[7] Comentário enviado por jfernandes em 06/10/2014 - 12:36h

Perfeito rapaz.

Muito obrigado.

Mais uma para nossas anotações.

Valeu Maycon

[8] Comentário enviado por maycson em 06/10/2014 - 22:33h


[2] Comentário enviado por rootss em 15/04/2014 - 20:23h:

Cara primeiramente parabéns pelo artigo.

Estou com um problema aqui pra gerenciar pelo PHPldapAdmin.

Eu logo normalmente mas não exibe a árvore de diretórios, aparece assim " Esta base não pode ser criada com PLA. " .... onde deveria estar a base.

Você já passou por isso? ou tem idéia do que pode ser? Já não sei mais o que fazer hehe

Desde já agradeço.

Abs...



Olá, Obrigado

use esse comando a sua base não foi adicionada corretamente:
ldapadd -h 127.0.0.1 -x -D "cn=Manager,dc=ldap-server,dc=com" -f ldap-server.ldif -W

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts