Samba 27: Configurando Samba Como um Membro do Domínio – Parte 05

PRATICANDO:

 

Adicionando ubuntu como Membro Usando o Back end ‘rid’

 

Aqui iremos praticar tudo o que vimos nas partes anteriores desse artigo de número 27.

Iremos adicionar a distro ubuntu, chamada aqui também de ubuntu, como membro do domínio lab.local.

O server01 tem ip 192.168.0.40 e o server02 possui o 192.168.0.41. Esses dois são controladores do domínio.

 

Os Passos Abaixo São Realizados no Ubuntu:

Acesse o ubuntu.

#1  Altere o arquivo /etc/resolv.conf. No caso do ubuntu o resolv.conf é gerenciado pelo systemd. Então iremos alterar o arquivo /etc/systemd/resolved.conf ao invés de /etc/resolv.conf.

elder@ubuntu:~$ sudo cat /etc/systemd/resolved.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
DNS=192.168.0.40 192.168.0.41
#FallbackDNS=
Domains=lab.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

Aplique as alterações executando.

Obs.: poderíamos também alterar usando netplan.

elder@ubuntu:~$ sudo systemctl restart systemd-resolved.service
elder@ubuntu:~$ sudo netplan apply

#2 Deixe o arquivo /etc/hosts da seguinte forma:

elder@ubuntu:~$ sudo cat /etc/hosts
127.0.0.1	localhost
192.168.0.47 ubuntu.lab.local ubuntu
192.168.0.40 server01.lab.local  server01
192.168.0.41 server02.lab.local  server02

#3 Verifique horário e data. Não podem estar desatualizados. O ubuntu20 tem que estar com horário e data sincronizados com os do server01

elder@ubuntu:~$ date
qua dez 29 17:00:01 -02 2021

#4 Instale o samba, kerberos  e as bibliotecas libnss-winbind e libpam-winbind

elder@ubuntu:~$ sudo apt install samba winbind krb5-user libnss-winbind libpam-winbind -y

Se aparecer telas do kerberos solicitando que digite o domínio/realm pode digitar LAB.LOCAL e para servidor digite server01. Mas não se preocupe aqui pois o arquivo gerado por essas respostas será descartado e criaremos outro. Então esses campos preenchidos não valerão de nada no final.

 

Configurando o kerberos

Por precaução, tire uma cópia do arquivo de configuração do kerberos

elder@ubuntu:~$ sudo cp /etc/krb5.conf /etc/krb5.conf.bkp

Agora edite o arquivo /etc/krb5.conf e deixe com o conteúdo abaixo. Editarei com o vim

elder@ubuntu:~$ sudo vim /etc/krb5.conf
[libdefaults]
    default_realm = LAB.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

 

Obs.: Acima está como recomenda o site wiki.samba e assim funcionou sempre. Porém em uma situação tive que colocar o conteúdo abaixo para poder ter sucesso com o comando “kinit” e “klist”:

[libdefaults]
default_realm = LAB.LOCAL
	dns_lookup_realm = false
	dns_lookup_kdc = true

[realms]
        LAB.LOCAL = {
                kdc = server01
                admin_server = server01
        }

 

 

Configurando o nss service

Abra o arquivi /etc/nsswitch.conf e coloque a palavra winbind nas linhas passwd e group

elder@ubuntu:~$ sudo vim  /etc/nsswitch.conf 

passwd:         compat winbind	
group:          compat winbind
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

 

Configurando o smb.conf do samba

Abra o arquivo smb.conf, apague todo o conteúdo e adicione o texto abaixo

elder@ubuntu:~$ sudo vim  /etc/samba/smb.conf 
[global]

security = ADS
workgroup = LAB
realm = LAB.LOCAL

idmap config * : backend = tdb
idmap config * : range = 3000-7999

idmap config LAB : backend = rid
idmap config LAB : range = 10000-999999

winbind refresh tickets = Yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes

 

Testes de Comunicação com o Servidor 

Realize os testes abaixo

elder@ubuntu:~$ nslookup server01.lab.local
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	server01.lab.local
Address: 192.168.0.40

 

Teste usando o comando host

elder@ubuntu:~$ host -t SRV _ldap._tcp.lab.local
_ldap._tcp.lab.local has SRV record 0 100 389 server01.lab.local.
_ldap._tcp.lab.local has SRV record 0 100 389 server02.lab.local.

Se der erro verifique o conteúdo do arquivo de dns: /etc/resolv.conf ou /etc/systemd/resolved.conf  ou ainda em /etc/netplan/01-netcfg.yaml. Isso dependerá muito da sua distro.
Teste o kerberos usando os comandos “kinit” e “klist”

elder@ubuntu:~$ kinit administrator
Password for administrator@LAB.LOCAL: 
Warning: Your password will expire in 6 days on ter 11 jan 2022 19:02:35 -03

e

elder@ubuntu:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@LAB.LOCAL

Valid starting       Expires              Service principal
05/01/2022 09:19:25  05/01/2022 19:19:25  krbtgt/LAB.LOCAL@LAB.LOCAL
	renew until 06/01/2022 09:19:23

Se der erro verifique o conteúdo do arquivo /etc/krb5.conf e de /etc/hosts. Verifique também o horário, tem que está ajustado com o do servidor.

 

Junte(join) o ubuntu como membro do domínio lab.local

Execute: “net ads join -U administrator”

elder@ubuntu:~$ sudo net ads join -U administrator

 

 

Pode ocorrer o erro abaixo em vermelho. Mas preste atenção na linha em verde onde afirma nosso êxito.

Enter administrator's password:
Using short domain name -- LAB
Joined 'UBUNTU' to dns domain 'lab.local'
DNS Update for ubuntu.lab.local failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL

O erro acima pode ser ignorado. Mas se quiser resolver veja esse artigo: Testando Atualizações Dinâmicas do DNS.

 

Iniciando samba, winbind e buscando usuários e grupos

Inicie o samba e o winbind

elder@ubuntu:~$ sudo systemctl start smbd nmbd winbind

Teste a conectividade do winbind com o server01 controlador de domínio

elder@ubuntu:~$ wbinfo --ping-dc
checking the NETLOGON for domain[LAB] dc connection to "server01.lab.local" succeeded

Busque por usuários usando winbind

elder@ubuntu:~$ wbinfo -u
LAB\guest
LAB\administrator
LAB\joao
LAB\paulo
LAB\krbtgt
LAB\elder
LAB\lucas

Busque pelos grupos

elder@ubuntu:~$ wbinfo -g
LAB\domain controllers
LAB\dnsupdateproxy
LAB\domain admins
LAB\enterprise read-only domain controllers
LAB\allowed rodc password replication group
LAB\domain users
LAB\group policy creator owners
LAB\cert publishers
LAB\denied rodc password replication group
LAB\domain computers
LAB\read-only domain controllers
LAB\enterprise admins
LAB\domain guests
LAB\dnsadmins
LAB\schema admins
LAB\ras and ias servers

Esses usuários e grupos têm que aparecerem também dentro de /etc/passwd, mas para isso precisamos acrescentar as linhas alaranjadas abaixo dentro de smb.conf

elder@ubuntu:~$ sudo cat  /etc/samba/smb.conf 
[global]

security = ADS
workgroup = LAB
realm = LAB.LOCAL

idmap config * : backend = tdb
idmap config * : range = 3000-7999

idmap config LAB : backend = rid
idmap config LAB : range = 10000-999999

winbind refresh tickets = Yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes

winbind enum users = yes
winbind enum groups = yes

Aplica as configurações com “smbcontrol all reload-config

elder@ubuntu:~$ sudo smbcontrol all reload-config

Atenção: 
winbind enum users = yes
winbind enum groups = yes
Devem ser usados somente para testes. Retire essas linhas após concluídos os testes.

Execute “getent passwd

elder@ubuntu:~$ getent passwd
.......
LAB\guest:*:10501:10513::/home/LAB/guest:/bin/false
LAB\administrator:*:10500:10513::/home/LAB/administrator:/bin/false
LAB\joao:*:11605:10513::/home/LAB/joao:/bin/false
LAB\paulo:*:11119:10513::/home/LAB/paulo:/bin/false
LAB\krbtgt:*:10502:10513::/home/LAB/krbtgt:/bin/false
LAB\elder:*:11104:10513::/home/LAB/elder:/bin/false
LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/false

Criando a pasta home 

percebeu que ao executar o “getent passwd” é exibida /home/LAB/  como pasta home? verifique se essa pasta foi criada, se não a crie manualmente usando  “mkdir /home/LAB”

