Como criar um Controlador de Domínio Secundário com SAMBA 4.

Neste artigo iremos falar sobre uma importante funcionalidade do Samba 4, a possibilidade de trabalhar como controlador de Domínio Secundário. Este artigo será dividido em duas etapas, pois o intuito e demonstrar como realizar uma migração completa de um Controlador de Domínio Windows para Samba, desde sua integração, replicação até elevação para controlador de domínio principal.



CONSIDERAÇÕES

Este é um assunto relativamente avançado, estou levando em consideração que já domine o assunto “Controlador de Domínio” e que também tenha aptidão com sistema Linux.  Para este artigo vamos utilizar o Debian 10 Buster. “Versão mais atual no momento da elaboração deste artigo”.



1) INFORMAÇÕES INICIAL

Assim como no artigo anterior “Controlador de Domínio Samba 4”, precisamos levantar algumas informações primordiais para o sucesso de nossa configuração.

1.1) Definição de Partições.

Precisamos definir como trabalhará nosso particionamento, estaremos realizando uma configuração do zero, portanto é importante definir as partições de maneira correta. Para este exemplo, nosso controlador de domínio secundário possuirá os seguintes particionamentos:

				
					HD 100 GB

/boot   1GB
/      20GB
/home  20GB
/var   30GB
/swap   4GB
/dados 25GB

				
			

1.2) Definição de IP.

Precisamos também definir o IP fixo que será utilizado pelo nosso controlador de domínio secundário. Para isso, acesse o arquivo de configuração de sua rede e informe o ip que deseja utilizar. Em nosso caso o arquivo é /etc/network/interfaces.

				
					#Interface statica
allow-hotplug ens18
iface ens18 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
gateway 192.168.3.5
dns-nameservers 192.168.3.1
dns-nameservers 192.168.3.2
dns-search oliveira.com
				
			

1.3) Definição de nome do servidor.

Precisamos também definir o nome do servidor controlador de domínio secundário. Para isso acesse o arquivo /etc/hostname com seu editor de texto de estimação, e defina um nome para o servidor. Essa informação já deve estar com o nome que definiu no momento da instalação do Linux. No nosso exemplo o servidor se chamará srvdc1.

1.4) Definição de nome do domínio.

Precisamos também informar o nome de domínio que iremos integrar. No nosso exemplo o domínio se chama oliveira.com.



2) CONFIGURAÇÃO DO ARQUIVO HOST.

Vamos definir as informações do arquivo de configuração /etc/hosts. Este arquivo também é utilizado para pesquisa e resolução de nomes. Vamos definir neste arquivo o nome e IP do servidor que estamos instalando de forma que ele também seja conhecido pelo seu número de IP de rede local.

Importante: Precisamos definir aqui tanto o IP de nosso servidor Primário, ele somente será tirado desta configuração quando realizarmos o rebaixamento de controlador.

				
					127.0.0.1 localhost
127.0.1.1 srvdc1.oliveira.com srvdc1
192.168.3.1 srvdc1.oliveira.com srvdc1
192.168.3.2 serverdc.oliveira.com serverdc

				
			


3) CONFIGURANDO ARQUIVO DE RESOLUÇÃO.

Vamos definir as informações do arquivo de configuração /etc/resolv.conf, informando quem é o servidor DNS atual. No nosso caso por enquanto, o servidor controlador de domínio primário é o servidor DNS atual.

				
					domain oliveira.com
search oliveira.com
nameserver 192.168.3.2
nameserver 192.168.3.1
				
			


4) DEFININDO PERMISSÕES NO FSTAB.

Precisamos definir no ponto de montagem /home (Onde ficará as pastas dos usuários em nosso exemplo) as permissões acl, user_xattr. Para isso, vamos editar o arquivo /etc/fstab e adicionar as informações ao ponto de montagem conforme exemplo abaixo.

				
					# /home was on /dev/sda3 during installation
UUID=xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx /home ext4 defaults,acl,user_xattr 0
				
			


Após inserida as informações, precisamos remontar o ponto de montagem para que as alterações entrem em vigor.

				
					mount -o remount /home

				
			


5) INSTALANDO PACOTES.

Agora que já definimos as informações e configurações necessárias, vamos instalar nosso Samba e mais alguns pacotes necessários. Para isso, execute os comandos ilustrados abaixo.

				
					apt-get install samba krb5-user winbind smbclient ldap-utils ldb-tools acl attr ntp
				
			

Assim que começar a realizar a instalação aparecerá uma tela solicitando a autenticação de kerberos, podemos realizar esta configuração de imediato, ou em um segundo momento através do arquivo /etc/krb5.conf. Vamos continuar a configuração e inserir as informações solicitadas em tela.

Insira também o nome do servidor que responderá ao Kerberos. Em nosso caso o próprio servidor que estamos realizando a instalação.

Também informe o nome do servidor administrativo que realizará a gerencia e troca de senhas para o kerberos. Em nosso caso também será o mesmo servidor.

Feito isso nossos pacotes já estarão instalados, agora precisamos realizar as configurações necessárias.



6) CONFIGURANDO KERBEROS.

Entre no arquivo de configuração /etc/krb5.conf e defina as informações de seu domínio. Em nosso exemplo estamos utilizando o domínio oliveira.com, conforme ilustrado abaixo.

				
					[libdefaults]
default_realm = OLIVEIRA.COM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
fcc-mit-ticketflags = true
dns_lookup_realm = false
dns_lookup_kdc = true
#[realms]
# OLIVEIRA.COM = {
# kdc = srvdc1.oliveira.com
# default_domain = oliveira.com
# admin_server = srvdc1.oliveira.com
# }
#[domain_realm]
# .oliveira.com = OLIVEIRA.COM
# oliveira.com = OLIVEIRA.COM
				
			


7)
CONFIGURANDO TICKET

Depois de configurado o kerberos, precisamos testar a comunicação com o controlador de domínio. Para isto, utilizaremos o comando “kinit” seguido pelo parâmetro “Nome de usuário que esteja cadastrado no domínio“, conforma ilustrado abaixo.

				
					kinit rafael

				
			

Será solicitado a senha de usuário, digite a senha e pressione “ENTER“.

Após realizar o comando e o mesmo não retornar nenhuma mensagem de erro, é possível verificar o “ticket kerberos” gerado através do comando “klist” conforme ilustrado abaixo.

				
					klist
				
			

Mostrando como resultado:

				
					Ticket cache: FILE:/tmp/krb5cc_10001_j3SWTA
Default principal: rafael@OLIVEIRA.COM
Valid starting Expires Service principal
12-08-2019 09:40:32 12-08-2019 19:40:32 krbtgt/OLIVEIRA.COM@OLIVEIRA.COM
renew until 13/08/2019 09:40:17
				
			

 

8) CONFIGURAÇÃO NTP.

Precisamos configurar o pacote NTP de nosso novo servidor. Para isso, adicione as informações ao final do arquivo de configuração /etc/ntp.conf, conforme ilustrado abaixo.

				
					# Relogio Local
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# Configurações adicionais para o Samba 4
ntpsigndsocket /var/lib/samba/ntp_signd/
restrict default mssntp
disable monitor
				
			

Após inserir as informações reinicialize o serviço ntp.

				
					systemctl restart ntp
				
			

Obs: Utilize o comando ntpq -p para verificar se o ntp está funcionando.



9) CONFIGURANDO NSSWITCH.

Precisamos informar ao nosso servidor que desejamos trabalhar com o “winbind”. Esta configuração é utilizada para clientes de autenticação e não vi utilidade na configuração de nosso servidor controlador de domínio. Porém, para que o winbind esteja funcional e configurado de forma correta, caso venha a rebaixar o servidor controlador de domínio, e interessante já deixar essa opção pré configurada. Para isso, edite as duas linhas no arquivo /etc/nsswitch.conf conforme ilustrado abaixo.

				
					passwd: compat winbind
group: compat winbind
				
			


10) PROMOVENDO CONTROLADOR DE
DOMÍNIO SECUNDÁRIO – (READ ONLY).

Agora iremos promover nosso servidor à controlador de domínio secundário. Para isso, precisamos renomear nosso arquivo de configuração original do samba. Isso é necessário pois ao provisionar o samba, um novo arquivo smb.conf será criado.

				
					mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
				
			

Feito isso, vamos parar todos os serviços samba e winbind.

				
					systemctl stop smbd nmbd winbind
				
			

Agora vamos provisionar nosso samba à controlador de domínio secundário através do comando ilustrado abaixo. Neste primeiro momento vamos subir nosso servidor como RODC (Read Only Domain Controler), isso irá nos permitir testar nosso controlador.

				
					samba-tool domain join oliveira.com RODC -U administrador --realm=OLIVEIRA.COM
				
			

Após executar o comando, será solicitado a senha do usuário informado, lembre-se de utilizar um usuário com poderes administrativos no domínio, feito isso aguarde até o final da execução do comando.



11) DESABILITANDO SERVIÇOS DE INICIALIZAÇÃO.

Com nosso samba funcionando como controlador de domínio, não podemos mais utiliza-lo como standalone. Precisamos então desabilitar os serviços do samba e winbind da inicialização do sistema.

				
					systemctl disable smbd.service nmbd.service winbind.service
				
			


12) HABILITANDO SERVIÇOS DE INICIALIZAÇÃO.

Agora precisamos habilitar o serviço samba-ad-dc.service para inicializar junto com o sistema de boot. Porém é preciso realizar o desmascaramento do arquivo utilizando o comando systemctl unmask.

Obs: Quando um arquivo está mascarado é impossível inicializa-lo. Maiores informações consulte o manual do comando systemctl, e pesquise por mask e unmask.

				
					systemctl unmask samba-ad-dc.service
				
			

Agora vamos adicionar o serviço a inicialização do sistema.

				
					systemctl enable samba-ad-dc.service
				
			


13) VERIFICAÇÃO DE INTEGRAÇÃO

Precisamos testar nossa integração, para isso acesse o “Usuários e Computadores do Active Directory” de seu servidor Windows e verifique se dentro da Unidade Organizacional “Domain Controllers“, possui uma nova conta de computador do nosso novo servidor.

Repare que na imagem mostra na coluna “Tipo de Controlador de Domínio” “Somente Leitura, GC”. Exatamente o que queríamos.

Para teste crie um novo usuário através do seu servidor Windows e verifique no servidor Linux se consegue visualizar o usuário criado. No exemplo do artigo irei criar um novo usuário chamado “joaoteste”.

				
					samba-tool user list | grep joaoteste
				
			

ou

				
					pdbedit - L | grep joaoteste
				
			

OBS: Caso não traga a informação do usuário criado, restart o seu serviço samba-ad-dc.service.

Vamos também realizar a criação de um novo usuário, porém a partir do nosso Linux, neste exemplo irei criar o usuário chamado “mariateste“.

				
					samba-tool user add mariateste
				
			

Após executar o comando e digitado a senha para o novo usuário, repare que recebemos um erro. Este erro é esperado pois nosso servidor esta configurado como “Read Only Active Directory“, ou seja, está configurado como somente leitura, e não é possível criar nada a partir dele. O erro pode ser observador abaixo.

				
					ERROR(ldb): Failed to add user 'mariateste': - Invalid LDB reply type 1
				
			


14) PROMOVENDO CONTROLADOR DE
DOMÍNIO SECUNDÁRIO – (MEMBRO).

Agora que já homologamos nosso novo servidor como READ ONLY, vamos torna-lo um membro ativo do Active Directory. Para isso vamos parar o serviço do samba, e executar o novo comando de integração.

				
					systemctl stop samba-ad-dc.service
samba-tool domain join oliveira.com DC -U administrador --realm=OLIVEIRA.COM
				
			

Após executar o comando é possível receber a seguinte mensagem de erro: “Not removing account SRVDC1$ which looks like a Samba DC account matching the password we already have. To override, remove secrets.ldb and secrets.tdb

OBS: Este erro aconteceu porque já havíamos ingressado o servidor Linux ao domínio como RODC.

Como o próprio erro já diz, remova os dois arquivos e execute novamente o comando.

				
					mv /var/lib/samba/private/secrets.ldb /var/lib/samba/private/secrets.ldb.old
mv /var/lib/samba/private/secrets.tdb /var/lib/samba/private/secrets.tdb.old
				
			

Agora acesse o servidor windows e verifique se o novo servidor deixou de ser RODC e se tornou DC (Membro) do domínio, como ilustrado abaixo.



15) AJUSTANDO DNS

Precisamos agora adicionar ao nosso DNS o novo servidor para resolução de nomes. Para isso vamos executar o comando como ilustrado abaixo.

OBS: Somente será necessário se não existir apontamento no DNS atual para o novo servidor. Verifique se o servidor ja existe na tabela de DNS antes de executar o comando.

				
					samba-tool dns add 192.168.3.2 oliveira.com srvdc1 A 192.168.3.1 -U administrador
				
			


16) TESTES DE HOMOLOGAÇÃO.

Estamos chegando ao final de nossa integração, porém precisamos realizar mais alguns testes.

16.1) DNS

Através do comando abaixo podemos identificar quais são os domain controllers disponíveis na rede.

				
					ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationid=*)' --cross-ncs
				
			

Também um outro teste que podemos fazer é pegar do resultado do comando acima o “ObjectGUID” do nosso controlador de domínio Linux, e realizar uma consulta DNS a partir desta numeração, como ilustrado abaixo.

				
					host -t CNAME 4f19bc23-339b-4c4f-bd7c-d14f5e444307._msdcs.oliveira.com
				
			

Resultado:

				
					f19bc23-339b-4c4f-bd7c-d14f5e444307._msdcs.oliveira.com is an alias for srvdc1.oliveira.com.
				
			

16.2) Replicação de Domínio.

Também precisamos verificar se nosso domínio esta replicando corretamente. Para isso execute os comandos ilustrado abaixo.

				
					samba-tool drs kcc -U Administrador
samba-tool drs showrepl
				
			

Estes comandos trarão uma seria de informações para verificação.

16.3) Adicionando novo usuário.

Vamos novamente adicionar o usuário “mariateste” através de nosso servidor Linux, desta vez será possível criar o usuário sem nenhum erro.

				
					samba-tool user create mariateste
				
			

Acesse novamente o Usuários e Computadores do Active Directory dentro de seu servidor Windows e constate o usuário criado.



17) DICAS FINAIS

  • Antes de desligar seu servidor primário para realizar testes, lembre-se de informar ao seu servidor DHCP o endereço de seu DNS de consulta secundário.
  • Ideal que seu servidor DHCP esteja, junto ao controlador de dominio, firewall ou router, evite deixar no swtich.
  • Caso possua alguma máquina ou servidor linux no domínio, lembre-se de alterar os arquivos resolv.conf, hosts e krb5.conf apontando para o novo pdc.


CONCLUSÃO

Através deste artigo foi possível demonstrar a integração de um Servidor Linux utilizando Samba 4 com um servidor Windows rodando o Active Directory. No próximo artigo estaremos aprendendo como realizar a transferência de roles para o samba 4, além de despromover o servidor windows.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin


Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

28 respostas

  1. Boa Tarde, excelente artigo, porem no meu esta dando um erro:
    Failed to commit objects: WERR_DS_DRA_RECYCLED_TARGET
    dai nao entra no dominio.
    o que pode ser esse erro ?

    1. Fala Ricardo! bom dia! Já tem um tempo que escrevi este artigo, tente realizar os passos novamente, tb não fiz testes em novas versões do Debian, mas creio que a ideia continua a mesma. att.

  2. Boa Tarde
    Excelente artigo, porem o meu quando tento adicionar no dominio como RODC (ja tentei como AD também) da a seguinte mensagem:
    failed to commit objects: WERR_DS_DRA_RECYCLED_TARGET

    saberiam me dizer o que pode estar errado ?

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!