Criando e configurando openLDAP e NFS com clientes Linux e Windows

Sejam bem vindos ao sétimo post do blog.
Iremos configurar o LDAP (Lightweight Directory Access Protocol) , que tem como objetivo centralizar e padronizar dados geralmente usado pelo meio corporativo para integrar e autenticar dados da organização.

Instalando e configurando o openLdap Client/Server

Sudo dnf install openldap openldap-clients openldap-servers;

Após a instalação, iremos configurar o arquivo de configuração da base de dados, copiando arquivo exemplo para o local correto e alterando o owner para ldap com os comandos abaixo:

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

Gerando uma senha para o adminstrador:

sudo slappasswd

A senha será: senha

Com retorno:

New password: 
Re-enter new password: 
{SSHA}KFqiattbutOk81eO3DDG7HEhLyJRH2mG

Onde será exibido o hash gravado:

{SSHA}KFqiattbutOk81eO3DDG7HEhLyJRH2mG

Habilitando e ativando o serviço:

systemctl enable slapd.service ; systemctl start slapd.service;

Configurando Senha Root do LDAP

Abra o arquivo ldaprootpasswd.ldif (inexistente):

sudo vi /tmp/ldaprootpasswd.ldif;

E adicione o conteúdo:

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

Altere a última linha com o hash extraido no comando slappasswd
e altere o {SSHA}PASSWORD por {SSHA}KFqiattbutOk81eO3DDG7HEhLyJRH2mG como no meu exemplo.

Iremos importar a base de dados para adicionar a senha de root:

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

Feito isso, iremos adicionar diversos arquivos ao diretório /etc/openldap/schema:

for def in cosine.ldif nis.ldif inetorgperson.ldif; do sudo ldapadd -H ldapi:// -Y EXTERNAL -f /etc/openldap/schema/$def; done

Criando domínio no LDAP

sudo vi /tmp/ldapdomain.ldif

Com o conteúdo:

dn: olcDatabase={1}monitor,cn=config
changetype: add
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=dominiocaramelo,dc=com" read by * none

dn: olcDatabase={2}mdb,cn=config
changetype: add
replace: olcSuffix
olcSuffix: dc=dominiocaramelo,dc=com

dn: olcDatabase={2}mdb,cn=config
changetype: add
replace: olcRootDN
olcRootDN: cn=Manager,dc=dominiocaramelo,dc=com

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

dn: olcDatabase={2}mdb,cn=config
changetype: add
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=dominiocaramelo,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=dominiocaramelo,dc=com" write by * read

Importando domínio ao ldap:

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

Com retorno:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry entry "olcDatabase={1}monitor,cn=config"

adding new entry entry "olcDatabase={2}mdb,cn=config"

adding new entry entry "olcDatabase={2}mdb,cn=config"

adding new entry entry "olcDatabase={2}mdb,cn=config"

adding new entry entry "olcDatabase={2}mdb,cn=config"

Adicionando níveis a base organizacional.

Criar arquivo baseldapdomain.ldif com o comando:

sudo vi /tmp/baseldapdomain.ldif

Com o conteúdo:

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

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

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

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

Adicionando ao ldap:

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/baseldapdomain.ldif

Com retorno:

adding new entry "dc=dominiocaramelo,dc=com"

adding new entry "cn=Manager,dc=dominiocaramelo,dc=com"

adding new entry "ou=People,dc=dominiocaramelo,dc=com"

adding new entry "ou=Group,dc=dominiocaramelo,dc=com"

Iremos criar 3 grupos:

1 – Desenvolvimento
2 – Infraestrutura
3 – Operação

Criando Grupos no LDAP

Criando Grupo Desenvolvimento

Criando o grupo:

sudo groupadd Grupo_Desenvolvimento;

Descobrindo o id do grupo:

sudo getent group Grupo_Desenvolvimento | cut -d: -f3

Criando arquivo de importação:

sudo vi /tmp/ldapgrupodesenvolvimento.ldif

Com o conteúdo:

dn: cn=Grupo_Desenvolvimento,ou=Group	,dc=dominiocaramelo,dc=com
objectClass: top
objectclass: posixGroup
gidNumber: 1007
cn: Grupo_Desenvolvimento
description: grupo do setor de desenvolvimento

