LDAP (Lightweight Directory Access Protocol) é um protocolo utilizado para acessar e gerenciar informações de diretórios de forma distribuída. Nesta aula, vamos explorar como configurar e gerenciar um servidor LDAP no Linux, usando o OpenLDAP, que é uma implementação livre e popular do LDAP. Vamos cobrir a instalação, configuração básica, segurança e práticas recomendadas.
O que é LDAP?
LDAP é um protocolo que permite a consulta e modificação de diretórios de informações organizados hierarquicamente. Ele é frequentemente usado para armazenar informações de usuários, grupos, permissões e outros dados que precisam ser compartilhados em uma rede.
Vantagens de um Servidor LDAP
- Centralização: Permite o gerenciamento centralizado de informações de diretório.
- Escalabilidade: Suporta grandes volumes de dados e pode ser distribuído em várias máquinas.
- Interoperabilidade: Compatível com vários sistemas e aplicativos, incluindo autenticação de usuários em redes heterogêneas.
Instalação do OpenLDAP
Para configurar um servidor LDAP, usaremos o OpenLDAP.
No Servidor
Para instalar o OpenLDAP em distribuições baseadas em Debian (como Ubuntu):
$ sudo apt update
$ sudo apt install slapd ldap-utils
Para distribuições baseadas em Red Hat (como CentOS):
$ sudo yum install openldap-servers openldap-clients
Configuração do Servidor LDAP
Configuração Inicial do OpenLDAP
Durante a instalação, será solicitado que você configure a senha do administrador do diretório (cn=admin,dc=example,dc=com). Certifique-se de lembrar esta senha.
Configurando o Domínio
Para configurar o domínio LDAP, você precisa modificar os arquivos de configuração para refletir o domínio da sua organização. Vamos usar dc=meusite,dc=com
como exemplo.
- Exporte o esquema inicial para um arquivo LDIF:
$ sudo slapcat -n 0 -l config.ldif
- Edite o arquivo
config.ldif
:
$ sudo nano config.ldif
Procure as linhas que contêm dc=example,dc=com
e substitua por dc=meusite,dc=com
.
- Apague o banco de dados atual e recarregue o novo esquema:
$ sudo rm -rf /etc/ldap/slapd.d/*
$ sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.ldif
$ sudo chown -R openldap:openldap /etc/ldap/slapd.d
Configurando o Banco de Dados LDAP
- Crie um arquivo LDIF para adicionar o banco de dados inicial:
$ sudo nano base.ldif
Adicione o seguinte conteúdo:
dn: dc=meusite,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: meusite
dc: meusite
dn: cn=admin,dc=meusite,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret
- Adicione o conteúdo ao banco de dados LDAP:
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f base.ldif
Configurando os Esquemas LDAP
Adicione os esquemas necessários, como o esquema de usuários e grupos:
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
Adicionando Usuários e Grupos
Criando um Grupo
- Crie um arquivo LDIF para o grupo:
$ sudo nano grupo.ldif
Adicione o seguinte conteúdo:
dn: ou=groups,dc=meusite,dc=com
objectClass: organizationalUnit
ou: groups
dn: cn=usuarios,ou=groups,dc=meusite,dc=com
objectClass: posixGroup
cn: usuarios
gidNumber: 5000
- Adicione o grupo ao banco de dados LDAP:
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f grupo.ldif
Criando um Usuário
- Crie um arquivo LDIF para o usuário:
$ sudo nano usuario.ldif
Adicione o seguinte conteúdo:
dn: ou=users,dc=meusite,dc=com
objectClass: organizationalUnit
ou: users
dn: uid=joao,ou=users,dc=meusite,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: joao
sn: Silva
givenName: Joao
cn: Joao Silva
displayName: Joao Silva
uidNumber: 10000
gidNumber: 5000
userPassword: senha123
gecos: Joao Silva
loginShell: /bin/bash
homeDirectory: /home/joao
- Adicione o usuário ao banco de dados LDAP:
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f usuario.ldif
Configuração de Segurança
Configuração de SSL/TLS
Para garantir que as conexões LDAP sejam seguras, configure SSL/TLS no OpenLDAP.
- Gere certificados SSL (use Certbot para certificados da Let’s Encrypt):
$ sudo apt install certbot # Debian
$ sudo yum install certbot # Red Hat
$ sudo certbot certonly --standalone -d ldap.meusite.com
- Configure o OpenLDAP para usar SSL/TLS:
$ sudo nano /etc/ldap/slapd.d/cn=config.ldif
Adicione ou modifique as seguintes linhas:
olcTLSCertificateFile: /etc/letsencrypt/live/ldap.meusite.com/fullchain.pem
olcTLSCertificateKeyFile: /etc/letsencrypt/live/ldap.meusite.com/privkey.pem
- Reinicie o OpenLDAP:
$ sudo systemctl restart slapd # Debian
$ sudo systemctl restart ldap # Red Hat
Configuração de Firewall
Certifique-se de que seu firewall permite tráfego LDAP (porta 389) e LDAPS (porta 636):
Para ufw
(firewall do Ubuntu):
$ sudo ufw allow 389/tcp
$ sudo ufw allow 636/tcp
Para firewalld
(firewall do CentOS):
$ sudo firewall-cmd --permanent --add-port=389/tcp
$ sudo firewall-cmd --permanent --add-port=636/tcp
$ sudo firewall-cmd --reload
Monitoramento e Logs
Os logs do OpenLDAP são armazenados em /var/log/syslog
(Debian) ou /var/log/messages
(Red Hat). Para monitorar os logs em tempo real:
$ sudo tail -f /var/log/syslog # Debian
$ sudo tail -f /var/log/messages # Red Hat
Exemplos Práticos
Exemplo 1: Configurando um Servidor LDAP Básico
- Instale o OpenLDAP:
$ sudo apt install slapd ldap-utils # Debian
$ sudo yum install openldap-servers openldap-clients # Red Hat
- Configure o domínio LDAP:
$ sudo slapcat -n 0 -l config.ldif
$ sudo nano config.ldif
# Substitua `dc=example,dc=com` por `dc=meusite,dc=com`
$ sudo rm -rf /etc/ldap/slapd.d/*
$ sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.ldif
$ sudo chown -R openldap:openldap /etc/ldap/slapd.d
- Crie o banco de dados inicial:
$ sudo nano base.ldif
# Adicione o seguinte conteúdo:
dn: dc=meusite,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: meusite
dc: meusite
dn: cn=admin,dc=meusite,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f base.ldif
- Adicione os esquemas necessários:
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif
$ sudo ldapadd -Y EXTERNAL -H
ldapi:/// -f /etc/ldap/schema/cosine.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
Exemplo 2: Adicionando um Usuário e um Grupo
- Crie um grupo:
$ sudo nano grupo.ldif
# Adicione o seguinte conteúdo:
dn: ou=groups,dc=meusite,dc=com
objectClass: organizationalUnit
ou: groups
dn: cn=usuarios,ou=groups,dc=meusite,dc=com
objectClass: posixGroup
cn: usuarios
gidNumber: 5000
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f grupo.ldif
- Crie um usuário:
$ sudo nano usuario.ldif
# Adicione o seguinte conteúdo:
dn: ou=users,dc=meusite,dc=com
objectClass: organizationalUnit
ou: users
dn: uid=joao,ou=users,dc=meusite,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: joao
sn: Silva
givenName: Joao
cn: Joao Silva
displayName: Joao Silva
uidNumber: 10000
gidNumber: 5000
userPassword: senha123
gecos: Joao Silva
loginShell: /bin/bash
homeDirectory: /home/joao
$ sudo ldapadd -x -D cn=admin,dc=meusite,dc=com -W -f usuario.ldif
Configurar e gerenciar servidores LDAP no Linux é uma habilidade essencial para administradores de sistemas, permitindo a centralização de informações de diretório e a autenticação de usuários em redes heterogêneas. Nesta aula, exploramos como configurar um servidor LDAP com OpenLDAP, adicionar usuários e grupos, e aplicar práticas de segurança. Pratique essas técnicas para ganhar confiança na administração de servidores LDAP no Linux.
Se tiver dúvidas ou sugestões, deixe um comentário no blog NerdExpert.com.br. Na próxima aula, exploraremos a integração do LDAP com outros serviços e aplicações.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.