Ingressar desktop GNU/Linux no domínio Active Directory

O objetivo do artigo é mostrar como ingressar um desktop com as distribuições Debian no domínio Active Directory do Windows Server 2012.

Publicidade

Os procedimentos foram testado no Debian 7.

Pré-requisitos e finalidade de cada um para o trabalho
Antes de começar a trabalhar, é necessário saber quais são os serviços que o desktop com o sistema GNU/Linux precisa ter rodando para ingressar no domínio. Abaixo descrevo os serviços:

Kerberos
Winbind
Samba

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).

O Active Directory faz uso deste serviço para autenticação em rede, logo, as máquinas clientes terão que ter informações do KDC (Centro de Distribuição de Chaves) para autenticar-se no Active Directory.

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.

O Samba até a versão 3, que é a que será usada nesse artigo, é um serviço cuja principal função é disponibilizar recursos compartilhados em uma rede, tais como arquivos e impressoras. Mas será usado para autenticação de usuários no servidor onde está rodando devido o winbind depender do mesmo.

O mesmo faz uso de dois serviços, são NMB e SMB.

O serviço NMB tem a principal finalidade de resolução de nomes NetBIOS para que o servidor Samba possa enxergar e ser enxergado pelas outras máquinas. Então, este serviço permite a navegação pela rede, usando os hostnames das máquinas e o acesso às mesmas em rede.

O serviço SMB permite compartilhar tais recursos e autenticar os usuários no servidor Samba local, ou repassa as solicitações de autenticação para outro computador, como um servidor controlador de domínio com o Active Directory.

Considerações de ambiente de rede
No ambiente proposto no artigo, já existem os servidores DNS em execução na rede, pois, para a autenticação ser feita, é necessário o uso do DNS e o servidor com Active Directory configurado como controlador de domínio principal já instalado e funcionando.

Veja a disposição dos servidores na rede para explicação do artigo:

Domínio → fcm.unicamp.br
Servidor DNS primário → 143.106.46.46
Servidor DNS Secundário → 143.106.2.5
Servidor controlador de domínio → 143.106.46.3 angelim.fcm.unicamp.br

Como os clientes serão configurados pelo serviço DHCP, só especificarei o nome da máquina cliente:

Desktop cliente → nti98

__________________________________________

Arquivo /etc/hosts, instalação de pré-requisitos e Kerberos
Arquivo /etc/hosts
Nesta parte iremos editar o arquivo /etc/hosts incluindo uma alias para o endereço do controlador de domínio e alterar o hostname do desktop cliente (nti98), acrescentando o fqdn, ou seja, o nome do domínio junto ao hostname da máquina cliente.

No entanto, substitua os nomes abaixo pelos correspondentes na sua rede.

# vim /etc/hosts

Conteúdo a ser acrescentado:

127.0.0.1       nti98.fcm.unicamp.br    localhost   nti98     #Computador local
143.106.46.3    angelim.fcm.unicamp.br    angelim

Observe que “winactive” é nome do controlador de domínio usado no artigo, troque pelo nome do controlador de domínio de sua rede. Execute o comando abaixo para ver o nome da máquina completo, ou seja, o hostname com o nome do domínio da máquina cliente:

# hostname -f

________________________________________

Instalação de pacotes necessários
Para que o desktop GNU/Linux possa migrar no domínio, é necessário fazer a instalação dos seguintes pacotes descritos a seguir, lembrando que os pacotes abaixo, são para distros Debian like:

# apt-get install krb5-user krb5-config winbind samba samba-common smbclient cifs-utils libpam-krb5 libpam-winbind libnss-winbind

Durante a instalação do kerberos, vai ser apresentado algumas telas com perguntas referentes ao KDC, mas pode dá um ENTER e seguir com a instalação dos pacotes, pois a configuração do kerberos será abordada mais a frente.

Serviço NTP – Sicronizando data e hora com o servidor
Para que a máquina cliente possa comunicar-se sem problemas com o controlador de domínio Windows Server, é necessário que o horário e data de ambas as máquinas estejam sincronizadas. Para isso, teremos que configurar o cliente NTP para atualizar data e hora pelo servidor Active Directory.

