terça-feira, 11 de dezembro de 2012

Instalando e configurando o OpenLDAP

Tutorial aplicado em servidor CentOS 6.3 x64, para outras distribuições as configurações de apache e instalação de pacotes sofrerão mudanças.
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
# vi slapd.conf

5) No arquivo slapd.conf, 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“
# vi /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“
# vi /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

OBS: Para utilizar esse comando instale o mlocate, yum install mlocate -y

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
# vi /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
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
# in particular:

# 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
# vi /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
# /etc/init.d/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”
# vi /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”
# vi /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”
# vi /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
# yum install -y php php-cli php-commom php-ldap
# yum --enablerepo=epel -y install phpldapadmin
# /etc/init.d/httpd restart

28) Configurar ldapadmin:

No arquivo /etc/httpd/conf.d/phpldapadmin.conf, adicione o range de ip ou lista de ip's com permissão de acesso a pagina de administração do ldap.

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 10.0.0.0/24   # IP address you allow
  Allow from ::1
</Directory>

29) Liberar as portas 389 para o serviço slapd e 80 para o apache no iptables do servidor:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

30) Acesse o navegador e digite:

Nenhum comentário: