você está aqui: Home  → Arquivo de Mensagens

Implantando autenticação centralizada e segura usando Openldap

Colaboração: Alexandro Silva

Data de Publicação: 01 de agosto de 2010

Uma autenticação centralizada faz parte do processo de adequação do ambiente as boas práticas de segurança. Esta solução provê recursos que atendem aos principios de autenticidade e não-repúdio. Usando a criptografia juntamente com esta solução poderemos previnir ataques de hijacking, spoofing e man in the middle.

O LDAP (Lightweight Directory Access Protocol) é um protocolo cliente-servidor, utilizado para acessar um serviço de Diretório. Ele foi inicialmente usado como uma interface para o X.500, mas também pode ser usado com autonomia e com outros tipos de servidores de Diretório. Atualmente vem se tornando um padrão, diversos programas já têm suporte a LDAP. Livros de endereços, autenticação, armazenamento de certificados digitais (S/MIME) e de chaves públicas (PGP), são alguns dos exemplos onde o LDAP já é amplamente utilizado.

O Openldap é a solução livre para a implementação do LDAP. Diferentemente das soluções proprietárias ( e.g. Active Directory (tm) ), ele implementa de forma fidedigna as especificações das RFCs deste protocolo.

Este artigo têm como principal objetivo ensinar como implantar uma solução livre e gratuita de autenticação com segurança. Não abordarei conceitos sobre o funcionamento do protocolo, para isso recomendo a leitura das referências.

Inicialmente irei configurar um servidor LDAP e um cliente autenticando nesta base.

Configurando o LDAP server

Instale os pacotes necessários

  # aptitude install slapd ldap-utils migrationtools
  # dpkg-reconfigure slapd
  DNS domain name: acme.local 
  Organization name: acme
  Database backend to set:   HDB
  Do you want the database to be removed when slapd is purged? No
  Move old database? Yes
  Allow LDAPv2 protocol? Yes

Adicionando Schemas

Acesso o diretório /etc/ldap/schemas

  cd /etc/ldap/schemas

Faça o download dos schemas. Eles serão importantes na implementação do kerberos e na autenticação dos usuários do Postfix

  wget http://www.bayour.com/openldap/schemas/krb5-kdc.schema
  wget http://trac.kyapanel.com/export/360/trunk/ldap/schema/qmailuser.schema

Edite o arquivo /etc/ldap/slapd adicionando os novos schemas e novos indices no index

  # vim /etc/ldap/slapd.conf
  
  
  include         /etc/ldap/schema/krb5-kdc.schema
  include         /etc/ldap/schema/qmailuser.schema
  
  index objectClass,ou,cn,sn,uid,uidNumber,mail,mailAlternateAddress,mailForwardingAddress,memberUid eq

Reinicie o slapd

  invoke-rc.d slapd restart

Testando

  ldapsearch -x -b "dc=acme,dc=local"
  # extended LDIF
  #
  # LDAPv3
  # base <dc=acme,dc=local> with scope subtree
  # filter: (objectclass=*)
  # requesting: ALL
  #
  
  # acme.local
  dn: dc=acme,dc=local
  objectClass: top
  objectClass: dcObject
  objectClass: organization
  o: acme
  dc: acme
  
  # admin, acme.local
  dn: cn=admin,dc=acme,dc=local
  objectClass: simpleSecurityObject
  objectClass: organizationalRole
  cn: admin
  description: LDAP administrator
  
  # search result
  search: 2
  result: 0 Success
  
  # numResponses: 3
  # numEntries: 2

Migrando os usuários e grupos locais com o migration tools

O migrationtools é um conjunto de scripts responsáveis por migrar as informações locais como hosts, serviços, usuários, grupos e etc para a infraestrutura do LDAP.

Edite as seguintes linhas do arquivo /usr/share/migrationtools

  vim migrate_common.ph
  $DEFAULT_MAIL_DOMAIN = "acme.local";
  $DEFAULT_BASE = "dc=acme,dc=local";
  $EXTENDED_SCHEMA = 1;

Importe a base

  ./migrate_base.pl > base.ldif

O arquivo base.ldif contém a infraestrutura básica de OUs ( Unidades Organizacionais ). Como o objetivo de nosso LDAP é autenticação então edite o arquivo base.ldif deixando somente as seguintes informações:

  dn: dc=acme,dc=local
  dc: acme
  objectClass: top
  objectClass: domain
  objectClass: domainRelatedObject
  associatedDomain: acme.local
  
  dn: ou=People,dc=acme,dc=local
  ou: People
  objectClass: top
  objectClass: organizationalUnit
  objectClass: domainRelatedObject
  associatedDomain: acme.local
  
  dn: ou=Group,dc=acme,dc=local
  ou: Group
  objectClass: top
  objectClass: organizationalUnit
  objectClass: domainRelatedObject
  associatedDomain: acme.local

Migre as contas e as senhas dos usuários

  ETC_SHADOW=/etc/shadow ./migrate_passwd.pl /etc/passwd > passwd.ldif

Migre os grupos

  ./migrate_group.pl /etc/group > group.ldif

Atualize o BD do LDAP

  ldapadd -h localhost -x -W -D "cn=admin,dc=acme,dc=local" -c -f base.ldif
  ldapadd -h localhost -x -W -D "cn=admin,dc=acme,dc=local" -c -f passwd.ldif
  ldapadd -h localhost -x -W -D "cn=admin,dc=acme,dc=local" -c -f group.ldif

Testando

  ldapsearch -LL -H ldap://localhost -b"dc=acme,dc=local" -x "(uid=alexos)"
  
  dn: uid=alexos,ou=People,dc=acme,dc=local
  uid: alexos
  cn: alexos
  sn: alexos
  mail: alexos@acme.local
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  objectClass: posixAccount
  objectClass: top
  objectClass: krb5Principal
  objectClass: shadowAccount
  shadowMax: 99999
  shadowWarning: 7
  krb5PrincipalName: alexos@ACME.LOCAL
  loginShell: /bin/bash
  uidNumber: 1000
  gidNumber: 1000
  homeDirectory: /home/alexos
  gecos: alexos,,,

Referências

Fonte: http://blog.alexos.com.br/?p=1901&lang=en



Veja a relação completa dos artigos de Alexandro Silva

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script