Introdução ao OpenLDAP PDF Imprimir E-mail
Escrito por cristhianbini   
Sáb, 15 de Janeiro de 2011 01:43

Introdução ao OpenLDAP

1.1. Objetivos

• Manipular base de dados, localização e edição de objetos;
• Realizar Dump da Base de dados OpenLDAP e realizar restauração;
• Integrar OpenLDAP com Squid;
• Autenticação de cliente em base do OpenLDAP;
• Implementação de ferramenta para manipulação de base OpenLDAP via browser.

1.2. O que é um schema? (continuação)

Um schema é um componente responsável por definir a sintaxe de regras e atributos de um objeto OpenLDAP, ou, basicamente, estes arquivos são responsáveis por decodificar e permitir a integração de ferramentas por parte do servidor.

Ao integrar ferramentas como o servidor de e-mails Postfix ou o sudo ao LDAP, esses pacotes já trazem um schema para realizar a integração.

O segundo parâmetro são as ACL's, que especificam quem pode efetuar escrita dentro do OpenLDAP.:

access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=seu-nome,dc=br" write
by uid=”syadmin,dc=seunome,dc=com,dc=br” write
by anonymous auth
by self write
by * none
access to dn.base="" by * read


Cuidado com as ACL's de escrita no OpenLDAP.

No caso acima, tanto o usuário sysadmin quanto o usuário admin tem acesso de escrita na base. Como testar a sintaxe do arquivo? Faça o teste de sintaxe do arquivo com o comando slaptest:

# slaptest



Uma dúvida muito comum de quem está iniciando em OpenLDAP é: Como migrar uma base local para uma base LDAP?

Para isso, existe a ferramenta migrationtools, uma série de scripts em perl que podem auxiliar neste processo. Para instalar estes scripts, execute:

# aptitude install migrationtools


Este script possui algumas configurações padrão que precisam ser ajustadas, caso contrário, a migração pode ir por agua abaixo. Abra o arquivo /usr/share/migrate_common.ph e edite as linhas abaixo:

$DEFAULT_MAIL_DOMAIN="seunome.com.br";
$DEFAULT_BASE="dc=seunome,dc=com,dc=br";


Após realizar esta configuração, precisamos gerar três arquivos, um contendo a raiz da arvore, outro contendo os grupos e o ultimo contendo os usuários:

# cd /usr/share/migrationtools
# ./migrate_passwd.pl /etc/passwd /etc/ldap/users.ldif


Após realizar este processo, abra o arquivo /etc/ldap/users.ldif. O mesmo deve apresentar várias entradas semelhantes a entrada abaixo.


1.3. O que é o LDIF?

Este formado é o LDIF (LDAP Data Interchange Format), e é desta maneira que os dados devem ser incluidos no sistema LDAP quando não temos nenhuma ferramenta de administração.

Cada sintaxe abaixo é definida por um atribto dentro de um “schema”.

Este é um arquivo LDIF que define uma conta padrão Unix:

dn: uid=root,ou=People,dc=seunome,dc=com,dc=br
uid: root
cn:: cm9vdA==
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$dL7nEggA$P6Ib/H9QBkdd/sTcUBW1z1
shadowLastChange: 12495
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 0
gidNumber: 0
homeDirectory: /root
gecos: root





Agora vamos migrar a base de grupos do sistema e gerar a nossa base:

# ./migrate_group.pl /etc/group /etc/ldap/groups.ldif
# ./migrate_base.pl > /etc/ldap/base.ldif


Após gerar o arquivo base.ldif, remova as 9 primeiras linhas que definem o topo da arvore, pois eles já foram inclusos no OpenLDAP durante o comando “dpkgreconfigure slapd”.

Após criar os arquivos, adicione primeiramente o arquivo base.ldif com o comando abaixo:

# ldapadd -x -D cn=admin,dc=seunome,dc=com,dc=br -f /etc/ldap/base.ldif -W


Faça o mesmo para o arquivo groups.ldif:

# ldapadd -x -D cn=admin,dc=seunome,dc=com,dc=br -f /etc/ldap/groups.ldif -W


E por último, faça o mesmo para arquivo users.ldif:

# ldapadd -x -D cn=admin,dc=seu-nome,dc=com,dc=br -f /etc/ldap/users.ldif -W




1.4. Administração via linha de comando

A suíte OpenLDAP possui alguns comandos para administração do servidor. Aprender a lidar com estes comandos é fundamental para qualquer administrador de redes.

O primeiro comando que devemos aprender a utilizar é o comando ldapsearch, pois é com ele que iremos efetuar buscas dentro da nossa arvore. Para procurar o usuário aluno, execute:

# ldapsearch -x -b dc=seunome,dc=com,dc=br uid=aluno


O administrador pode buscar qualquer elemento dentro da arvore manipulando o parâmetro de busca. Experimente o seguinte comando:

# ldapsearch -x -b dc=seunome,dc=com,dc=br uidNumber=1000


Outro comando importante é o ldapmodify. Com ele, é possível alterar, incluir ou remover praticamente qualquer campo da arvore de forma rápida, pratica e simples.

Vamos alterar o campo loginShell do usuário aluno. Para isso, crie um ldif com o seguinte conteúdo:

# vim /root/loginShell.ldif
dn: uid=aluno,ou=People,dc=seunome,dc=com,dc=br
changetype: modify
replace: loginShell
loginShell: /bin/false


Agora, vamos alterar o parametro loginShell com o comando:


# ldapmodify -x -D cn=admin,dc=seunome,dc=com,dc=br -f /root/loginShell -W



1.5. Operações de Backup

Uma aula de OpenLDAP não estaria completa sem ao menos mencionar uma técnica de Backup/Restore de um servidor OpenLDAP.