Edite o arquivo de configuração do serviço NTP usando o Vim:

# vim /etc/ntp.conf

Nas linhas do arquivo onde o conteúdo começa com a palavra “server”, comente estas linhas com uma cerquilha “#”, e adicione o seguinte conteúdo:

# Controlador de domínio #
server 143.106.46.3
restrict 143.106.46.3

Veja que ambos os endereços são do controlador de domínio. Agora, reinicie o serviço de data e hora:

# /etc/init.d/ntp stop
# /etc/init.d/ntp start

O Ubuntu usa o Upstart, então, para reiniciar o serviço é diferente. Para uma leitura mais abrangente, leia o conteúdo desse link:

Upstart e a configuração dos serviços no Ubuntu « www.hardware.com.br

Se não estiver usando um serviço DHCP, edite o arquivo /etc/resolv.conf indicando os endereços dos servidores de nome, como mostrado abaixo:

# vim /etc/resolv.conf

search fcm.unicamp.br
nameserver 143.106.46.46
nameserver 143.106.2.5

Substitua os endereços acima e o nome do domínio informado pelos endereços de seus servidores DNS e o nome do seu domínio na rede onde está configurando a máquina cliente.

kerberos
Para um usuário autenticar-se no Active Directory, é necessário editar o arquivo /etc/krb5.conf e incluir informações sobre o servidor KDC (controlador de domínio kerberos). Nesse caso, o controlador de domínio com o Active Directory possui um KDC. Use o Vim para editar o arquivo e inclua as seguintes linhas no arquivo:

# vim /etc/krb5.conf

Conteúdo acrescentado (eu apaguei tudo que tinha e coloquei estes parâmetros):

#inicio do arquivo
[libdefaults]
default_realm = FCM.UNICAMP.BR
[realms]
FCM.UNICAMP.BR  =  {
kdc  =  angelim.fcm.unicamp.br
default_domain  =  FCM.UNICAMP.BR
admin_server  =  angelim.fcm.unicamp.br
}

[domain_realm]
.fcm.unicamp.br = FCM.UNICAMP.BR

#fim do arquivo

Explicação da configuração
Este arquivo é organizado em seções. As seções inclusas para autenticação no domínio são listadas abaixo junto com suas sub-seções:

[libdefaults] → Seção que contém valores padrão para o Kerberos V5, nessa seção só deixei uma única sub-seção, explicada a seguir.
default_realm → Esta sub-seção identifica o domínio padrão a ser usado pelo cliente kerberos.
[realms] → O kerberos divide a rede em domínios seguros, chamados de “realms”, então esta seção contém sub-seções informando nomes de “realms” do Kerberos, informando onde encontrar os servidores Kerberos para domínios seguros específicos e outras informações.

Neste caso, criei uma sub-seção chamada de “MISTOLI.NET”, que é referente ao domínio seguro no qual a máquina irá ingressar. E dentro, criei as seguintes sub-seções:
kdc → Aqui se configura o nome da máquina que está executando o controlador de domínio do kerberos mestre, como o controlador de domínio rodando o Active Directory está executando o KDC, então inclui o nome completo da máquina aqui.
default_domain → Nesta sub-seção se especifica o domínio seguro padrão.
admin_server → Esta sub-seção identifica o host onde o servidor que faz administração do kerberos está sendo executado.

[domain_realm] → Seção que indica os mapas de domínios e sub-domínios.

Depois de configurar o kerberos, vamos testar a comunicação entre o servidor e desktop. Execute o comando abaixo, no exemplo estou usando o nome “administrator”, que é um usuário do domínio criado, mas substitua pelo nome do usuário que estiver cadastrado no servidor.

# kinit adminitrator

Se o comando não retornar nenhuma saída, é porque a comunicação está sendo realizada com sucesso. Agora vamos listar o ticket obtido nessa comunicação usando o comando:

# klist

O comando klist deverá retornar uma saída como a que está abaixo:

Ticket cache: FILE:/tmp/krb5cc_10215_nfXG8b
Default principal: administrator@FCM.UNICAMP.BR

