Linux integrado ao Microsoft Active Directory

Se você é um profissional de infraestrutura de redes ou de segurança, sabe da importância em manter um ambiente de computadores e usuários gerenciados por uma solução centralizada. Neste cenário, uma das ferramentas mais utilizadas é o Microsoft Active Directory (o famoso “AD”), que permite fazer o gerenciamento de usuários, computadores e permissões de acesso aos recursos da rede.

O AD é um serviço do Microsoft Windows Server e, logicamente, o Windows (versão Professional do 7 ou 10, por exemplo) é totalmente integrado à ele. O macOS (OS X) também possui uma opção nativa para esta integração. Com alguns cliques você adiciona um usuário e integra, facilmente, um Windows (PC) ou um Mac a uma rede gerenciada pelo AD.

Para integrar um computador com Linux ao AD, a dificuldade era sempre maior. Era preciso fazer a instalação de vários pacotes e efetuar uma série de alterações em arquivos e configurações do sistema. No final, nem sempre dava totalmente certo (eu, por exemplo, sempre tive problemas com a opção de “múltiplos logins” – funcionalidade comum em um notebook). Esta dificuldade virou passado com o projeto CID (Closed In Directory), um pacote (conjunto de scripts) que permite a inserção e gerenciamento de sistemas Linux no AD.

Neste artigo, demonstrarei como integrar o sistema Linux Ubuntu 18.04 ao Microsoft Active Directory do Windows Server 2016 usando o CID 1.0.5 e 1.0.6, do baiano Eduardo Moraes.

Ambiente e configuração da rede

No ambiente utilizado, o DHCP da rede já entrega a todos os dispositivos conectados (seja via cabo ou wireless) as configurações de rede padrão, sendo o DNS primário o endereço IP do servidor principal (PDC) do Active Directory (Windows Server) e o DNS secundário (opcional), o endereço IP do servidor auxiliar do Active Directory (BDC), conforme pode ser observado abaixo:

Informações da conexão de rede wireless do Ubuntu

Preparando o Linux Ubuntu

Inicialmente, como boa prática, a recomendação é efetuar uma atualização geral do sistema operacional e seus pacotes. Para isso, use os comandos abaixo:
# sudo apt-get update
# sudo apt-get upgrade

Feito isso, adicione o repositório do CID:
# sudo add-apt-repository ppa:emoraes25/cid && apt update
*Tecle Enter para confirmar.

Instalando o CID

Com o repositório adicionado ao sistema operacional, basta um comando para instalar o CID e todos os pacotes necessários (samba, kerberos, winbind e outros) para a correta integração de um host Linux ao AD:

# sudo apt install cid cid-gtk

Durante o processo, o instalador do Kerberos solicitará o domínio da sua rede (domínio do Active Directory). Insira este dado com todas as letras maiúsculas, conforme exemplo abaixo:

Neste exemplo usamos o domínio fictício “dom.local” e o host “151 / br151”

Inserindo o Linux no domínio do Active Directory