Adicionando ao LDAP:

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapgrupodesenvolvimento.ldif

Com retorno:

Enter LDAP Password: 
adding new entry "cn=desenvolvimento,ou=groups,dc=dominiocaramelo,dc=com"

Criando Grupo Infraestrutura

Criando o grupo:

sudo groupadd Grupo_Infraestrutura;

Descobrindo o id do grupo:

sudo getent group Grupo_Infraestrutura | cut -d: -f3

Criando o grupo:

sudo groupadd Grupo_Infraestrutura;

Criando arquivo de importação:

sudo vi /tmp/ldapgrupoinfraestrutura.ldif

Com o conteúdo:

dn: cn=Grupo_Infraestrutura,ou=Group,dc=dominiocaramelo,dc=com
objectClass: top
objectclass: posixGroup
gidNumber: 1003
cn: Grupo_Infraestrutura
description: grupo do setor de Infraestrutura

Adicionando ao LDAP:

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapgrupoinfraestrutura.ldif

Com retorno:

Enter LDAP Password: 
adding new entry "cn=desenvolvimento,ou=groups,dc=dominiocaramelo,dc=com"

Criando Grupo Operação

Descobrindo o id do grupo:

sudo getent group Desenvolvimento | cut -d: -f3

Criando arquivo de importação:

sudo vi /tmp/ldapgrupooperacao.ldif

Com o conteúdo:

dn: cn=Grupo_Operacao,ou=Group	,dc=dominiocaramelo,dc=com
objectClass: top
objectclass: posixGroup
gidNumber: 1005
cn: Grupo_Operacao
description: grupo do setor de Operacao

Adicionado ao LDAP:

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapgrupooperacao.ldif

Com retorno:

Enter LDAP Password: 
adding new entry "cn=operacao,ou=Group	,dc=dominiocaramelo,dc=com"

Criando usuários no LDAP

Criando usuário Infraestrutura

Criando usário no Sistema Operacional:

sudo useradd -G Grupo_Infraestrutura primeiro.infra

Criando senha para usuário:

sudo passwd primeiro.infra

Com retorno:

Mudando senha para o usuário primeiro.infra.

Recuperando dados do usuário:

sudo id primeiro.infra

Com retorno:

uid=1003(primeiro.infra) gid=1004(primeiro.infra) grupos=1004(primeiro.infra),1003(Grupo_Infraestrutura)

Gerando senha para o LDAP:

sudo slappasswd -h {SHA} -s infra

Gerando arquivo para importação no LDAP:

sudo vi /tmp/ldapcriarusuariouminfra.ldif

Com o conteúdo:

dn: uid=primeiro.infra,ou=People,dc=dominiocaramelo,dc=com
cn: Primeiro Infra
givenName: Primeiro
sn: Infra
uid: primeiro.infra
uidNumber: 1004
gidNumber: 1003
homeDirectory: /home/primeiro.infra
mail: primeiro.infra@dominiocaramelo.com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
userPassword: {SHA}XgOljcCFDlE3qOu84pYQZwx1au0=

Adicionando ao ldap

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapcriarusuariouminfra.ldif

Com retorno:

adding new entry "uid=primeiro.infra,ou=People,dc=dominiocaramelo,dc=com"

Criando usuário Operação

Criando usário no Sistema Operacional:

sudo useradd -G Grupo_Operacao primeiro.operacao

Criando senha para usuário:

sudo passwd primeiro.operacao

Com retorno:

Mudando senha para o usuário primeiro.operacao.

Recuperando dados do usuário:

sudo id primeiro.operacao

Com retorno:

uid=1004(primeiro.operacao) gid=1006(primeiro.operacao) grupos=1006(primeiro.operacao),1005(Grupo_Operacao)

Gerando senha para o LDAP:

sudo slappasswd -h {SHA} -s operacao

Gerando arquivo para importação no LDAP:

sudo vi /tmp/ldapcriarusuarioumoperacao.ldif

Com o conteúdo:

