Implantação de um controle centralizado de usuários utilizando o protocolo LDAP

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Introdução

O uso e aplicação de tecnologias vêm desenvolvendo um papel importante dentro das empresas, interconectando sistemas em rede com o objetivo de oferecer uma melhor experiência e serviços aos seus clientes. As tendências para integrar as informações e os dados, assim como: login, senha, permissionamento, nome, e-mail, aplicações disponíveis, surgem como uma forma de minimizar transtornos dentro dos ambientes corporativos. Soluções para prover a diminuição dos gastos utilizando serviços de código aberto (open source) ganham espaço no mercado e são explorados por profissionais da área. O protocolo que será discutido e implementado durante este projeto está em destaque quando o assunto é a utilização do serviço de diretório para o gerenciamento de infraestruturas de redes. Segundo o Redbook da IBM - Understanding LDAP Design and Implementation (pg3),  “para aumentar a funcionalidade e o uso, e permitir um custo benefício para administrar aplicações distribuídas, informações sobre os serviços, fontes, usuários, e outros objetos acessíveis vindo das aplicações, precisam ser organizadas de uma maneira limpa e consistente.” Envolvendo estas necessidades, foi desenvolvido o protocolo que será abordado neste documento.

A integração de uma ferramenta opensource, para o gerenciamento centralizado dos dados (atributos do usuário citados anteriormente) utilizando o protocolo LDAP, surge a partir de uma necessidade corporativa, onde se faz necessário integrar as informações (credenciais e atributos) dos usuários, fazendo com que os dados fiquem centralizados em um único servidor base. Segundo o livro da IBM (pg 3-4), “LDAP tem ganhado uma ampla aceitação como um método de acesso a diretórios da internet e também se tornando uma ferramenta estratégica dentro das intranets corporativas. E apoiada por um número crescente de fornecedores de softwares e está sendo incorporado a um número crescente de aplicações.” Tendo em vista esta oportunidade, se fortaleceu a proposta do projeto, implementando o gerenciamento utilizando do protocolo.


Resumo

Este texto foi escrito com o objetivo de cumprir as atividades exigidas para formatura no Curso Superior de Tecnologia em Telecomunicações do Instituto Federal de Santa Catarina. A metodologia utilizada se caracteriza através da apresentação de um protocolo padrão de comunicação que utiliza um serviço de diretório, através de uma abordagem teórica e técnica. A abordagem principal se dará sobre soluções open-source, discorrendo sobre o protocolo LDAP. Os conceitos teóricos apresentados nos primeiros capítulos é de extrema importância para se criar uma base de entendimento inicial sobre o assunto, para posteriormente implementar e criar o ambiente de estudo e análise. O presente trabalho portanto, pretende com a utilização do protocolo LDAP, implementar um gerenciamento centralizado de usuários, integrando aplicações da infraestrutura de rede em uma base de dados, mantendo a informação em um único repositório.

Palavras-chave: LDAP, OpenLDAP, centralização de usuários.

Objetivos

Fazer integração do servidor de diretório LDAP em um conjunto de aplicações diversas, tais como servidores web (nginx e/ou apache), SSH, serviço de e-mail corporativo Zimbra e as plataformas cPanel e WHMCS que fazem o gerenciamento de servidores de hospedagem de web sites. Portanto, as informações (credenciais e atributos) dos usuários serão centralizadas em um sistema de diretório único, facilitando o acesso aos dados e reduzindo custos de gerenciamento e manutenção.


Atual Condição

Subindo o servidor para implementação do Openldap e phpmyadmin, e começando a integrar com as aplicações de estudo.

Primeiras configurações no Servidor LDAP

Servidor está localizando na AWS Para se fazer login no servidor, estou usando uma chave privada:

ssh -i "murielLDAP.pem" ubuntu@52.67.59.32

Primeiros passos no servidor: apt-get install slapd (instalando o OpenLdap) apt-get install ldap-utils (instalando as biblitecas necessárias) apt-get install phpldapadmin (instalando phpldap admin)

Acesso via brownser a estrutura do servidor LDAP: http://52.67.59.32/phpldapadmin

diretório LDAP localizado em: /etc/ldap/ Arquivos de configuração dentro de /etc/ldap

slapd.conf 
ldap.conf

Servidor configurado, foi configurado um cliente no mesmo servidor, seguindo estas configurações:

Para adicionar uma entrada ldif a base LDAP do servidor:

ldapadd -x -W -D "cn=admin,dc=serverdo,dc=in" -f usuario.ldif

cn = admin = common name admin (para adicionar a base) dc =serverdo, dc=in = este é o nome da base(dominio) LDAP criada no servidor, portando os grupos e usuários devem ser criados nesta base.

O usuário.ldif possui as configurações que seguem:

dn: uid=luciano,ou=usuarios,dc=serverdo,dc=in
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: luciano
sn: barreto
givenName: Luciano
cn: Luciano Barreto
displayName: Luciano Barreto
uidNumber: 2001
gidNumber: 100
userPassword: xxxxxxxx
loginShell: /bin/bash
homeDirectory: /home/lucianoldap

Esta foi uma entrada de exemplo adicionada a base LDAP.

$ slapcat (mostra a àrvode de diretórios DIT)
$ service sladp status (verificar se esta rodando o serviço)

Instalando um cliente para acessar ssh o servidor

$ apt-get install libpam-ldap
$ apt-get install nscd
$ vi /etc/nsswitch.conf 

passwd: files ldap

group: files ldap

$ service nscd restart
$ vi /etc/ldap.conf 

base dc=serverdo,dc=in uri ldap://10.0.2.27 (ip interno do servidor)

$ chmod 600 /etc/ldap.conf
$ vi /etc/pam.d/sshd

auth sufficient pam_ldap.so account sufficient pam_permit.so


$ vi /etc/pam.d/common-session

session required pam_mkhomedir.so skel=/etc/skel umask=0022

$ vi /etc/pam.d/common-password

password required pam_deny.so


$ vi /etc/ssh/sshd_config

$ service ssh restart

Pronto! Agora é so fazer o Login (com o usuário.ldif que foi adicionado a base) no servidor LDAP, porém, estamos utilizando um cliente na mesma máquina do servidor.

Para verificar os erros de autenticação no servidor $vi /var/log/auth.log


Após queda do servidor devido a máquina SPOT montada, novas configurações foram feitas

Configurações do Servidor Web APACHE! - configurado na VM

habilitar os módulos do LDAP

$ sudo a2enmod authnz_ldap

$ a2enmod ldap

sudo vi /etc/apache2/apache2.conf Adicionado:


<Directory /var/www/>
#require all granted
AuthType Basic
AuthName "Login via LDAP"
AuthBasicProvider ldap
AuthLDAPURL ldap://52.67.59.32/dc=ldap,dc=com?uid
require valid-user
</Directory>

$ sudo service apache2 restart

$ lynx localhost

Ao tentar conexão ao http://localhost Irá pedir uma senha para acesso, somente acessa o usuário cadastrado no servidor LDAP!!!

Configurações do cliente SSH para autenticar via LDAP - Configurado na VM

$ sudo apt-get install auth-client-config nscd $apt-get install libnss-ldap (apontar para o servidor ldap)

$sudo dpkg-reconfigure auth-client-config (caso de algum erro de configuração, coloquei ldap://http://52.67.59.32 e depois a senha e as configurações da base, todas como cn=ldap,cn=com e na ultima resultados ficam em /etc/ldap.conf

$sudo auth-client-config -t nss -p lac_ldap

resultado no /etc/nsswitch.conf

$pam-auth-update

resultados no /etc/pam.d

para testar: ssh luciano@ldap-client (ldap-client = Virtual Machine) pronto! conectei via ssh com a senha criada no servidor LDAP!!

Referência Bibliográficas

MENEGUITE, R.L. LDAP – Autenticação Centralizada.} Dissertação - Faculdades Unificadas Doctum de Cataguases, MG - Brasil, 2009.

DONLEY, C. LDAP Programming, Management and Integration. 74. ed. Greenwich - Ct: Manning, 2003. 352 p.

WAN, Xin; SCHULZRINNE, Henning; KANDLUR, Dilip; Verma, D. Measurement and Analysis of LDAP Performance. [s. L.]: Ieee/acm Transactions On Networking, 2008. 12 p.

YEGULALP, Serdar (Ed.). Nginx passes Apache as Web server of choice among top sites: Biggest slice of the top 1,000 websites now uses Nginx over Apache's or Microsoft's Web servers, says W3Techs survey -- but Apache is still tops overall. 2014. Disponível em: <http://www.infoworld.com/article/2608377/open-source-software/nginx-passes-apache-as-web-server-of-choice-among-top-sites.html>. Acesso em: 08 julho 2016.

BUTCHER, Matt. Mastering OpenLDAP: Configuring, Securing, and Integrating Directory Services. Birmingham - Mumbai: Packt, 2007. 482 p.

TUTTLE, Steven; EHLENBERGER, Ami; GORTHI, Ramakrishna; LEISERSON, Jay; MACBETH, Richard; OWEN, Nathan; RANAHANDOLA, Sunil; STORRS, Michael; YANG, Chunhui. Understanding LDAP: Design and Implementation. 2. ed. [s. L.]: Ibm Tivoli Directory Server, 2004. 774 p.

MACHADO, Erich Soares; MORI JUNIOR, Flavio da Silva.Autenticação Integrada Baseada em Serviço de Diretório LDAP. 2006. 84 f. Monografia - Curso de Ciência da Computação, Ime, Universidade de São Paulo, São Paulo, 2006.

EVARISTO, Lincon Ruam Angioletti. Integrando a base de usuários LDAP com serviços de e-mail, proxy web e ssh. 2002. 51 f. Tese (Doutorado) - Curso de Sistemas de Informação, Instituto Superior Tupy, Joinville, 2008.

TRIGO, Clodonil Honório. OpenLdap: Uma Abordagem Integrada São Paulo: Novatec, 2007. 240 p.

SARI, Riri Fitri; HIDAYAT, Syarif. Integrating Web Server Applications With LDAP Authentication: Case Study on Human Resources Information System of Ul. Kampus Baru, Indonesia: Electrical Engineering Department, Faculty Of Engineering University Of Indonesia,. 6 p.

CHAVES, Tiago Rodrigues. Autenticação IEEE 802.1X baseada no protocolo RADIUS e serviço de diretório LDAP aplicado a rede GIGAUFOPNET. 2010. 110 f. Monografia - Curso de Ciência da Computação, Instituto de Ciências Exatas, Universidade Federal de Ouro Preto, Ouro Preto, 2010.

INÁCIO JÚNIOR, Jorgeley. Redes Linux: Comandos gerais e Servidores de redes.Foca Linux, 2004. 41 p.