Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos
Servio de Diretrio
Diretrios vs DBMSs
LDAP
Protocolo
Lightweight Directory Access Protocol Conjunto de critrios, mecanismos e mtodos TCP/IP Multiplataforma
Vantagens da Utilizao
Padro aberto API bem definida Maior velocidade de consulta que um Banco de Dados relacional Esquemas padronizados para dados Consolidao de informaes Replicvel e distribuvel
Estrutura
Estrutura
Base
Container
Objeto
Schemas
Conjunto de ObjectClasses Definem os campos que podem ser utilizados em um objeto Contm atributos obrigatrios e opcionais Ex: Usurio de sistema (posixAccount)
ObjectClass posixAccount
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction of an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) )
OID Nmero nico de identificao do objeto: Object Identifier Nome do objeto Descrio do objeto Herana do objeto Atributos obrigatrios (MUST) Atributos opcionais (MAY)
Atributo homeDirectory
attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' DESC 'The absolute path to the home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
OID Nmero nico de identificao do objeto: Object Identifier Nome do objeto Descrio do objeto Regra para comparao em buscas efetuadas no atributo Sintaxe vlida (tipo de dados que pode ser armazenado)
No h dois registros iguais em um mesmo diretrio Registros podem ser similares e conterem os mesmos atributos Unicidade garantida atravs do DN (Distinguished Name)
Exemplo de Registro
cn=Diego Alencar Alves de Lima,ou=Usuarios,dc=4linux,dc=com,dc=br
Base (raiz) do diretrio, definida pelo Domain Component (DC) N da rvore do tipo Unidade Organizacional (Organization Unit, OU) N da rvore do tipo Nome Comum (Common Name, CN)
Objeto Final
dn: cn=Anahuac de Paula Gil,ou=Usuarios,dc=4linux,dc=com,dc=br uid: anahuac sn: anahuac objectClass: top objectClass: person objectClass: qmailUser homeDirectory: /home/anahuac userPassword:: asdasdfjeqfhASfjk= cn: Anahuac de Paula Gil mail: anahuac@4linux.com.br
Dica: Atributos que possuem 2 : (::) tem seu valor armazenado codificados em base64.
Resumo
A base LDAP hierrquica e muito mais semelhante ao sistema de arquivos que a um banco de dados relacional A base LDAP armazena recursos O LDAP define um conjunto de objetos e atributos para o armazenamento Esse conjunto chamado de schema Um objeto chamado de ObjectClass e composto por atributos Atributos so definioes de campo Cada registro nico em uma base LDAP
Instalao
Preparao do Servidor
Configurar pr-requisitos
/etc/hostname /etc/hosts
Pacotes X Compilao
Pacotes
Facilidade de manuteno Atualizaes de segurana Correes de bugs Conformidade com padres da distribuio Flexibilidade na escolha de recursos Verses mais novas Recursos extras Administrao manual Bugs e falhas de segurana: Responsibilidade do administrador
Compilao do cdigo-fonte
Instalar o servidor
aptitude install slapd Fornecer senha 12345 para usuario admin A base inicial ser criada automaticamente
Instalar os pacotes com as dependncias Baixar o fonte do site oficial Descompactar os arquivos Gerar o makefile conforme o desejado
Configuraes
/etc/ldap/slapd.conf
/etc/ldap/ldap.conf
/var/lib/ldap/DB_CONFIG
Ferramentas de Gerenciamento
Comandos slap
Devem ser executados com a base parada!
Acessam diretamente a base do LDAP, sem utilizar as interfaces fornecidas pelo DSA Especficos para serem utilizados com o OpenLDAP
Comandos slap
Slaptest
Slapcat
Comandos slap
Slapadd
Adiciona informaes de um arquivo LDIF na base. til para popular inicialmente a base/restaurar backups Sintaxe: slapadd -l arquivo.ldif
Comandos slap
Slappasswd
Comandos slap
Slapindex
Efetua a re-indexao da base LDAP Utilizado para acelerar o acesso aos dados
Comandos ldap
Utilizados com a base LDAP ativa Como clientes LDAP, podem acessar outros DSAs que seguem o padro e no so especficos do OpenLDAP
Comandos ldap
Opes comuns
-h -p -x -ZZ -D -w
host no qual se conectar porta na qual se conectar autenticao simples autenticao TLS DN com o qual se autenticar senha do DN
Comandos ldap
Ldapsearch
-b -s -L
Exemplo:
ldapsearch -h localhost -p 389 -x -D cn=admin,dc=4linux,dc=com,dc=br -w 12345 -b ou=Usuarios,dc=4linux,dc=com,dc=br -LLL
Comandos ldap
Filtros
condicional e; condicional ou; condicional no; igual; igualdade aproximada; menor que; maior que
Comandos ldap
ldapsearch -h localhost -x -b dc=4linux,dc=com,dc=br -LLL '(objectClass=posixAccount)' ldapsearch -h localhost -x -b dc=4linux,dc=com,dc=br -LLL '(cn=*Lima)' cn ldapsearch -h localhost -x -b dc=4linux,dc=com,dc=br -LLL '(cn~=dieog lma)' ldapsearch -h localhost -x -b dc=4linux,dc=com,dc=br -LLL '(|(&(cn~=dieog lma)(uidNumber=2000))(|(givenName=Roberto) (uidNumber=1000)))'
Comandos ldap
( ) (
Comandos ldap
Consultar um endereo de email? Procurar um usurio pelo seu uidNumber? Buscar um sn digitado por um usurio? Procurar usuarios que tem nome Diego? Procurar usurios que esto na localidade So Paulo?
Comandos ldap
ldapadd
Adiciona objetos ao LDAP Semelhante ao slapadd Necessita de autenticao na maioria das situaes
Exemplo:
Comandos ldap
ldapmodify
Permite fazer alteraes em atributos de objetos existentes Suporta trs formas de alterao:
Forma do LDIF: dn: [dn completo do objeto] ao: [atributo] atributo: [valor]
Comandos ldap
ldapdelete
Exemplo:
ldapdelete -h localhost -p 389 -x -D cn=admin,dc=4linux,dc=com,dc=br -w senha cn="Marcos Lima",ou=Usuarios,dc=4linux,dc=com,dc=br
Comandos ldap
ldapmodrdn
Permite renomear um DN Normalmente utilizado com o parametro -r para evitar a duplicao do atributo CN
Exemplo:
Clientes LDAP
Clientes Web
Interface Grfica
Linha de Comando
Gerenciamento de Logs
Gerenciamento de Logs
Abrir um segundo terminal e realizar uma pesquisa. Reinicie agora com nivel 32 e realize a consulta novamente.
Gerenciamento de Logs
Os logs do LDAP sao gerenciados atravs do log geral do sistema Mensagens podem ser gravadas em um arquivo separado. Exemplo: local4.*
/var/log/slapd.log
ndices
ndices
Tipos de indexao
pres Utilizado para buscas de presena eq Utilizado em comparaes de equalidade sub Utilizado em buscas de substring approx Utilizado em buscas aproximadas
ndices
Exemplo:
eq eq,pres approx,sub,eq
ndices
Consultar um endereo de email Procurar um usurio pelo seu uidNumber Buscar um sn digitado por um usurio Procurar usuarios que tem nome Jose
ACLs
ACLs
* Users Self
dn.<escopo> Usuarios dentro do escopo da DN dn.[<estilo>] Usuarios determinados por uma expresso regular
ACLs
Nveis de acesso
Sem acesso Pode se autenticar Pode efetuar comparaoes Pode utilizar filtros Pode ler resultados de pesquisas Pode modificar e renomear
ACLs
Escopos
to dn.base=ou=usuarios,dc=dominio
dc=dominio cn=admin,dc=dominio ou=usuarios,dc=dominio uid=diego,ou=usuarios,dc=dominio cn=agenda,uid=diego,ou=usuarios,dc=dominio uid=fulano,ou=usuarios,dc=dominio
ACLs
Escopos
to dn.one=ou=usuarios,dc=dominio
dc=dominio cn=admin,dc=dominio ou=usuarios,dc=dominio uid=diego,ou=usuarios,dc=dominio cn=agenda,uid=diego,ou=usuarios,dc=dominio uid=fulano,ou=usuarios,dc=dominio
ACLs
Escopos
to dn.subtree=ou=usuarios,dc=dominio
dc=dominio cn=admin,dc=dominio ou=usuarios,dc=dominio uid=diego,ou=usuarios,dc=dominio cn=agenda,uid=diego,ou=usuarios,dc=dominio uid=fulano,ou=usuarios,dc=dominio
ACLs
Escopos
to dn.children=ou=usuarios,dc=dominio
dc=dominio cn=admin,dc=dominio ou=usuarios,dc=dominio uid=diego,ou=usuarios,dc=dominio cn=agenda,uid=diego,ou=usuarios,dc=dominio uid=fulano,ou=usuarios,dc=dominio
ACLs
access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=4linux,dc=com,dc=br" write by anonymous auth by self write by * none
ACLs
ACLs
access to * by dn="cn=admin,dc=4linux,dc=com,dc=br" write by * read
ACLs
access to dn.subtree="ou=Restrito,dc=4linux,dc=com,dc=br by self write by dn.children="dc=4linux,dc=com,dc=br" search by anonymous auth
ACLs
Exerccios
Proteja o diretrio contra leitura por usurios no autenticados Permita que somente o dono de um atributo possa ler e altera-lo Permita que somente seu usuario (um usurio criado por voc) leia um ou=Confidencial
Backups
Ldapsearch Forma recomendada Utiliza a interface LDAP Gera um arquivo LDIF Slapcat
No necessita de senha do administrador No recomendada, mas aceita a partir do OpenLDAP 2.2 para BDB e HDB* Cpia do diretrio da base COM A BASE FECHADA*
* http://www.openldap.org/faq/data/cache/287.html
Backups
Usando o ldapsearch
ldapsearch -x -D cn=admin,dc=4linux,dc=com,dc=br -w senha -b dc=4linux,dc=com,dc=br -LLL > backup.ldif
Usando o slapcat
slapcat > backup.ldif
Backups
Scripts de backup
#! /bin/bash ADMIN_MAIL="" LDAP_PASS="senha" TODAY=`date +%Y%m%d` ldapsearch -x -D cn=admin,dc=4linux,dc=com,dc=br \ -w $LDAP_PASS \ -b dc=4linux,dc=com,dc=br \ -LLL > /tmp/$TODAY-backup.ldif cd /tmp tar -zcvf $TODAY-backup.tar.gz $TODAY-backup.ldif echo "Backup da base LDAP" | nail -s "Backup de $TODAY" \ -a /tmp/$TODAY-backup.tar.gz $ADMIN_MAIL
Backups
Parar a base Remover a base antiga Iniciar o OpenLDAP para a criao da base vazia Parar o OpenLDAP novamente Para LDIFs: Restaurar o LDIF utilizando-se slapadd Para arquivos: copiar os arquivos de backup da base Reindexar a base Conferir as permisses Iniciar o DSA
Backups
Ferramenta db_recovery
Efetua a restaurao de certos tipos de corrupo da base Ferramenta de ltimo caso Deve ser utilizada a ferramenta da mesma verso da base Berkeley DB Sintaxe:
db4.2_recover -c -v -h /var/lib/ldap
Parmetro do slapd.conf:
rootdn "cn=admin,dc=4linux,dc=com,dc=br" rootpw 123456
Pode ser definida de forma criptografada utilizando-se o slappasswd Aps a configurao, reiniciar o DSA e alterar a senha do admin utilizando ldapmodify
Suporte a Criptografia
SSL
Segurana da camada de transporte Implementada na camada de aplicao Exige uma porta diferente Implementada na camada de transporte Reutiliza a porta j existente
TLS
Ativao do TLS
Instalar o OpenSSL Criar uma agncia certificadora (CA) Gerar uma chave de assinatura Criar o certificado do servidor Assinar o certificado com a chave de assinatura do CA Copiar os certificados assinados Ajustar o slapd.conf para utilizar os certificados
Copiar o certificado do CA para o cliente Ajustar o arquivo /etc/ldap/ldap.conf Utilizar o parmetro -ZZ nos comandos ldap
Replicao
Slurpd
Descontinuada na verso 2.4 No confivel em grandes volumes Sensvel a erros No tolera longos perodos sem replicao Daemon independente Introduzida na verso 2.3 Mdulo do LDAP Suporta dois mtodos de replicao: pushbased e pull-based
Syncrepl
Replicao
Parar o OpenLDAP Incluir o modulo syncprov no slapd.conf Incluir o overlay e configuraes do syncprov Configurar ACLs para permitir o usuario cn=Replicator Inicie o servidor
Replicao
Parar o OpenLDAP Incluir diretiva syncrepl Configure a diretiva rootdn Remova a base antiga Inicie o servidor
Integrando Servios
Servidor Apache
Servidor Apache
Instalar o apache
aptitude install apache2
Servidor Apache
Copiar a configurao do vhost para /etc/apache2/conf.d Criar o diretrio do vhost e um index.html Reiniciar o Apache Alterar a linha require valid-user conforme o desejado
Servidor Apache
require user Diego Lima [para cn=] require user diego.lima [para uid=] require ldap-group cn=Web,ou=Grupos,dc=4linux,dc=com,dc=br [groupOfUniqueNames] require dn cn=Diego Lima,ou=Usuarios,dc=4linux,dc=com,dc=br require ldap-attribute title=acessoweb
Instalar o Squid
aptitude install squid
Criar ACLs
acl Gdiretoria external grupo_no_LDAP diretores acl pedeSenha proxy_auth REQUIRED acl minhaRede src 192.168.200.0/255.255.255.0
NSS e PAM
Instalar o NSS
getent passwd
NSS e PAM
Instalar o libpam-ldap
aptitude install libpam-ldap Editar o arquivo /etc/pam.d/common-account Editar o arquivo /etc/pam.d/common-auth Editar o arquivo /etc/pam.d/common-password Editar o arquivo /etc/pam.d/common-session Verificar o arquivo /etc/pam_ldap.conf
Configurar o PAM
VSFTP e ProFTP
Instalar o vsftp
Edite o arquivo /etc/vsftpd.conf Reinicie o vsftp Teste o ftp conectando-se a sua maquina:
ftp debianXX.brasilia.caixa
Instalar o ProFTP
VSFTP e ProFTP
Editar o arquivo /etc/proftpd/proftpd.conf e configurar o ldap Reiniciar o proftpd /etc/init.d/proftpd restart Se conectar no servidor
Servidor Postfix
Instalar o Postfix como internet site Copiar o qmailuser.schema para /etc/ldap/schema e adiciona-lo no slapd.conf Adicionar os atributos de email nos usurios Configurar o postfix para utilizar LDAP (/etc/postfix/main.cf) Testar o funcionamento
Editar o arquivo /etc/default/saslauthd Crie o arquivo /etc/saslauthd.conf Reinicie o saslauthd Utilize o comando testsaslauthd para testar o SASL
Instalar o Cyrus
Editar o arquivo /etc/postfix/main.cf para entregar mensagens para o Cyrus Reinicie o Cyrus e o Postfix Criar usurio Cyrus na base LDAP Testar o funcionamento
Instalar o Samba
Samba
Instalar o schema do Samba no OpenLDAP Copie o arquivo samba.schema Adicione uma diretiva include no slapd.conf Configure indexao dos atributos
Restrinja o acesso aos atributos sambaLMPassword e sambaNTPassword para somente permitir autenticao
Samba
Pare o OpenLDAP e reindexe a base Inicie novamente o OpenLDAP Faa backup do arquivo /etc/samba/smb.conf e copie o arquivo de configurao exemplo Informe ao Samba a senha do usurio admin do OpenLDAP Crie um arquivo de usurios do samba Reinicie o Samba
Samba
net getlocalsid