Iremos, nesta seção, aprender a usar duas ferramentas do próprio projeto OpenLDAP, a ferramenta slapcat, para realizar o backup, e a ferramenta slapadd, para realizar o restore. Para realizar o backup, simplesmente realize o seguinte comando:

# slapcat –l /root/backup.ldif


Gerando uma cópia de segurança:

# cp /root/backup.ldif /root/backup_copia.ldif


Para ter certeza que o seu backup é seguro, é importante realizá-lo em um periodo livre de gravações, ou com o servidor slapd desligado. Após realizar o backup, vamos remover desligar o servidor slapd e remover sua base de dados inteira:

# ldapdelete -x -D cn=admin,dc=seunome,dc=com,dc=br -w secret -r dc=seunome,dc=com,dc=br
# invoke-rc.d slapd stop


Como podemos nos certificar que a base realmente foi removida?

Para nos certificar-mos de que a base realmente foi removida, execute o comando slapcat novamente, mas tenha certeza de que você não está sobrescrevendo o seu backup:

# slapcat


E como restaurar a base usando o comando slapadd?

Vamos restaurar a nossa base, utilzando o comando slapadd:

# slapadd -l backup.ldif


Note que a arvore continua com os elementos que descrevem a base LDAP. Abra o arquivo de backup e remova as linhas de 1 a 13. Execute o comando slapcat novamente, para termos certeza que o backup foi restaurado:

# slapcat


Atenção: Os comandos slapcat, slapadd, ldapsearch e ldapadd poderão cair na prova de certificação.

Realize os backups de acordo com a política de sua empresa, e:

Execute testes de RESTORE periodicamente!

1.6. Configurando a autenticação dos clientes

Para que os nossos computadores possam autenticar-se como clientes LDAP, é necessário que modifiquemos uma série de arquivos do PAM e também é necessária a instalação de alguns pacotes.

Instalando os pacotes necessários e configure-os: de acordo com o instrutor:

#aptitude install libnss-ldap libpam-ldap


Qual a função do arquivo nsswitch.conf ?

O arquivo /etc/nsswitch.conf é o responsável por indicar aos programas e aplicativos aonde buscar o usuário e senha.


Modificando este arquivo, estamos mantendo a busca nos arquivos /etc/passwd e /etc/shadow, e ampliando as opções dizendo que o sistema também pode consultar uma base LDAP:

# vim /etc/nsswitch.conf
passwd:compat ldap
group: compat ldap
shadow:compat ldap


Agora vamos configurar o arquivo /etc/libnss-ldap.conf

# vim /etc/libnss-ldap.conf
nss_base_passwd ou=People,dc=seunome,dc=com,dc=br
nss_base_shadow ou=People,dc=seunome,dc=com,dc=br



Agora vamos configurar o arquivo /etc/pam_ldap.conf

#vim /etc/pam_ldap.conf
nss_base_passwd ou=People,dc=seunome,dc=com,dc=br
nss_base_shadow ou=People,dc=seunome,dc=com,dc=br


Por último, iremos configurar o PAM para que ele busque os usuários na base LDAP.

Atenção: Muito cuidado, faça cópia dos originais e mantenha mais dois terminais de root abertos.

Configure o arquivo /etc/pam.d/common-auth

# vim /etc/pam.d/common-auth


Remova as opções existentes e acrescente estas:

auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure try_first_pass


Configure também o arquivo /etc/pam.d/common-account:

# vim /etc/pam.d/common-account


Remova as opções existentes e acrescente estas:

account sufficient pam_ldap.so
account required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel umask=0077


Agora configure o arquivo /etc/pam.d/common-password

# vim /etc/pam.d/common-password


Remova as opções existentes e acrescente estas:

password sufficientpam_unix.so nullok obscure min=4 max=8 md5
password required pam_ldap.so try_first_pass


Edite também o arquivo /etc/pam.d/common-session:

# vim /etc/pam.d/common-session


Remova as opções existentes e acrescente estas:

session sufficient pam_ldap.so
session required pam_unix.so


A partir deste momento, qualquer usuário incluído no OpenLDAP estará apto a logar neste computador. Existe uma interface administrativa para o OpenLDAP para facilitar nossa vida de administrador?


1.7. Instalando uma interface administrativa

Como vimos até aqui, administrar um servidor OpenLDAP “na unha” pode ser uma tarefa extremamente cansativa, dependendo o tamanho da sua estrutura.

Para facilitar um pouco a nossa vida, iremos instalar uma ferramenta baseada em plataforma Web para realizar a administração do nosso servidor. Para isso, instale o pacote phpldaadmin junto com suas ferramentas:

# aptitude install php-pear php5-ldap phpldapadmin


Abra o seu browser e digite no campo URL:

http://127.0.0.1/phpldapadmin/index.php

Para efetuar login, utilize o formato do próprio LDAP para especificar usuários:

cn=admin,dc=seunome,dc=com,dc=br


Dica: Configure o https para que a senha do admin não trafegue em texto claro pela rede. Além disso, é interessante colocar o OpenLDAP para trabalhar com OpenSSL:

http://www.bayour.com/LDAPv3-HOWTO.html#4.1.OpenSSL|outline


1.8. Autenticando o Squid na base de usuários LDAP

Para completar a nossa aula, que tal realizar a configuração do squid para que ele fique integrado ao nosso servidor OpenLDAP.
Para isso, abra o arquivo de configuração do squid que foi visto na aula já dada, e então configure-o:

# vim /etc/squid/squid.conf
auth_param basic program /usr/lib/squid/ldap_auth -b dc=seunome,
dc=com,dc=br -f uid=%s 192.168.200.1

Última atualização em Sáb, 15 de Janeiro de 2011 01:58
 

Adicionar comentário


Código de segurança
Atualizar