Valid starting       Expires              Service principal
30-03-2015 13:42:20  30-03-2015 23:42:25  krbtgt/FCM.UNICAMP.BR@FCM.UNICAMP.BR
renew until 31-03-2015 13:42:20

_______________________________________

Configurando Samba, ingressando máquina no domínio e arquivo /etc/nsswitch.conf
Configurando o Samba
Antes de colocar a máquina no domínio, é necessário configurar o Samba para que seja possível à máquina ingressar no domínio. Toda configuração é feita no /etc/samba/smb.conf, o Winbind não precisa configurar pois o mesmo é um daemon usado pelo Samba.

Edite o arquivo /etc/samba/smb.conf com Vim:

# vim /etc/samba/smb.conf

Inclua as seguintes linhas no arquivo “smb.conf”, caso algumas dessas linhas já estejam dentro do arquivo, edite e deixa-as como está abaixo. O arquivo está bem comentado com explicações dos principais parâmetros (Apague tudo que tem e coloque as configurações a seguir):

# Inicio do arquivo
[global]
security = ads
realm= FCM.UNICAMP.BR
workgroup = FCM
idmap uid = 10000-15000
idmap gid = 10000-15000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
winbind use default domain = yes
restrict anonymous = 2
winbind refresh tickets = yes

#Fim do arquivo

Observe que nem todos os parâmetros são necessários para ingressar a máquina no domínio. Depois de editar, salve as alterações e reinicie os serviços do Samba e Winbind.

# service winbind restart
# service samba restart

No Ubuntu, reinicie da seguinte forma:

# service winbind restart
# restart smbd
# restart nmbd

Ingressando a máquina no domínio
Depois de configurar o Samba, é hora de ingressar a máquina no domínio com o comando net. Execute o comando abaixo como root:

# net ads join -U administrator

Veja que usei a opção “-U” no comando net, seguido do nome do usuário com permissão de ingressar máquinas no domínio, o usuário Administrador foi usado. Após a execução do comando, deverá retornar uma mensagem como que está abaixo:

Using short domain name – FCM
Joined ‘MINTVIRT’ to realm ‘FCM.UNICAMP.BR’

Agora, faça o teste e liste os grupos e usuários do domínio com o comando wbinfo. Para listar usuários execute:

# wbinfo -u

Para listar os grupos execute:

# wbinfo -g

Caso não retorne nenhum nome de usuário ou grupo, reinicie o Winbind.

__________________________________________________
Arquivo nsswitch.conf
Depois ingressar a máquina no domínio, vamos configurar o arquivo /etc/nsswitch.conf para que o sistema possa saber onde buscar informações de login dos usuários que estão se autenticando. É neste arquivo que iremos comunicar ao sistema que ele deve procurar nossas informações de login usando o Winbind.

Edite o arquivo usando o Vim e deixando as linhas abaixo como demonstrado. Em seguida, salve as alterações:

# vim /etc/nsswitch.conf

Conteúdo alterado:

passwd: compat winbind
group: compat winbind

Veja que, como estamos lidando com usuários, grupos e senhas, apenas alteramos as linhas que correspondem aos mesmos, estamos informando ao sistema que ele deve procurar nossas informações de login usando o Winbind nas linhas:

“passwd: compat” para senha
“group: compat” para group

_________________________________________________

Alguns detalhes e esclarecimentos
Muitos howtos encontrados na Internet mostram configurações adicionais desnecessárias, fazendo alterações em vários arquivos de autenticação do PAM. Mas a maioria destas configurações não são necessárias, pois ao instalar os pacotes Winbind e o pacote que contém as bibliotecas do kerberos, o próprio sistema se encarrega de alterar os arquivos sem qualquer intervenção dos usuários, com exceção de um arquivo.

O único arquivo que se faz necessário a intervenção do usuário é o /etc/pam.d/common-session (em distros Debian like).

Então, edite o arquivo /etc/pam.d/common-session e após linha abaixo:

session required pam_unix.so

Inclua esta:

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

A linha mencionada anteriormente 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.

Fonte e mais informações: http://www.vivaolinux.com.br/artigo/Ingressar-desktop-GNU-Linux-no-dominio-Active-Directory-do-Windows-Server-2008/?pagina=1