dn: uid=primeiro.operacao,ou=People,dc=dominiocaramelo,dc=com
cn: Primeiro Operacao
givenName: Primeiro
sn: Operacao
uid: primeiro.operacao
uidNumber: 1006
gidNumber: 1005
homeDirectory: /home/primeiro.operacao
mail: primeiro.infra@dominiocaramelo.com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
userPassword: {SHA}RcjwHPqOKoleAPGamrayTjkE9dw=

Adicionando ao ldap

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapcriarusuarioumoperacao.ldif

Com retorno:

adding new entry "uid=primeiro.operacao,ou=People,dc=dominiocaramelo,dc=com"

Criando usuário Desenvolvimento

Criando usário no Sistema Operacional:

sudo useradd -G groupadd Grupo_Desenvolvimento primeiro.desenvolvimento

Criando senha para usuário:

sudo passwd primeiro.desenvolvimento

Com retorno:

Mudando senha para o usuário primeiro.desenvolvimento.
Nova senha:
SENHA INCORRETA: A senha é menor do que 8 caracteres
Redigite a nova senha:
passwd: todos os tokens de autenticações foram atualizados com sucesso.

Recuperando dados do usuário:

sudo id primeiro.desenvolvimento

Com retorno:

uid=1005(primeiro.desenvolvimento) gid=1008(primeiro.desenvolvimento) grupos=1008(primeiro.desenvolvimento),1007(Grupo_Desenvolvimento)

Gerando senha para o LDAP:

sudo slappasswd -h {SHA} -s desenvolvimento

Gerando arquivo para importação no LDAP:

sudo vi /tmp/ldapcriarusuarioumdesenvolvimento.ldif

Com o conteúdo:

dn: uid=primeiro.desenvolvimento,ou=People,dc=dominiocaramelo,dc=com
cn: Primeiro Desenvolvimento
givenName: Primeiro
sn: Desenvolvimento
uid: primeiro.desenvolvimento
uidNumber: 1008
gidNumber: 1007
homeDirectory: /home/primeiro.desenvolvimento
mail: primeiro.infra@dominiocaramelo.com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
userPassword: {SHA}eo6JbSC9OWjUesX8IEtSGPJCZ/A=

Adicionando ao LDAP:

sudo ldapadd -x -D cn=Manager,dc=dominiocaramelo,dc=com -W -f /tmp/ldapcriarusuarioumdesenvolvimento.ldif

Com retorno:

adding new entry "uid=primeiro.desenvolvimento,ou=People,dc=dominiocaramelo,dc=com"

Facilitando o trabalho com PHP Ldap Admin

Iremos trabalhar com a lib PHP Ldap Admin no link.

Criando host para o ldap.

Adicione o host : dominiocaramelo.com ao ip 127.0.0.1 no documento /etc/hosts

Configurando no Nginx:

sudo vi /etc/nginx/conf.d/phpldapadmin.conf

Com o conteúdo:

server {
	
    listen       80;
    server_name  phpldapadmin.local;
    #root         /usr/share/nginx/html;
    root         /var/www/html/phpldapadmin;
 
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
 
    location / {
    }
     
    location ~ \.php$ {
         root           /var/www/html/phpldapadmin;
         try_files $uri =404;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass   php56-fpm;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
    }
 
}

Restartando servidor:

sudo systemctl restart nginx;

Configurando no Apache:

sudo vim /etc/httpd/conf.d/phpldapadmin.conf

Com o conteúdo:

<VirtualHost *:81>
DocumentRoot /var/www/html/phpldapadmin/
ServerName phpldapadmin.local
ServerAlias phpldapadmin.local
 
<Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
 		<IfModule mod_fcgid.c>
            <FilesMatch \.php$>
                SetHandler application/x-httpd-php-default
            </FilesMatch>
        </IfModule>
</Directory>
</VirtualHost>

Restartando servidor:

sudo systemctl restart httpd

Editando configuração da aplicação:

Copie o arquivo config.php.example para config.php:

sudo  cp /var/www/html/phpldapadmin/config/config.php.example /var/www/html/phpldapadmin/config/config.php

Configurando conexão ao LDAP:

adicione as Linhas

$servers->setValue('server','name','dominiocaramelo.com');
$servers->setValue('server','base',array('dc=dominiocaramelo,dc=com'));

Após a linha com o valor:

$servers->newServer('ldap_pla');

