Instalando e configurando OpenLDAP no CentOS 6

1) Conceitos:

  • slapd: este é daemon isolado do LDAP. Ele escuta por conexões LDAP na porta 389 (636 para SSL)

2) instalação

# yum install -y openldap-servers openldap-clients pam_ldap nss-pam-ldapd

3) Criar uma senha para o LDAP

# slappasswd

Anote essa senha em algum arquivo de texto. A senha é algo como {SSHA}LwxaxndI3HZUj29FYy2LFt/e3AlnUWzz.

Você precisará dela posteriormente.

4) Crie o arquivo  “/etc/openldap/slapd.conf”

# cd /etc/openldap
# nano slapd.conf

5) Copiar e colar o seguinte texto. Atente-se aos campos em vermelho, fazendo as devidas alterações. Lembrando de alterar a senha no campo “rootpw” para a senha gerada anteriormente

database        bdb
suffix          "dc=empresa,dc=edu,dc=br" 
rootdn          "cn=Manager,dc=empresa,dc=edu,dc=br" 
# Senhas em texto plano, especialmente para o rootdn, devem
# ser evitados. Veja slappasswd (8) e slapd.conf (5) para mais detalhes.
# Uso de autenticação forte incentivado.
rootpw          digite_a_senha_gerada_aqui 
directory       /var/lib/ldap

6) Testar as configurações

# slaptest -u

7) Editar o arquivo “/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

# nano /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif

Altere

olcSuffix: dc=my-domain,dc=com

para:

olcSuffix: dc=empresa,dc=edu,dc=br

Altere também:

olcRootDN: cn=Manager,dc=my-domain,dc=com

para:

olcRootDN: cn=Manager,dc=empresa,dc=edu,dc=br

Adicionar neste mesmo arquivo as linhas de comando a seguir:

olcRootPW: digite_a_senha_gerada_aqui 
olcTLSCertificateFile: /etc/pki/tls/certs/slapdcert.pem
olcTLSCertificateKeyFile: /etc/pki/tls/certs/slapdkey.pem

8) Editar o arquivo “/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

# nano /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif

substitua:

olcAccess: {0}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa
l,cn=auth" read  by dn.base="cn=manager,dc=my-domain,dc=com" read  by * none

por:

olcAccess: {0}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa
l,cn=auth" read  by dn.base="cn=Manager,dc=empresa,dc=edu,dc=br" read  by * none

9) Atualize as bases de dados

# updatedb

10) Atualize as permissões do diretório /var/lib/ldap/

# chown -R ldap:ldap /var/lib/ldap/

11) Crie o arquivo /var/lib/ldap/DB_CONFIG

# nano /var/lib/ldap/DB_CONFIG

E nele copie e cole o texto abaixo:

# $OpenLDAP: pkg/ldap/servers/slapd/DB_CONFIG,v 1.3.2.3 2007/08/31 23:13:57 quanah Exp $
# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases.
#
# See Sleepycat Berkeley DB documentation
#   <http://www.sleepycat.com/docs/ref/env/db_config.html>
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
#    <http://www.openldap.org/faq/index.cgi?file=2>
# in particular:
#   <http://www.openldap.org/faq/index.cgi?file=1075>

# Note: most DB_CONFIG settings will take effect only upon rebuilding
# the DB environment.

# one 0.25 GB cache
set_cachesize 0 268435456 1

# Data Directory
#set_data_dir db

# Transaction Log settings
set_lg_regionmax 262144
set_lg_bsize 2097152
#set_lg_dir logs

# Note: special DB_CONFIG flags are no longer needed for "quick"
# slapadd(8) or slapindex(8) access (see their -q option).

12) habilitar TLS encryption

# nano /etc/sysconfig/ldap

Substitua
SLAPD_LDAPS=no

por

SLAPD_LDAPS=yes

13) Gerar os certificados de autenticação

# openssl req -new -x509 -nodes -out /etc/pki/tls/certs/slapdcert.pem
    -keyout /etc/pki/tls/certs/slapdkey.pem -days 365

A seguir lhe serão feitas algumas perguntas. Preencha os campos da seguinte forma:

Country Name (2 letter code) [XX]:br State or Province Name (full name) []:ce
Locality Name (eg, city) [Default City]:fortaleza
Organization Name (eg, company) [Default Company Ltd]:nome de sua empresa 
Organizational Unit Name (eg, section) []:diretoria de ti 
Common Name (eg, your name or your server's hostname) []:ti
Email Address []:seuemail@email.com.br

14) Mude as permissões do certificado

# chown -Rf root:ldap /etc/pki/tls/certs/$cert.pem
# chmod -Rf 750 /etc/pki/tls/certs/$key.pem

15) testar as configurações

# slaptest -u

Deverá aparecer a mensagem “config file testing succeeded”

16) Iniciar o slapd

# service slapd start

17) Verifique o status do servidor LDAP com o comando:

# /etc/init.d/slapd status

18) Criar o arquivo “base.ldif” dentro de “/etc/openldap”

# nano /etc/openldap/base.ldif

19) Copie e cole o seguinte texto:

dn: dc=empresa,dc=edu,dc=br
dc: empresa
objectClass: top
objectClass: domain

dn: ou=People,dc=empresa,dc=edu,dc=br 
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=empresa,dc=edu,dc=br 
ou: Group
objectClass: top
objectClass: organizationalUnit

20) Ao finalizar digite:

# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f base.ldif

O comando pedirá a senha do LDAP para inserir os dados. Digite-a. A saída do comando deve ser:

adding new entry "dc=empresa,dc=edu,dc=br"
adding new entry "ou=People,dc=empresa,dc=edu,dc=br"
adding new entry "ou=Group,dc=empresa,dc=edu,dc=br"

21) digite o comando a seguir para ver como ficou!

# ldapsearch -x -b "dc=empresa,dc=edu,dc=br"

22) Criar o arquivo “groups.ldif” dentro de “/etc/openldap”

# nano /etc/openldap/groups.ldif

Insira o seguinte texto:

# criar o grupo group1 na Group

dn: cn=group1,ou=Group,dc=empresa,dc=edu,dc=br 
objectClass: posixGroup
objectClass: top
cn: group1
description: generic group 1
userPassword: digite_a_senha_gerada_aqui
gidNumber: 1001

# criar o grupo group2 na Group

dn: cn=group2,ou=Group,dc=empresa,dc=edu,dc=br 
objectClass: posixGroup
objectClass: top
cn: group2
description: generic group 2
userPassword: digite_a_senha_gerada_aqui
gidNumber: 4

23) Digite o comando:

# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f groups.ldif

A saída do comando deve ser:

adding new entry "cn=ldapusers,ou=Group,dc=empresa,dc=edu,dc=br"
adding new entry "cn=ldapadm,ou=Group,dc=empresa,dc=edu,dc=br"

Obs: para excluir basta digitar:

#  ldapdelete -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br"
       "cn=group1,ou=Group,dc=empresa,dc=edu,dc=br"
#  ldapdelete -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br"
       "cn=group2,ou=Group,dc=empresa,dc=edu,dc=br"

24) Criar o arquivo “newpeople.ldif” dentro de “/etc/openldap”

# nano /etc/openldap/newpeople.ldif

Insira o seguinte texto:

dn: uid=group1,ou=Group,dc=empresa,dc=edu,dc=br
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ti
uid: ti
uidNumber: 3000
gidNumber: 1001
homeDirectory: /home/ti
loginShell: /bin/bash
gecos: Ti,Analista de Sistemas,Diretoria de TI,85-12345678
userPassword: digite_a_senha_gerada_aqui
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

25) digite o comando:

# ldapadd -x -W -D "cn=Manager,dc=empresa,dc=edu,dc=br" -f newpeople.ldif

A saída deve ser:

adding new entry "uid=blah,ou=People,dc=empresa,dc=edu,dc=br"

26) Buscas no ldap

# ldapsearch -x -b "dc=empresa,dc=edu,dc=br"

27) instalando EPEL e PHPLDAPADMIN

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
# yum install -y php php-cli php-commom php-ldap
# yum --enablerepo=epel -y install phpldapadmin
# /etc/rc.d/init.d/httpd restart

28) Acesse o navegador e digite:

http://localhost/ldapadmin/