No meu caso ela foi criada automaticamente.  Mas se não tivesse bastaria executar:

sudo mkdir /home/LAB

Se por acaso quiser que a pasta dos usuários fiquem dentro de /home/ e não de /home/LAB basta adicionar a linha abaixo dentro de smb.conf

template homedir = /home/%U

 

Teste de Proprietário do Arquivo 

Podemos ainda colocar um usuário do domínio como proprietário de um arquivo. Abaixo defino o usuário paulo e o grupo “domain users” como proprietário do arquivo textos.txt.

 sudo chown "LAB\paulo":"LAB\domain users" textos.txt

Configurando PAM para Logarmos Usando Usuários do Domínio

 

Como essa distro ubuntu possui interface gráfica, ao ligarmos o computador e nos for apresentada a tela de login talvez desejamos usar usuários do domínio para logar ao invés de usuários locais.

Para isso devemos configurar PAM. Já instalamos a biblioteca responsável ao executarmos acima o comando “apt install libpam-winbind

 

Execute o comando  “pam-auth-update” e marque as opções abaixo

elder@ubuntu:/etc$ sudo pam-auth-update
Configuração de pacotes




 +-----------------------------------------------------+ Configuração PAM +-----------------------------------------------------+
 | O PAM ("Pluggable Authentication Modules") determina como a autenticação, autorização e alteração de senha são tratados no   | 
 | sistema, assim como permite a configuração de ações adicionais a serem tomadas quando sessões de usuário são iniciadas.      | 
 |                                                                                                                              | 
 | Alguns pacotes de módulos PAM fornecem perfis que podem ser usados para ajustar automaticamente o comportamento de todas as  | 
 | aplicações que usam PAM no sistema. Por favor, indique quais destes comportamentos você deseja habilitar.                    | 
 |                                                                                                                              | 
 | Perfis PAM para habilitar:                                                                                                   | 
 |                                                                                                                              | 
 |    [*] Unix authentication                                                                                                   | 
 |    [*] Winbind NT/Active Directory authentication                                                                            | 
 |    [*] Register user sessions in the systemd control group hierarchy                                                         | 
 |    [*] Create home directory on login                                                                                        | 
 |    [*] GNOME Keyring Daemon - Login keyring management                                                                       | 
 |    [*] Inheritable Capabilities Management                                                                                   | 
 |                                                                                                                              | 
 |                                                                                                                              | 
 |                                     <Ok>                                         <Cancelar>                                  | 
 |                                                                                                                              | 
 +------------------------------------------------------------------------------------------------------------------------------+ 
                                                                                                                                  





 

Prontinho, agora somos capazes de acessarmos a interface gráfica da distro com nosso usuário e senha do domínio

 

 

Logando no terminal

Quando, acima, olhamos o conteúdo de /etc/passwd executando o comando “getent passwd” vimos que o login no terminal estava desativado. Veja abaixo o final alaranjado na linha “/bin/false”

elder@ubuntu:~$ getent passwd  
......
LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/false

Devemos alterar de “/bin/false”  para um shell qualquer, como “/bin/bash” ou “/bin/sh”….

Para isso usamos um “template shell = /bin/bash” dentro do smb.conf

elder@ubuntu:~$ sudo vim  /etc/samba/smb.conf 
[global]

security = ADS
workgroup = LAB
realm = LAB.LOCAL

idmap config * : backend = tdb
idmap config * : range = 3000-7999

idmap config LAB : backend = rid
idmap config LAB : range = 10000-999999

winbind refresh tickets = Yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes

winbind enum users = yes
winbind enum groups = yes

template shell = /bin/bash

 

Reinicie o winbind e o samba

elder@ubuntu:~$ sudo systemctl restart smbd nmbd winbind

Veja como nosso /etc/passwd

elder@ubuntu:~$ getent passwd 
........
LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/bash

Agora, podemos acessar no terminal usando nossos usuários do domínio

 

Logando num sistema sem interface gráfica

 

logando no terminal usando su

Obs.: Quando não der certo com “LAB\joao” tente escapar o \ assim “LAB\\joao”

 

 

Fontes: ubuntu

One Comment to “Samba 27: Configurando Samba Como um Membro do Domínio – Parte 05”

Deixe um comentário

O seu endereço de e-mail não será publicado.