Após a conclusão do processo de instalação, você poderá abrir o CID via linha de comando (# cid-gtk), ou através da interface gráfica:

cid-gtk

No CID, insira as informações do domínio da sua rede, como por exemplo:
Select: Join the Domain
Domain: dom.local (utilizado neste exemplo)
OU: vazio (unidade organizacional do AD)
User: administrator (use algum usuário administrador do seu AD, sem @ ou /)
Passwd: ******* (senha do usuário administrador do seu AD)
Mode: default

Aguarde o processo de inserção (joining) e a mensagem confirmando que o host foi corretamente inserido no domínio (WELCOME to the domain “dom.local”). Ao clicar em OK o CID concluirá algumas configurações, que podem demorar alguns minutos. Aguarde a mensagem de sucesso e então reinicie seu sistema (processo obrigatório).

Feito isso, já será possível logar no Linux com os usuários disponíveis no AD (Uhuuu!). A cada login com um novo usuário, o sistema criará um perfil exclusivo (interface e estrutura de diretórios) para este usuário, assim como no Windows e Mac.

Confirmando a inserção do host

Abrindo o CID você poderá confirmar que o host está integrado ao AD, além de ter acesso a outras funções interessantes.

No exemplo, o host br151 está devidamente conectado ao dominio “dom.local

No Active Directory (Windows Server), o objeto do host estará na OU padrão Computers:

Computador cadastrado no Active Directory

Como permitir que um user comum do AD seja root no Linux

Uma função bem comum para usuários que são desenvolvedores (programadores) é permitir que ele seja administrador / root do seu próprio sistema operacional. Para isso, acesse o sistema Linux com algum usuário root ou administrador no AD e abra o CID. Na opção Manage domain accouts in local groups / Add account / User ou Group, entre com o nome do usuário que deseja tornar root do host.

CID – Gerenciando usuários do domínio em grupos locais

Esta configuração não tornará o usuário administrador no AD (no domínio), somente no sistema operacional local (Linux Ubuntu).

Você pode verificar a configuração que o CID aplicou neste usuário visualizando o arquivo /etc/groups (o usuário adicionado estará em vários grupos locais do Linux).

Arquivos de configurações

Conforme já citado, o CID é um conjundo de scripts que fazem todo o processo necessário para a integração de um sistema operacional Linux ao Active Directory. É possível observar algumas destas configurações acessando alguns arquivos, como:
/etc/hosts – arquivo padrão para configuração de DNS/FQDN;
/etc/krb5.conf – arquivo padrão de configuração do Kerberos;
/etc/samba/smb.conf – arquivo padrão de configuração do Samba;
/etc/nsswitch.conf – arquivo padrão do Network Services Switch;

Arquivo de entrada de nomes: /etc/hosts
Arquivo de configuração do Kerberos: /etc/krb5.conf
Arquivo de configuração do Samba: /etc/samba/smb.conf

Note nas imagens acima a informação que os arquivos foram editados pelo CID, porém, uma cópia do seu estado original foi copiado para o diretório /var/lib/cid/backups.

Instalação manual do CID e pacotes necessários

No exemplo acima, a instalação do CID foi efetuada via repositório (apt install cid). Caso você precise efetuar o processo de maneira “manual”, siga as instruções abaixo:

1 – Faça o download do CID em sua página oficial;
# wget https://sourceforge.net/projects/c-i-d/files/cid-1.0.6.tar.gz
2 – No terminal, vá ao diretório onde o arquivo foi salvo (exemplo: ~/Downloads)
# cd ~/Downloads
3 – No diretório, descompacte o arquivo do CID:
# tar -xzvf cid
4 – Execute o instalador do CID com o comando:
# ./INSTALL.sh
O instalador informará quais dependências (pacotes) estão faltandos no sistema para o seu correto funcionamento. Neste exemplo, usei um computador com o Ubuntu original, ou seja, sem nenhum dos pacotes necessários, portanto, abortei o instalador do CID.
5 – Para instalar os pacotes necessários, execute:
# apt install samba winbind cifs-utils cups smbclient libpam-mount libpam-winbind libnss-winbind
6 – Para instalar o Kerberos, execute:
# apt install krb5-user keyutils
*Lembre-se que durante o processo de instalação do Kerberos é preciso inserir o dominio da sua rede com todas as letras em maiúsculas, conforme exemplo acima.
7 – Execute, novamente, o instalador do CID com o comando:
# ./INSTALL.sh
*Desta vez, ele não informará nenhuma dependência já que todos os pacotes necessários já foram instalados.

Feito isso, basta abrir o CID e continuar com o processo de integração (inserção do Linux no AD), como descrito neste artigo, acima.

Testes efetuados com o host Linux integrado ao AD

Abaixo estão alguns dos testes efetuados no cenário descrito neste tutorial (Ubuntu + Active Directory 2016 + CID 1.0.6):

  • Logando com múltiplos usuários: Foi possível logar com qualquer usuário do AD, inclusive usando as opções de login/logout e a troca de usuário. A lista dos usuários já logados no sistema aparece alguns segundos após o carregamento da tela de login. *Caso não apareça, clique em “Not listed / Não listado”, na tela de login do Ubuntu.
  • Confirmando permissões de acesso (user x admin / root): Ao logar com um user comum do AD, não foi possível efetuar nenhuma alteração no sistema – ao tentar (instalação de um software, por exemplo), o sistema solicitou a senha de algum user local “root”. Ao logar com um user administrador do AD, ele recebe permissões de “root” do sistema, podendo efetuar alterações e instalações.
  • Login remoto (domínio inalcançável): Foi possível usar o equipamento normalmente estando fora da rede local. No login, o sistema informa que o domínio está fora de alcance. *No Ubuntu, observou-se um compartamento curioso: quando desconectado da rede, a lista de usuários do AD só é exibida após cerca de 90 segundos depois da tela de login ser carregada.
  • Erros de login (bloqueio de acesso): Estando na rede local, o login foi bloqueado, normalmente, ao errar a senha várias vezes (políticas de acesso – ACL / GPO) e o sistema, inclusive, informou que a conta foi bloqueada. Estando fora da rede, o sistema não travou (bloqueou) ao errar a senha várias vezes.
  • Login bloqueado ou suspenso: Com o user bloqueado por erros de senha ou suspenso pelo administrador do domínio, não foi possível efetuar login no host (dispositivo). Somente após o desbloqueio ou ativação o login foi realizado.
  • Alteração de senha: A alteração de senha no dispositivo só foi possível via comando passwd. Não foi possível alterar através da interface gráfica do Ubuntu (solicita senha de root local).
  • Redefinir senha no próximo login: Com o administrador do domínio forçando esta opção, o user precisou trocar sua senha ao efetuar login no host (dispositivo).

*Com informações de: SourceForge – CID, Eduardo Moraes no Linkedin – Nova versão do CID.
*Agradecimento especial ao Danilo Cordeiro pelas dicas na execução deste ambiente.

Leave a Reply