Pesquisa de site

Como instalar o servidor OpenLDAP para autenticação centralizada


O Lightweight Directory Access Protocol (LDAP em resumo) é um conjunto de protocolos padrão do setor, leve e amplamente utilizado para acessar serviços de diretório. Um serviço de diretório é uma infraestrutura de informações compartilhada para acessar, gerenciar, organizar e atualizar itens do cotidiano e recursos de rede, como usuários, grupos, dispositivos, endereços de e-mail, números de telefone, volumes e muitos outros objetos.

O modelo de informação LDAP é baseado em entradas. Uma entrada em um diretório LDAP representa uma única unidade ou informação e é identificada exclusivamente pelo que é chamado de Nome Distinto (DN). Cada um dos atributos da entrada possui um tipo e um ou mais valores.

Um atributo é uma informação associada a uma entrada. Os tipos são normalmente strings mnemônicas, como “cn” para nome comum ou “mail” para endereço de e-mail. Cada atributo recebe um ou mais valores que consistem em uma lista separada por espaços.

A seguir está uma ilustração de como as informações são organizadas no diretório LDAP.

Neste artigo, mostraremos como instalar e configurar o servidor OpenLDAP para autenticação centralizada no Ubuntu 16.04/18.04 e no CentOS 7.

Passo 1: Instalando o Servidor LDAP

1. Primeiro comece instalando o OpenLDAP, uma implementação de código aberto do LDAP e alguns utilitários de gerenciamento LDAP tradicionais usando os comandos a seguir.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

No Ubuntu, durante a instalação do pacote, você será solicitado a inserir a senha para a entrada admin em seu diretório LDAP, definir uma senha segura e confirmá-la.

Quando a instalação for concluída, você poderá iniciar o serviço conforme explicado a seguir.

2. No CentOS 7, execute os seguintes comandos para iniciar o daemon do servidor openldap, habilite-o para iniciar automaticamente no momento da inicialização e verifique se está instalado e funcionando (no Ubuntu o serviço deve ser iniciado automaticamente no systemd, você pode simplesmente verificar seu status):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. Em seguida, permita solicitações ao daemon do servidor LDAP através do firewall, conforme mostrado.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

Passo 2: Configurando o Servidor LDAP

Nota: Não é recomendado editar manualmente a configuração LDAP, você precisa adicionar as configurações em um arquivo e usar o ldapadd ou < comandoldapmodify para carregá-los no diretório LDAP conforme mostrado abaixo.

4. Agora crie um usuário administrativo OpenLDAP e atribua uma senha para esse usuário. No comando abaixo é criado um valor hash para a senha fornecida, anote-o, você o utilizará no arquivo de configuração LDAP.

slappasswd

5. Em seguida, crie um arquivo LDIF (ldaprootpasswd.ldif) que será usado para adicionar uma entrada ao diretório LDAP.

sudo vim ldaprootpasswd.ldif

Adicione o seguinte conteúdo nele:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

explicando os pares atributo-valor acima:

  • olcDatabase: indica um nome de instância de banco de dados específico e normalmente pode ser encontrado em /etc/openldap/slapd.d/cn=config.
  • cn=config: indica opções de configuração global.
  • SENHA: é a string hash obtida durante a criação do usuário administrativo.

6. Em seguida, adicione a entrada LDAP correspondente especificando o URI referente ao servidor ldap e ao arquivo acima.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Etapa 3: configurando o banco de dados LDAP

7. Agora copie o arquivo de configuração do banco de dados de exemplo para slapd no diretório /var/lib/ldap e defina as permissões corretas no arquivo .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. Em seguida, importe alguns esquemas LDAP básicos do diretório /etc/openldap/schema como segue.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Agora adicione seu domínio no banco de dados LDAP e crie um arquivo chamado ldapdomain.ldif para seu domínio.

sudo vim ldapdomain.ldif 

Adicione o seguinte conteúdo nele (substitua exemplo pelo seu domínio e SENHA pelo valor hash obtido anteriormente):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. Em seguida, adicione a configuração acima ao banco de dados LDAP com o comando a seguir.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. Nesta etapa, precisamos adicionar algumas entradas ao nosso diretório LDAP. Crie outro arquivo chamado baseldapdomain.ldif com o seguinte conteúdo.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Salve o arquivo e adicione as entradas ao diretório LDAP.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. A próxima etapa é criar um usuário LDAP, por exemplo, tecmint, e definir uma senha para esse usuário da seguinte maneira.

sudo useradd tecmint
sudo passwd tecmint

13. Em seguida, crie as definições para um grupo LDAP em um arquivo chamado ldapgroup.ldif com o conteúdo a seguir.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

Na configuração acima, gidNumber é o GID em /etc/group para tecmint e adicione-o ao OpenLDAP diretório.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Em seguida, crie outro arquivo LDIF chamado ldapuser.ldif e adicione as definições para o usuário tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

em seguida, carregue a configuração no diretório LDAP.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Depois de configurar um servidor central para autenticação, a parte final é permitir que o cliente se autentique usando LDAP conforme explicado neste guia:

  1. Como configurar o cliente LDAP para conectar autenticação externa

Para obter mais informações, consulte a documentação apropriada no catálogo de documentos do software OpenLDAP e os usuários do Ubuntu podem consultar o guia do servidor OpenLDAP.

Resumo

OpenLDAP é uma implementação de código aberto do LDAP no Linux. Neste artigo, mostramos como instalar e configurar o servidor OpenLDAP para autenticação centralizada, no Ubuntu 16.04/18.04 e CentOS 7. Se você tiver alguma dúvida ou opinião para compartilhar, não hesite em nos contatar através do formulário de comentários abaixo.