Acesse a aplicação no endereço: phpldapadmin.local

Login:

Login do php Ldap Admin

Login do php Ldap Admin

Tela Inicial e menus com itens cadastrados antes:

Inicio do php Ldap Admin

Inicio do php Ldap Admin

Configurando Client

Linux

Instalando Componentes:

apt-get install ldap-auth-client nscd;

Após instalado iremos preparar a configuração:

auth-client-config -t nss -p lac_ldap;
Definindo domínio do LDAP

Definindo domínio do LDAP

Iremos configurar: ldap://dominiocaramelo.com

Definindo conta e adminstrador do LDAP

Definindo conta e adminstrador do LDAP

Iremos definir: cn=Manager,dc=dominiocaramelo,dc=com

Definindo versão do LDAP

Definindo versão do LDAP

Iremos definir : 3

Definindo configurações PAM

Definindo configurações PAM

Configurando criação do /home automático:

sudo vim /usr/share/pam-configs/mkhomedir

Com o seguinte conteúdo.

Name:mkhomedir
Default:yes
Priority:900
Session-Type:Additional
Session-Interactive-Only:yes
Session:

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

Atualizando pam-auth:

Com o comando :

sudo pam-auth-update

E o módulo será exibido ativo.

Reiniciando nscd:

sudo service nbsp restart;

Após isso veremos os novos usuários importados, com o comando:

getent passwd;

Onde surgiram os usuários:

primeiro.infra:x:1003:1004:Primeiro Infra:/home/primeiro.infra:/bin/bash
primeiro.operacao:x:1004:1006:Primeiro Operacao:/home/primeiro.operacao:/bin/bash
primeiro.desenvolvimento:x:1005:1008:Primeiro Desenvolvimento:/home/primeiro.desenvolvimento:/bin/bash

Ativando usuários:

Login usuário LDAP

Login usuário LDAP

É possível usar o login de um usuário pelo GUI, obtendo o mesmo resultado (criação de um perfil login na estação).

Diretório home novo usuário

Diretório home novo usuário

Para utilizar o compartilhamento NFS, é necessário seguir o procedimento contido em: Criando e consumindo uma rede de compartilhamento NFS

Raiz do compartilhamento NFS

Raiz do compartilhamento NFS

Arquivo aberto no compartilhamento NFS

Arquivo aberto no compartilhamento NFS

Windows

Iremos configurar o client no Windows através do programa pGina disponível no link

Para configurar a aplicação, iremos a aba Plugin session:

Configurando pGina

Configurando pGina

Ao clicar em configure, preencha os parâmetros.

Configurando Parâmetros do LDAP no pGina

Configurando Parâmetros do LDAP no pGina

Depois de configurar , iremos a a aba Plugin order.

Vamos colocar o LDAP antes de Local Machine como a imagem abaixo:

Ordenando Protocolo no pGina

Ordenando Protocolo no pGina

Agora iremos simular as configurações na aba Simulation:

Simulando usuário no pGina

Simulando usuário no pGina

Realizando Login:

Realizando login no Windows

Realizando login no Windows

Windows preparando usuário

Windows preparando usuário

Usuário finalizado

Usuário finalizado

O próximo passo é habilitar o Serviço NFS para acesso à montagem no servidor.

Iremos em: Painel de Controle -> Programas -> Ativar ou desativar recursos do Windows:

Habilitando NFS no Windows

Habilitando NFS no Windows

Mapear unidade de rede:

Opção de mapeamento de rede

Opção de mapeamento de rede

Configurando montagem:

Configurando montagem NFS no Windows

Configurando montagem NFS no Windows

Montagem efetuada,como visto abaixo:

Raiz do compartilhamento

Arquivo aberto no compartilhamento:

Exibindo arquivo do compartilhamento

Exibindo arquivo do compartilhamento

Raiz do compartilhamento:

Compartilhamento exibido na barra lateral

Compartilhamento exibido na barra lateral

Observação: recurso disponível nas versões Ultimate e Enterprise do Windows 7.

Temos um LDAP e rede de NFS de compartilhamento para serem usados.

É isso aí.
Espero ter sido claro na explicação.
Valeu e até a próxima!

 

brunocaramelo

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *