Este Artigo tem como objetivo realizar o ingresso de uma máquina Linux em um domínio. Diferente do Windows, o Linux requer uma atenção especial quanto trata-se de integração em um ambiente corporativo. Isso porque ele exige alguns fatores que devem ser levados em consideração na hora de integrá-lo. Aqui tentaremos abordar todos os aspectos necessários para realizarmos este procedimento de forma profissional, trazendo ao final do artigo uma integração correta.
Para que este procedimento seja possível, iremos utilizar três serviços essenciais, os quais são:
Kerberos: É um protocolo de rede usado para autenticação de usuários e/ou serviços de rede, como o Active Directory. utilizando um sistema criptografado, permitindo comunicações seguras e identificadas em redes, fazendo uso de tickets (chaves criptografadas).
Winbind: O Winbind é um daemon usado pelo PAM, NSSWITCH, Samba e podendo ser usado por outros serviços de rede e/ou sistema, fazendo a interface entre o PDC e o computador cliente rodando o serviço Winbindd, permitindo que máquinas com o sistema GNU/Linux comuniquem-se com DC Active Directory.
Samba: É um serviço cuja principal função é disponibilizar recursos compartilhados em uma rede, tais como arquivos e impressoras, além de também ser utilizado como controlador de domínio.
CONSIDERAÇÕES
Vamos levar em consideração que você já possui um ambiente com um servidor de domínio Windows Server / Samba com o Active Directory, DNS e DHCP instalados e funcionando. Neste exemplo estaremos utilizando o Debian 9.3.
Veja a disposição dos servidores na rede para explicação do artigo:
Domínio → oliveira.com
Servidor controlador de domínio → 192.168.2.1 serverdc.oliveira.com
Servidor DHCP → 192.168.2.1
Servidor DNS primário → 192.168.2.1
Desktop cliente → cltvirtual (Distribuição: Debian 9.3 Stretsh)
Nota: Para editar os arquivos de configuração você pode escolher qual editor padrão deseja usar. Neste artigo iremos utilizar o editor “vi” como padrão.
1) EDIÇÃO DO ARQUIVO /etc/hosts.
Em nossa máquina “cltvirtual” que pretendemos colocar no domínio, entre no arquivo “/etc/hosts“ e adicione o complemento do domínio junto ao host da máquina cliente.
Opcional: Também adicione o endereço de ip do servidor controlador de domínio, este procedimento ajuda na resolução de nomes, pois já estamos setando diretamente quem será o controlador.
127.0.0.1 cltvirtual.oliveira.com cltvirtual localhost 192.168.2.1 serverdc.oliveira.com
Após realizarmos a alteração, execute o seguinte comando com parâmetro: “hostname -f“. O resultado do comando irá mostrar o nome da máquina completo, junto com o domínio informado.
2) INSTALAÇÃO DE PACOTES NECESSÁRIOS.
apt-get install krb5-user krb5-config winbind samba samba-common smbclient cifs-utils libpam-krb5 libpam-winbind libnss-winbind ntp
Durante a instalação do “kerberos“, pode ser perguntado algo relacionado ao KDC, mas ignore e pressione ENTER. Trataremos deste assunto no decorrer do artigo.
3) SINCRONIZANDO DATA/HORA COM O CONTROLADOR DE DOMÍNIO.
Para que possamos ser autenticados pelo controlador de domínio é de primordial importância que estejamos sincronizados com a data e a hora do mesmo. No Linux é possível realizar este procedimento de forma automática, configurando um serviço de “NTP“.
Acesse o arquivo de configuração “/etc/ntp.conf” e nas linhas do arquivo onde o conteúdo começa com a palavra “pool“, comente estas linhas com uma cerquilha “#“, e adicione o conteúdo conforme ilustrado abaixo, salve e saia do arquivo.
# pool 0.debian.pool.ntp.org iburst # pool 1.debian.pool.ntp.org iburst # pool 2.debian.pool.ntp.org iburst # pool 3.debian.pool.ntp.org iburst #Controlador de Dominio server 192.168.2.1 restrict 192.168.2.1
Realizar o restart do serviço “NTP“. Como estamos utilizando Debian 8, o mesmo já possui um novo sysinit chamado “systemD“, para que possamos restartar um serviço devemos utilizar o seguinte comando:
(Restarta o serviço)
systemctl restart ntp.service
ou (Para e inicia o serviço)
systemctl stop ntp.service systemctl start ntp.service
(Verifica status do serviço)
systemctl status ntp.service
Caso esteja utilizando versões anteriores do Debian, ou uma outra distribuição que esteja baseada em outro sysinit como por exemplo o “systemV” antecessor do “systemD“, utilize o seguinte comando:
(Reinicia o serviço)
/etc/init.d/ntp restart
ou (Para e inicia o serviço)
/etc/init.d/ntp stop /etc/init.d/ntp start
Nota: Para sistemas que possuem outros sysinit’s como o Ubuntu que possue o “upstart“, consulte a página da distribuição para maiores esclarecimentos.
4) EDIÇÃO DO ARQUIVO “/etc/resolv.conf”.
No ambiente apresentado estamos considerando que a máquina cliente “cltvirtual” esta recebendo IP através de um serviço DHCP startado no servidor controlador de domínio “serverdc“. Caso não esteja utilizando o serviço DHCP, é possível setar os servidores de nomes “DNS” no arquivo “/etc/resolv.conf” conforme ilustrado abaixo.
# Generated by NetworkManager search oliveira.com nameserver 192.168.2.1
5) CONFIGURAÇÃO KERBEROS.
Para que o usuário consiga autenticar-se no controlador de domínio iremos utilizar um protocolo de autenticação de redes chamado kerberos. O controlador de domínio com o serviço de Active Directory instalado já possui por default um KDC (Controlador de domínio Kerberos) apto para autenticar este tipo de protocolo. Iremos então editar o arquivo “/etc/krb5.conf” e realizar as configurações conforme ilustrado abaixo. Salve e saia do arquivo.
[logging] Default = FILE:/var/log/krb5.log [libdefaults] ticket_lifetime = 24000 clock-skew = 300 default_realm = OLIVEIRA.COM dns_lookup_realm = true dns_lookup_kdc = true [realms] OLIVEIRA.COM = { kdc = serverdc.oliveira.com default_domain = oliveira.com admin_server = serverdc.oliveira.com } [domain_realm] .oliveira.com = OLIVEIRA.COM oliveira.com = OLIVEIRA.COM [login] krb4_convert = true krb4_get_tickets = false
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 31-01-2017 18:15:56 01-02-2017 00:55:49 krbtgt/OLIVEIRA.COM@OLIVEIRA.COM
6) CONFIGURANDO O SAMBA.
Também antes de ingressarmos a máquina cliente “cltvirtual” no domínio é necessário realizar algumas configurações preliminares no Samba. Neste artigo já estamos utilizando o Samba 4, alguns parâmetros estão sendo disponibilizados, mesmo que não sejam necessários para o artigo em questão. Estes padrões são úteis caso deseje compartilhar informações de sua máquina cliente, ou transforma-la em um servidor de arquivos. Faça uma copia de segurança do arquivo “/etc/samba/smb.conf” de sua máquina e crie um novo arquivo conforme conteúdo ilustrado abaixo.
[global] workgroup = OLIVEIRA server string = Maquina Cliente netbios name = CLTVIRTUAL realm = OLIVEIRA.COM #veto files = /*.exe/*.bat/*.inf/*.pif/ #==================== Log do Samba =======================. log file = /var/log/samba/samba.log os level = 2 preferred master = no max log size = 50 debug level = 1 #==================== Autenticação =======================. security = ads encrypt passwords = yes # password server = 192.168.2.1 allow trusted domains = yes #================ Configuração WINBIND ===================. winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind use default domain = yes winbind refresh tickets = yes template shell = /bin/bash template homedir = /home/%D/%U client use spnego = yes domain master = no #================ Configuração LINKSIMBOLICO =============. unix extensions = no wide links = yes
Após configurado o arquivo “smb.conf“, reinicie o serviço do Samba e do Winbind.
OBS: Iremos utilizar o padrão “systemD” conforme ilustrado no item 3 deste artigo.
(Restarta o serviço)
systemctl restart winbind.service systemctl restart smbd.service
ou (Para e inicia o serviço)
systemctl stop winbind.service systemctl start winbind.service systemctl stop smbd.service systemctl start smbd.service
(Verifica status do serviço)
systemctl status winbind.service systemctl status smbd.service
7) CORRIGINDO ERRO WINBIND.
Diferentemente do Debian 8 – Jessie, no Debian 9 – Stretsh, vamos precisar realizar um procedimento diferenciado, você deve ter reparado que ao reiniciar os serviços, o Winbind não iniciou. Para corrigir o problema precisamos realizar uma pequena alteração em nosso /etc/samba/smb.conf.
Acesse novamente o arquivo smb.conf e altere a seguinte linha conforme ilustrado abaixo.
security = ads
Para
security = user
Salve, saia do arquivo e reinicie os serviços Samba e Winbind.
systemctl restart winbind.service systemctl restart smbd.service
Repare que agora os dois serviços foram iniciados com sucesso. Feito isso, volte nas configurações do arquivo smb.conf e retorne a configuração conforme ilustrado abaixo.
security = user
Para
security = ads
Salve e sai do arquivo, porém desta vez, reinicie somente o Samba conforme ilustrado abaixo.
systemctl restart smbd.service
Feito isso já podemos passar para o próximo passo e ingressar nossa máquina cliente no domínio.
8) INGRESSANDO A MÁQUINA CLIENTE NO DOMÍNIO.
Agora que nossas configurações estão corretas, podemos ingressar a máquina no domínio conforme comando ilustrado abaixo.
net ads join -U administrador
Nota: A conta passada para este comando precisa ter poderes de ingressar máquinas no domínio. Em nosso exemplo, foi utilizado a conta “administrador” do domínio.
Após executar o arquivo será retornado uma informação parecida com a ilustrada abaixo.
Using short domain name - OLIVEIRA Joined 'CLTVIRTUAL' to realm 'OLIVEIRA.COM'
Agora vamos testar se o controlador de domínio está respondendo. Utilizando os seguintes comandos:
net ads testjoin
Se tudo correr bem o sistema responderá:
Join is OK
Também vamos testar utilizando o seguinte comando:
wbinfo -t
Se tudo correr bem o sistema responderá:
checking the trust secret for domain OLIVEIRA via RPC calls succeeded
Feito isto, precisamos testar e verificar se já conseguimos buscar os grupos e usuários do controlador de domínio conforme o seguinte comando a seguir:
(Lista de usuários do domínio)
wbinfo -u
(Lista de grupos do domínio)
wbinfo -g
Nota: Caso não seja possível trazer alguma das duas listas informadas, reinicie o “winbind” novamente. Se mesmo assim não conseguir executar os comandos com sucesso, volte o artigo e analise os passos anteriores refazendo a configuração, provavelmente algo passou despercebido.
Também é possível utilizar outros dois comandos para realizar a verificação, mas a diferença é que trazem a informação dos usuários e grupos locais, seguidos dos usuários e grupos do domínio.
(Lista usuários Local/Domínio)
getent passwd
(Lista grupos Local/Domínio)
getent group
Caso queira retirar a máquina do domínio utilize o seguinte comando:
net ads leave -U administrador
Nota: Após a integração da máquina cliente ao domínio, os serviços Samba e Winbind poderão ser reiniciados sem nenhum problema.
9) EDIÇÃO DO ARQUIVO “/etc/nsswitch.conf”.
Como agora estamos trabalhando com usuários e grupos do domínio, precisamos informar ao sistema que desejamos trabalhar com o “winbind” para procurar nossas informações de login. Para isso, é necessário editar duas linhas no arquivo “/etc/nsswitch.conf“, conforme ilustrado abaixo.
7 passwd: compat winbind 8 group: compat winbind
Após editar o arquivo, realize o restart do serviço “Winbind” e “Samba” conforme demonstrado no item “6” deste artigo.
Seu sistema já esta no domínio e apto para uso.
10) DETALHES DEBIAN.
Para as distribuições Debian é necessário realizar uma alteração no arquivo “/etc/pam.d/common-session“. Esta alteração faz o diretório home de cada usuário ser criado automaticamente no inicio de cada sessão após a autenticação do usuário, setando as permissões para os arquivos e diretórios com a “umask 0022” e obtendo do diretório “/etc/skel” seus sub-diretórios e arquivos padrões.
Após o linha que contém:
session required pam_unix.so
Inclua:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
CONCLUSÃO
Neste artigo foi demostrado como colocar uma máquina baseada na distribuição Debian 9 – Stretch no domínio de forma correta.
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
35 respostas
Muito bom você está de parabéns, ajudou bastante…
Vlw Andvagner.
Olá Rafael,
Tenho uma dúvida, depois que coloco a maquina no domínio, quando vou alterar a senha de um usuário local da erro e apresenta o seguinte erro, “passwd : Erro de manipulação de token de autenticação”. Estou o comando padrão para alterar senha, lembrando que são usuários locais.
Agradeço o apoio
Olá Rafael, estou sim. Na verdade desativei o usuário administrador e criei outro por segurança, todas as máquinas que tenho no domínio uso este usuário que criei, somente com linux que estou tendo problema.
Bom dia Pedro, esse erro esta relacionado a permissão de conta. Faça um teste, ative a conta administrador e use ela para colocar no domínio. Faça o teste.
muito bom, foi o que consegui chegar mais longe.
Porém travei nessa parte de adicionar ao domínio, volta o erro ‘Failed to join domain: failed to lookup DC info for domain ‘ARAUJO.LOCAL’ over rpc: Access denied’.
Já revisei todo o conteúdo, saberia me dizer o que pode ser?
Pinga normal no servidor pelo nome e pelo domínio.
Bom dia Pedro! Que bom que o artigo serviu para você. Agora uma pergunta, você está utilizando uma conta com poder de administrador de domínio? Para que você ingresse uma máquina no domínio é necessário utilizar uma conta que tenha poderes para isso.
Att,
Erro : kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) Debian 9
Primeiramente parabéns pelo artigo me ajudou bastante! Consegui ingressar a máquina no domínio, os testes retornam mensagens de êxito, consigo mudar o dono das pastas para os usuário do meu AD, porém não consigo mudar o grupo das pastas para os grupos que tenho em meu AD, usando o chgrp, sempre aparece a mensagem chgrp: invalid group: ‘GrupoDoAD’ . Tem ideia do que pode ser? Muito obrigado
Obs: Estou usando um container LXC do debian 9
Que bom que pude ser útil, fico feliz por isso. Neste caso ai de uma revisada no krb5.conf, e verifique também se está tudo correto no winbind. Restart os dois serviços Samba e Winbind. Também verifique se o nome do grupo ou a sintaxe do comando esta correto.
Att,
Bom dia, me ajudou bastante, utilizo distro Mint 18.03 e funcionou, porem, ainda não consigo entrar com meu usuario do AD, como faço?
Bom dia Gerlandio! Que bom que o artigo ti ajudou, fico feliz por isso. Cara, referente ao seu problema não terei como lhe ajudar, pois somente instalando um Mint para verificar o que está acontecendo e no momento não disponho deste tempo. Futuramente tento realizar uma instalação e trago aqui no blog algumas informações. Att,
Opa!
Excelente Tutorial, mas estou tendo problemas ao inserir meu debian no domínio, ao colocar o seguinte comando net ads join -U administrador
aparece:
Failed to join domain: failed to join domain ‘MEU.DOMINIO’ over rpc: The directory service was unable to allocate a relative identifier.
Caso possa solucionar meu problema agradeço!
Boa tarde Hugo!
Revise os passos 4,5,6,7, esta mensagem é comum quando o Kerberos está configurado de forma errada, provavelmente o nome do domínio que definiu no arquivo. Verifique também se o seu controlador esta acessível “ping”, além de conferir as demais configurações. Espero ter ajudado. Att,
Boa noite!
Consegui solucionar o problemas. O meu DC estava com alguma especie de BUG por utilizá-lo apos ter suspendido ele no VMware, apos reiniciá-lo consegui inserir o Debian no domínio sem nenhum erro
Obrigado pela atenção!
Que bom Hugo, fico feliz por ter conseguido. Precisando só falar, abr.
Cara… Excelente artigo! Ajudou muito.
Vlw Cleonilson! Que bom que pude ajudar. Abr.
Cara muito obrigado ajudou bastante!
Só tenho uma duvida quanto a questão do compartilhamento do linux para o windows se tiver algo que pode me ajudar. Sei que tenho que usar o samba porem estou com algumas duvidas nas permissões, para permitir apenas para um grupo especifico do AD.
Bom dia Diego! Fico feliz em poder ajudar. Sobre a questão do servidor de arquivos, ainda não tenho um artigo disponível tratando exclusivamente destas opções de configuração do samba. Mas da uma olhada no artigo: “Configurando Auditoria e Lixeira no Samba” aqui eu falo sobre a configuração de auditoria e lixeira do samba. O detalhe é que ali eu demonstro como vincular permissão de grupos e usuários do AD indiretamente. O segredo de uma configuração correta e primeiramente colocar o Linux no domínio, como ilustrado aqui neste artigo. Após isso, utilize os grupos e usuários do AD na configuração do samba. É importante lembrar que as pastas compartilhadas também devem possuir permissão para os grupos e usuários do AD a serem utilizados. Siga o blog, em breve disponibilizarei um artigo para tratar o assunto. Abr.
Obrigado! Pode deixar que vou seguir sim, vou testar aqui.
Parabéns irmão, sanou demais minhas dúvidas e deu tudo certo! Show de bola.
Massa Jailson! tmj. Abr.