Ldap/Instalação
Implementando um Servidor LDAP com OpenLDAP
editar1. Instalando os Pré-requisitos para a instalação do OpenLDAP Biblioteca básica de criptografia para sistemas Linux
# apt-get install openssl libssl0.9.8
Utilizando o apt-get, além de instalar o openssl e sua biblioteca básica, toda e qualquer dependência necessária ao funcionamento dessas ferramentas também será instalada
Toda as informações são armazenadas em algum tipo de base, no nosso caso instalaremos o gerenciador Oracle Berkeley DB.
# apt-get install db4.2-util
SASL é um acrônico para Simple Authentication and Security Layer e define um método de prover autenticação segura para protocolos orientados à conexão. De maneira geral essa ferramenta é utilizada pata autenticação e comunicação criptografada.
# apt-get install sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-ldap
2. Instalação do OpenLDAP
editarInstale os pacotes do OpenLDAP com o comando a seguir:
# apt-get install slapd ldap-utils
A partir de agora vamos começar a configuração do servidor, definindo os tipos de dados que serão armazenados e qual formato da base será utilizado, além da senha de acesso ao servidor. Utilizando qualquer editor de textos, iremos editar o arquivo de configuração do servidor OpenLDAP, que está localizado em /etc/ldap/sladp.conf A primeira coisa a ser feita é a definição da base em que os dados do OpenLDAP serão armazenados. Seguindo o que foi falado anteriormente vamos escolher o formato BDB, além de informar a senha do administrador da base.
#/etc/ldap/sldap.conf #Versão de protocolo utilizado para conexão pelos clientes allow bind_v2 # por default vem comentada... descomentar para ativá-la #Schemas e definições de classes de objeto #inclusão dos arquivos com as definições dos tipos de dados que serão utilizados include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/inertorgperson.schema #Arquivos de controle dos processos do servidor slapd #Arquivo que contém o número do processo do servidor pidfile /var/run/slapd/slapd.pid #Arquivo que contém os argumentos passados ao servidor em sua inicialização argsfile /var/run/slapd/slapd.args #Módulos #Local onde estão os módulos para os backends utilizados para armazenar os dados do LDAP modulepath /usr/lib/ldap #Carga do módulo para o backend que será utilizado moduleload back_bdb #Parâmetros específicos do tipo de base #Define parâmetros específicos para o backend BDB, caso ne cessário backend bdb #Base de dados #Definição do primeiro database a ser utilizado, sendo que armazenaremos todas as informações do #OpenLDAP em uma base do tipo Berkeley DB. database bdb #Estrutura do diretório e administrador #suffix parte da estrutura que define sob qual hierarquia serão armazenadas os dados do nosso #serviço de diretório suffix “dc=fajesu,dc=edu,dc=br” #rootdn quem será o administrador da base. O usuário root, do sistema operacional não é o #administrador de uma base LDAP. Você pode até definir que o seja, e pode manter a mesma senha, #mas normalmente escolhemos um usuário chamado Manager ou admin, o qual deve fazer parte da #hierarquia definida em suffix. rootdn “cn=admin,dc=fajesu,dc=edu,dc=br” #rootpw senha de acesso ao servodor LDAP. Se você colocar aqui uma senha em texto simples, esta #será a sua senha. Há sempre o problema de se manter senhas em arquivos de configuração, então #utilizaremos um utilitário chamado slappasswd para criar uma senha criptografada que deverá ser #colocada neste arquivo. rootpw senhasecreta #local de armazenamento dos dados #directory indica onde ficarão os arquivos binários com a base de nosso servidor. directory /var/lib/ldap
Bem o arquivo contém mais algumas informações, que por enquanto deverão ficar comentadas, para fazer isso basta colocar “#” na frente de todas as linhas do arquivo. Vamos agora substituir nossa senha “senhasecreta” que está em texto puro por uma hash criptografada, para isso execute:
# slappasswd New password: 123 Re-enter new password: 123 {SSHA}hLLfSLt73/YwNYEJU/T7PAcLd0A0B0je
Ao executar o comando acima, foi solicitado uma senha e digitamos 123 e redigitamos, a saída na linha seguinte e a senha criptografada com o algoritmo SSHA, padrão do OpenLDAP, essa saída esquisita é que será colocada no nosso aqruivo de configuração.
#/etc/ldap/sldap.conf #Versão de protocolo utilizado para conexão pelos clientes allow bind_v2 # por default vem comentada... descomentar para ativá-la #Schemas e definições de classes de objeto #inclusão dos arquivos com as definições dos tipos de dados que serão utilizados include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/inertorgperson.schema #Arquivos de controle dos processos do servidor slapd #Arquivo que contém o número do processo do servidor pidfile /var/run/slapd/slapd.pid #Arquivo que contém os argumentos passados ao servidor em sua inicialização argsfile /var/run/slapd/slapd.args
#Módulos #Local onde estão os módulos para os backends utilizados para armazenar os dados do LDAP modulepath /usr/lib/ldap #Carga do módulo para o backend que será utilizado moduleload back_bdb #Parâmetros específicos do tipo de base #Define parâmetros específicos para o backend BDB, caso necessário backend bdb #Base de dados #Definição do primeiro database a ser utilizado, sendo que armazenaremos todas as informações do #OpenLDAP em uma base do tipo Berkeley DB. database bdb #Estrutura do diretório e administrador #suffix parte da estrutura que define sob qual hierarquia serão armazenadas os dados do nosso #serviço de diretório suffix “dc=fajesu,dc=edu,dc=br” #rootdn quem será o administrador da base. O usuário root, do sistema operacional não é o #administrador de uma base LDAP. Você pode até definir que o seja, e pode manter a mesma senha, #mas normalmente escolhemos um usuário chamado Manager ou admin, o qual deve fazer parte da #hierarquia definida em suffix. rootdn “cn=admin,dc=fajesu,dc=edu,dc=br” #rootpw senha de acesso ao servodor LDAP. Se você colocar aqui uma senha em texto simples, esta #será a sua senha. Há sempre o problema de se manter senhas em arquivos de configuração, então #utilizaremos um utilitário chamado slappasswd para criar uma senha criptografada que deverá ser #colocada neste arquivo. rootpw {SSHA}hLLfSLt73/YwNYEJU/T7PAcLd0A0B0je #local de armazenamento dos dados #directory indica onde ficarão os arquivos binários com a base de nosso servidor. directory /var/lib/ldap
Durante a instalação dos pacotes do OpenLdap no Debian, o debconf já nos solicita algumas informações e pré-configura a base. Antes de carregarmos nossa configuração . É altamente RECOMENDÁVEL, parar o serviço OpenLDAP, limpar o diretório de dadso e reiniciar o serviço, para que a estrutura seja criada de acordo com nossas configurações. Para fazermos isso execute os seguintes comandos.
# /etc/init.d/slapd stop # cp /var/lib/ldap/DB_CONFIG . # rm /var/lib/ldap/* # /etc/init.d/slapd start
Verificando se o servidor foi reiniciado:
# netstat -lt | grep ldap
- tcp 0 0.0.0.0:389 OUÇA
- tcp6 0 0 :::389 OUÇA
# ps -A |grep slapd
- 3402 slapd
Considerando que a inicialização do OpenLDAP correu sem problemas, vamos realizar uma pesquisa em nosso servidor para verificar se a definição da base está correta e se ele reconheceu nossa estrutura:
# ldapsearch -x -LLL -b ' ' -s base '(objectclass=*)' namingContexts
a saída será :
- dn:
- namingContexts: dc=fajesu,dc=edu,dc=br
Nosso servidor está funcionando corretamente, falta agora dar uma utilidade para o servidor.
3. Criação de Arquivos LDIF
editarAo contrário de outras bases de dados o OpenLDAP não possui um gerenciador específico que possa ser acionado para manipularmos os dados diretamente em tabelas. A inserção de novos dados nesta base se dá por meio de um arquivo texto contendo as informações necessárias a serem incluídas. Este arquivo deve seguir um formato específico chamado LDIF (LDAP Data Interchange Format), no qual devem ser definidos todos os dados necessários ao cadastramento de cada tipo de registro. Isto é similar a definir o dicionário de dados de um SGDB. Para cadastramos o topo da árvore do Diretório, devemos utilizar o objectClass do tipo dcObject (Objetos Componentes de Domínio); para a criação de uma unidade organizacional, utilizaremos organizationalUnit; e para usuários de modo geral utilizaremos inetrOrgPerson.
Vamos criar nosso primeiro LDIF, informando os dados básicos de nosso domínio fajesu.edu.br.
Utilizando um editor de texto iremos criar o fajesu.ldif
# arquivo fajesu.ldif dn: dc=fajesu,dc=edu,dc=br objectClass: dcObject objectClass: organization o: Fajesu dc: FAJESU
Após criarmos o LDIF, devemos instruir o servidor LDAP a carregar essas informações e incluí-las na base, o comando a ser utilizado será o ldapadd
# ldapadd -x -D “cn=admin,dc=fajesu,dc=edu,dc=br” -W -f fajesu.ldif Enter LDAP Password: adding new entry “dc=fajesu,dc=edu,dc=br”
As principais opções e a sintaxe do comando ldapadd é a seguinte:
- -x - Autenticação simples
- -D - Usuário que está fazendo a operação
- -W - Solicita a senha para executar o comando
- -f - Indica o nome do arquivo a ser processado
Agora podemos verificar com o comando ldapsearch os primeiros registros em nossa base
# ldapsearch -x -b 'dc=fajesu,dc=edu,dc=br' '(objectClass=*)'
A consulta se tudo estiver correto foi realizada, porém o comando foi bastante extenso, a consulta poderia ter sido realizada com o seguinte comando:
#ldapsearch -x '(objctClass=*)'
A estrutura criada para o “topo da árvore” - DIT - já pode receber dados, porém, um dos pontos fortes do Diretório é a organização e hierarquia, é necessário criar algumas entradas, as chamadas unidades Organizacionais destinadas a gravar os dados de forma coerente. Vamos criar duas unidades: a primeira para agrupar a identificação dos usuários, e a segunda destinadas a grupos.
dc=fajesu,dc=edu,dc=br ou=Usuários ou=Grupos uid=Fernando
Vamos criar um arquivo chamado unidades.ldif utilizando seu editor de texto preferido, com o seguinte conteúdo:
dn: ou=Usuarios,dc=fajesu,dc=edu,dc=br ou: Usuarios objectClass: top objectClass: organizationalUnit dn: ou=Grupos,dc=fajesu,dc=edu,dc=br ou: Grupos objectClass: top objectClass: organizationalUnit
Agora vamos criar estas duas unidades organizacionais em nosso Diretório
# ldapadd -x -D 'cn=admin,dc=fajesu,dc=edu,dc=br' -W -f unidades.ldif Enter LDAP Password: adding new entry “ou=Usuarios,dc=fajesu,dc=edu,dc=br/' adding new entry “ou=Grupos,dc=fajesu,dc=edu,dc=br” Enseguida pesquise os dados cadastrados em nossa base cuja a inclusão foi bem sucedida #ldapsearch -x
Até o momento foram craidas três entradas no diretório, uma referente ao topo (DIT) representada por dc=fajesu,dc=edu,dc=br; a segunda referente à unidade organizacional ou=Usuarios; e a terceira referente à unidade organizacional ou=Grupos. Nesses três casos foram utilizadas definições como objectClass.
Seguindo a idéia de montar uma estrutura de diretório completa, nossa próxima tarefa será criar algumas entradas de usuários. O principal ponto é escolher uma classe que possa ser consultada por outros aplicativos, isto é, uma classe que contenha os atributos necessários que desejamos disponibilizar.
Iremos armazenar dados simples, um nome e sobrenome e estes dados serão criados sob a unidade organizacional Usuarios. usuario.ldif
dn: cn=Fernando,ou=Usuario,dc=fajesu,dc=edu,dc=br cn: Fernando sn: Lamellas objectClass: person
Crie um usuario.ldif com todos os componentes do grupo formado.... Agora vamso inserir os dados destes usuarios na base de dados
# ldapadd -x -D 'cn=admin,dc=fajesu,dc=edu,dc=br' -W -f usuario.ldif
Uma consulta simples para verificar os dados inseridos
#ldapsearch -x
3. Pesquisando a base
editarAcredito que já tenha percebido que, tão importante quanto definir a base os tipos de dados a serem cadastrados, é o porcesso de pesquisa de informações na base do diretório.
#ldapsearch -x
A sintaxe e os principais parâmetros que o comando aceita são:
ldasearch [opções] [filtros[atributos...]]
- -x - Autenticaçãosimples. O método padrão é autenticação via SASL
- -h - Host onde o serviço LDAP está rodando, caso omitido assume o valor do sldap.conf
- -b - Base de pesquisa
- -L - Formato de saída do LDIF. Se omitido o formato é estendido
- [filtro] - Condições da pesquisa
- [atributo] - Atributos que devem ser retornados na pesquisa
ldapsearch -x '(sn=Lamellas)' ldapsearch -x '(cn=c*)'
Pesquisas compostas também podem ser executadas
ldapsearch -x '(&(cn=F*)(sn=Lamellas))' ldapsearch -x -LLL '(cn=F*)' cn sn
As pesquisas realizadas nos mostram todos os resultados esperados, mas foram realizadas da melhor maneira? Vamos precisar de indices, para isso vamos alterar o arquivo de configuração sladp.conf no final do arquivo em /etc/ldap/slapd.conf
index objectClass eq index cn,sn eq
Como o servidor já está em funcionamento para que esses índices sejam gerados, é necessário parar o servidor e efetuar a indexação manualmente. ATENÇÃO: ao executar esse comando como root, seu servidor LDAP poderá não ser capaz de subir novamente. Para evitar o comportamento anormal, vamos alterar o usuário e o grupo dos arquivos no diretório de dados /var/lib/ldap como segue:
#/etc/init.d/slapd stop # slapindex -v ... # chown openldap: /var/lib/ldap/*
No debian, o usuário que executa o servidor é o openldap. Antes de rodar este comando, verifique qual o usuário foi cadastrado em sua distribuição. Uma vez finalizado este processo, reinicie o servidor OpenLDAP, efetue novamente a pesquisa.
#/etc/init.d/sldap start # ldapsearch -x '(&(|(cn=Fernando)(cn=Fulano)(sn=silva))'
Para a indexação de uma base LDAP, devemos verificar os tipos de pesquisas que serão realizadas e quais as possibilidades de filtros a serem aplicadas. Veja a seguir os possíveis tipos de indexação ou tipo de pesquisa a serem realizadas
- eq - Permite comparar o atributo no todo
- sub - Permite comparar o atributo por trecho
- pres - Permite comparar o atributo pela sua presença
- approx - Permite comparar o atributo de formas aproximada
- none - Não efetua qualquer comparação para o atributo
A criação de índices é uma característica que deve ser utilizada com parcimônia. Criar índices agiliza a pesquisa e faz a base ter melhor desempenho, contudo criar índices em demasia pode troná-lo lento.
4. Modificando registros
editarModificar dados em um diretório não é tarefa comum pois, como dito anteriormente, o serviço de diretório é voltado a um grande volume de acesso para leitura. Mudanças acontecem e podem ser realizadas com a ferramenta ldapmodify processando um arquivo LDIF que contém os dados a serem alterados
modifica.ldif
dn: cn=Fernando,ou=Usuarios,dc=fajesu,dc=edu,dc=br changetype: modify add: description description: Professor
Esta estrutura é bem parecida com a estrutura vista anteriormente para os arquivos de criação de dados, mas o conteúdo apresenta algumas diretivas adicionais.
- Changetype – indica o tipo de ação a ser realizada que é modificar um registro existente, sendo as ações possíveis:
- add – um atributo será acrescentado à entrada
- delete – remove o valor daquele atributo
- replace - substitui o valor do atributo peloo valor indicado
Vamos alterar nossa base de dados mais uma vez com o seguinte comando:
#ldapmodify -x -D “cn=Admin,dc=fajesu,dc=edu,dc=br” -W -f modifica.ldif ldapsearch -x -LLL cn=Fernando
Vamos modificar a base criada pelo grupo, para verificar o comando ldapmodify em funcionamento com varias mnudanças ao mesmo tempo em um ou vários usuários:
mudanca.ldif
dn: cn=fulano,ou=Usuarios,dc=fajesu,dc=edu,dc=br. changetype: modify add: telephoneNumber telephoneNumber: telephoneNumber: add: description description: Aluno add: objectClass objectClass: inetOrgPerson add: mail mail: fulano@fajesu.edu.br add: giveName giviName: fulano ... add: userPassword userPassword: {SSHA}
5. Utilizando o comando ldapdelete
editarCaso seja necessário remover um usuário de sua base, isso pode ser feito diretamente pela linha de comando sem a necessidade de criação de uma arquivo ldif.
# ldapdelete –x –D “cn=Admin,dc=fajesu,dc=edu,dc=br” –W –v / “cn=Fernando,ou=Usuarios,dc=fajesu,dc=edu,dc=br" Enter LDAP Password: "Digite a senha de Admin"
Este comando remove uma entrada da base. Caso a intenção seja remover um ramo da estrutura, pode ser utilizado o parâmetro –r, sendo que este poderia remover toda uma OU e as entradas subseqüentes.
Para remover a unidade Organizacional Usuários e todas as entradas subseqüentes, execute o seguinte comando:
# ldapdelete –x –D “cn=Admin,dc=fajesu,dc=edu,dc=br” -W –r –v / ou=Usuarios,dc=fajesu,dc=edu,dc=br” Enter LDAP Password: "Digite a senha de Admin"
Para reconstruir sua base organizacional e os usuários construa o arquivo rebuild.ldif, com o conteúdo semelhante a este:
# mcedit rebuild.ldif
Digite:
dn: ou=usuarios,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: organizationalUnit ou: Usuarios
dn: uid=Fernando,ou=usuarios,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: inetOrgPerson uid: fernando cn: Fernando Lamellas sn: Lamellas mail: pflamellas@gmail.com userPassword: 123456 telephoneNumber: 34651237 mobile: 99884818 description: Professor
dn: uid=Gleison,ou=usuarios,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: inetOrgPerson uid: gleison cn: Gleison Soares sn: Soares mail: gleison@gmail.com userPassword: 123456 telephoneNumber: xxxx-xxxx mobile: xxxx-xxxx description: Aluno
dn: uid=Ciclano, ou=usuários,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: inetOrgPerson uid: ciclano cn: Ciclano de tal sn: Tal mail: ciclano.tal@gmail.com userPassword: 123456 telephoneNumber: xxxx-xxxx mobile: xxxx-xxxx description: Aluno
Após refazer sua base de dados em outra máquina, no windows, inicie o MS Outlook Express, acesse o menu Ferramentas, Contas e clique na aba Serviço de Diretório. Clique no botão Adcionar e escolha a opção serviço de diretório. A próxima tela solicita a identificação do servidor; entre com OpenLDAP.
Na tela seguinte marque a opção sim para que o Outlook consulte as contas de email no servidor OpenLDAP automaticamentee, em seguida, finalize o cadastramento. Ao voltar a tela anterior selecione o OpenLDAP e clique no botão propriedades para personalizar alguns itens.
Na aba geral você deve identificar o seu servidor inserindo o endereço IP, após isso clique na aba Avaçado e insira a base de pesquisa do Diretório. Finalize a configuração clicando no botão OK. Na tela principal do Outlook, clique no botão Endereços e, na tela seguinte, clique no botão Localizar Pessoas. Digite um nome cadastrado em nossa base de exemplo e clique no botão Localizar agora para verificar o resultado.
6. Ferramenta para gerenciar o LDAP
editarExistem algumas ferramentas para gerenciar graficamente o OpenLDAP, mas utilizaremos o phpLDAPadmin, por ser de acesso via web e possui como ponto forte a criação de uma série de objetos por meio de opções predefinidas como, por exemplo, contas de usuários padrão POSIX para estações Linux ou padrão SAMBA para autenticação de uma rede EIndows.
Vamos instalar o phpLDAPadmin usando o aptget junto com o servidor apache2 e o php, para isso execute o seguinte comando:
# aptget install phpldapadmin apache2 php5 libapache2modphp5
Abra o navegador e acesse a página http://ipdoservidorldap/phpldapadmin.
Você deverá fazer logon utilizando, neste momento, o usuário Admin com seu dn completo (cn=Admin,dc=fajesu,dc=edu,dc=br)
7. Autenticação de um sistema linux na base LDAP
editarFalamos até agora do cadastro de vários dados na base LDAP, de domínios, de unidades organizacionais, de grupos, de usuários com senhas, de lista de endereços e vimos, também, pela interface de gerenciamento ser possível o cadastramento de contas de usuários em padrão Unix e Samba.
Vamos tornar nosso LDAP um substituto, com muitas vantagens, para os arquivos passwd e shadow, cadastrando, a partir de agora, nossos usuários em nossa base e fazendo com que o Linux pesquise tais usuários.
Todas as mudanças necessárias são relativas ao método de autenticação utilizado pelo Debian, pelo PAM (Pluggable Authentication Modules) e por, praticamente, todas as distribuições.
Utilizar PAM para autenticação significa dizer que teremos um método flexível de checagem de vários itens de segurança quando um usuário efetuar logon. PAM, de forma mais ampla, é um sistema que trabalha com bibliotecas externas que efetuam a autenticação e autorização de usuários em distribuições Linux.
Sua característica modular permite definir métodos de autenticação e criptografia diferente para diversos serviços disponíveis na empresa, a fim de garantir o acesso do usuário ao sistema.
Módulos PAM foram divididos em quatro categorias distintas, definindo os tipos disponíveis.
Auth – Faz a validação do usuário, verificando sua identidade por vários meios possíveis: checando usuário e senha – método mais simples e mais usual – utilizando verificação biométrica como impressão digital, timbre de voz ou imagem de retina. Pode ainda limitar o número de usuários ou restringir o acesso do root em algum serviço.
Account – verifica se o usuário pode utilizar o serviço no qual está tentando autenticar Passwd Entra em funcionamento durante o processo de gtroca de senhas dos usuários. Módulos desse tipo incluem a cracklib que checa se a senha do usuário é forte
Session Cria o ambiente do usuário, habilitando dispositivos de hardware aos quais o usuário tenha direito de acesso, além de criar recursos como diretório pessoal. Em fim qualquer coisa que seja necessário fazer para que o usuário possa se conectar
8. Dados necessários para a autenticação de usuários
editarPara armazenar usuários em uma base LDAP, é necessário definir quais dados deverão ser criados na base para uso do sistema operacional.
Para o cadstramento de usuários no Linux necessitamos criar uma entrada no /etc/passwd, /etc/shadows, /etc/group e /etc/gshadow; então, devemos acreditar que será necessário suprir essas informações em nossa base.
Vamos criar o arquivo para as contas de usuários ou modificalos... a essa altura você tem condições de modificálo sozinho....mas vou ajudar com um arquivo exemplo de inclusão...
Fernando.ldif
dn: uid=Fernando, ou=Usuários,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: Fernando sn: lamellas uid: fernando uidNumber:1001 gidNumber: 1001 homeDirectory: /home/fernando loginShell: /bin/bash gecos: Fernando Lamellas userPassword: 123456 shadowLastChange: 12862 shadowMin: 0 sahdowMax: 99999 shadowWarning: 7
Estes dados podem ser inseridos na base:
Ldapadd –x –D “cn=Admin,dc=fajesu,dc=edu,dc=br” –W –f fernando.ldif
A criação de um usuário normalmente envolve ainda a criação de um grupo POSIX pessoal, com o nome do próprio usuário e, normalmente, com gid igual ao do usuário Vamos criar o LDIF para a inclusão do grupo fernando. Fernandogrupo.ldif
dn: cn=fernando, ou=Grupos,dc=fajesu,dc=edu,dc=br objectClass: posixGroup cn: fernando gidNumber: 1001 userPassword: {CRYPT} x memberUid: fernando
para adicionar execute o comando:
ldapadd –x –D “cn=Admin,dc=fajesu,dc=edu,dc=br”W –f Fernandogrupo.ldif
só como lembrança esses dois arquivos podem ser fundidos em um só como já vimos anteriormente.
9. Bibliotecas necessárias para a autenticação
editarA instalação das bibliotecas PAM que permitem o uso do LDAP pode ser feita via aptget:
#aptget install libpam-ldap libnss-ldap nscd
Configuração do PAM Edite o arquivo /etc/libnssldap. conf colocando os seguintes valores:
host ipdoservidorldap base dc=fajesu,dc=edu,dc=br ldap_version 3 rootbinddn cn=Admin,dc=fajesu,dc=edu,dc=br
Arquivo /etc/libnssldap.secret
A senha do root.... no caso 123
Arquivo /etc/nsswitch.conf:
Passwd: files ldap Group: files ldap Shadow: files ldap Hosts: files dns Networks: files Protocols: db files Services: db files Ethers: db files Rpc: db files
Netgroup: ldap
Arquivo /etc/pam_ldap.conf
host ipdoservidorldap base dc=fajesu,dc=edu,dc=br ldap_version 3 rootbinddn cn=Admin,dc=fajesu,dc=edu,dc=br pam_password md5
Arquivo /etc/pam_ldap.secret
123
Os arquivos libnssldap.secret e pam_ldap.secret devem pertencer ao usuário e grupo do root e ter permissão 0400 para assegurar que a senha do usuário Amin não seja visível a todos
Chmod 0400 /etc/*ldap.secret
Ao instalarmos as bibliotecas , o debconf automaticamente configura tais arquivos, contudo é recomendável checar se estão corretos. Devemos agora remover ou renomear o arquivo /etc/ldap/ldasp.conf e criar um link simbólico de /etc/libnssldap. conf para ele, com o seguinte comando:
cd /etc/ldap mv ldap.conf ldap.conf.old ln –s ../libnssldap.conf ldap.conf
Como já criamos um usuário com os procedimentos anteriores, vamos testar se já conseguimos consultar a base LDAP em busca de usuários e grupos:
getent passwd getent group
O último passo é configurar o PAM para que ele, durante o processo de autenticação de usuários, consulte o servidor LDAP. Isto é feito no diretório /etc/pam.d , editando os arquivos a seguir:
Arquivo /etc/pam.d/commonaccount
account sufficient pam_ldap.so account required pam_ldap.so try_first_pass
Arquivo /etc/pam.d/commonauth
auth required pam_nologin.so auth required pam_ev.so auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure try_first_pass
Arquivo /etc/pam.d/commonsession session required pam_mkhomedir.so skell=/etc/skel umask=0022 silent session sufficient pam_unix.so
Arquivo /etc/pam.d/commonpassword
password sufficient pam_ldap.so password required pam_unix.so nullock obscure min=4 max=8 md5 try_first_pass
Após a configuração desses arquivos devemos reiniciar o serviço nscd. Agora chegou o momento de testarmos o processo de autenticação. Abra um terminal e efetue login com o usuário que foi criado. Se tudo estiver correto, além de permitir acesso ao equipamento, será criado automaticamente um diretório pessoal para este usuário, no local indicado pelo atributo homeDirectory (pam_mkhomedir.so). Para deixar tudo no jeito...vamos alterar o arquivo de configuração do servidor, inclua o seguinte índice:
index uid,uidNumber,gidNumber,memberUid,loginShell eq
E ainda para permitir a troca de senha do usuário:
access to attrs=shadowLastChange by self write by * none
10. SAMBA
editarO projeto SAMBA disponibiliza serviço de compartilhamento de arquivos e serviços de impressão para clientes Windows. O servidor disponibiliza também várias funcionalidades para clientes microsoft, ferramenta de migração e administração do servidor, bem como interoperabilidade.
Para instalar o servidor execute a seqüência de comandos:
# apt-get install samba smbclient sambadoc smbfs ntp
Agora vamos acertar a configuração do servidor smaba para funcionar com o LDAP Edite o arquivo de configuração localizado em /etc/samba/smb.conf e na seção global adicione os seguintes parâmetros: [global]
workgroup = FAJESU server string = Servidor Samba Controlador de Domínio netbios name = PDC
Opções de segurança e autenticação
security = user encrypt passwords = yes passdb backend = ldapsam:ldap://ipdoservidorldap
Base de autentiocação do LDAP
ldap admin dn = cn=Admin,dc=fajesu,dc=edu,dc=br ldap ssl = of ldap delete dn = no ldap user suffix = ou=Usuários ldap group suffix = ou=Grupos ldap machine suffix = ou =Computers ldap suffix = dc=fajesu,dc=edu,dc=br
Permite que usuários membros do grupo “Domain Admins” insiram estações no domínio samba
enable privileges = yes
Temos que ajustar nosso servidor LDAP para isso copie o arquivo samba.schema da documentação do samba para a pasta /etc/ldap/schema e depois adicione a linha
cd /etc/ldap/schema cp /usr/share/doc/sambadoc/ examples/LDAP/samba.schema ./ include /etc/ldap/schema/samba.schema
no arquivo de configuração sldap.conf, adicione também os seguintes índices
index sambaID eq index sambaPrimaryGroupSID eq index SambaDomainName eq
e ainda na diretiva access
access to attrs=userPassword,sambaLMPassword,sambaNTPassword by anonymos auth by self write by * none
feito isso pare o servidor LDAP, reindex o servidor em modo offline
/etc/init.d/sldap stop slapindex –v chown openldap: /var/lib/ldap/* /etc/init..d/slapd start
Até agora nosso servidor SAMBA está parado. Antes de iniciarmos, é necessário armazenar a senha do Admin em um arquivo de controle do Samba – o secrets.tdb. Isto é feito com o seguinte comando:
Smbpasswd –w senhadoAdmin
Em seguida, o código SID de identificação do domínio também deve ser cadastrado. Desta vez, porém, os dados serão incluídos na base LDAP.
net getlocalsid FAJESU
Ale de informar em tela o SID (SecurityIdentification) do domínio Samba, esse comando insere este valor na base LDAP em um registro do tipo sambaDomaine
ldapsearch –x LLL –b 'dc=fajesu,dc=edu,dc=br'
Por último, antes de iniciarmos nosso servidor samba, devemos criar as "ou" referenciadas no arquivo smb.conf, no nosso caso criaremos somente computers Computers.ldif
dn: ou=Computers,dc=fajesu,dc=edu,dc=br ou: Computers objectClass: top objectClass: organizationalUnit ldapadd –x –D "cn=Admin,dc=fajesu,dc=edu,dc=br" –W –f computers.ldif
Agora iremos iniciar nosso servidor samba:
/etc/init.d/samba start
Como ainda não configuramos as ferramentas smbldaptools a criação de usuários ainda será diretamente no LDIF Usuário.ldif
Dn: uid=fernando,ou=Usuários,dc=fajesu,dc=edu,dc=br objectClass: top objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount objectClass: sambaSamAccount cn: Fernando Lamellas givenName: Fernando sn: Lamellas uid: pflamellas uidNumber: 1000 gidNumber: 513 homeDirectory: /home/pflamellas loginShell: /bin/bash gecos: System User sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 214483647 sambaPwdCanChange: 0 displayName: System User sambaLogonScript: logon.cmd sambaProfilePath: sambaHomePath: sambaHomeDrive: Z: sambaLMPassword: 123456 sambaAcctFlags: [U] sambaNTPassword: 123456 sambaPwdLastSet: 1122827572 sambaPwdMustChange: 1130603572 userPassword: 123456
A senha criada está em texto puro para codificala basta executar o seguinte comando: smbpasswd pflamellas
Inserir usuários dessa maneira é seguro, porém extremamente desgastante para automatizar esta tarefa existe a ferramenta smbldaptools. Para instalala execute o seguinte comando:
#aptget install smbldaptools
Iremos agora configurar os arquivos para correta utilização
cd /etc/smbldaptools cp /usr/share/doc/smvldaptools/ examples/smbldap_bind.conf . cp /usr/share/doc/smbldaptools/ examples/smbldap.conf.gz . gunzip smbldap.conf.gz
editando o arquivo smbldap_bind.conf e adicionar o seguinte
slaveDN=”cn=Admin,dc=fajesu,dc=edu,dc=br” slavePw=”123” masterDN=”cn=Admin,dc=fajesu,dc=edu,dc=br” masterPw=”123”
devemos ainda acertar o arquivo smbldap.conf com as informações de nossa rede
SID=” obtido anteriormente” sambaDomain=”FAJESU”
Iinformações LDAP
slaveLDAP=“ïpdoservidorLDAP” slavePort=”389” masterLDAP=”ipdoservidorLDAP” masterPort=”389”
Devemos ainda acertar o arquivo de configuração do samba em /etc/samba/smb.conf logo após a diretiva global
ldap suffix = dc=fajesu,dc=edu,dc=br
Permite a criação automática de máquinas ao efetuar join no domínio
add user script = /usr/sbin/smbldapuseradd -m “%u” delete user script = /usr/sbin/smbldapuserdel “%u” add machine script = /usr/sbin/smbldapuseradd -t 0 -w “%u” add group script = /usr/sbin/smbldapgroupadd -p “%g” add user to group script = /usr/sbin/smbldapgroupmod -m “%u” “%g” delete user from group script = /usr/sbin/smbldapgroupmod -x “%u” “%g” set primary group script = /usr/sbin/smbldapusermod -g '%g' '%u'