DevSecOps

25 abr, 2014

Configuração e gerenciamento de Active Directory no Linux

Publicidade

Por Marcel Gagné

Por diversas vezes sugeri que nós, da comunidade do código aberto, não tenhamos que trabalhar com a Microsoft. Eles é que devem ser forçados a trabalhar conosco. Acontece que, também sou um realista e alguém que trabalha no mundo real, onde sistemas de desktop Windows são a regra, não a exceção.

Embora o meu escritório tenha meia dúzia de computadores desktop Linux, é bem provável que o mesmo não aconteça no escritório ao lado. O Windows ainda tem uma grande presença nos departamentos de TI das empresas. Apesar das vantagens óbvias do Linux, muitos precisam se mover facilmente ou pelo menos fazer um intercâmbio de informações entre essas duas plataformas.

No entanto, os desktops Linux não são a curiosidade que costumavam ser. As empresas vêm considerando cada vez mais o uso de estações de trabalho Linux, e algumas pessoas até conseguem permissão para usar o Linux em suas estações de trabalho em vez do Windows. Seja qual for a razão, os administradores de sistemas Linux, por vezes, precisam configurá-lo para participar de um grupo de trabalho ou domínio Windows, para acessar arquivos, impressoras ou outros recursos compartilhados. Em um ambiente maior e mais seguro, servidores do Active Directory podem estar presentes.

Figura 1: O Dolphin confere os recursos de rede.

Truques gráficos

O software cliente Samba, necessário para acessar os recursos do Windows, normalmente vem como parte da instalação padrão das distribuições Linux mais modernas. Caso você esteja usando KDE ou Gnome como ambiente de trabalho, pode estar certo que todas as ferramentas necessárias para acessar os recursos do Windows estão à sua disposição, apesar de que, alguns dos recursos mais avançados podem não estar instalados.

No gerenciador de arquivos Dolphin do KDE, na barra lateral do lado esquerdo, encontram-se alguns dos locais de armazenamento básico em seu sistema, incluindo o seu diretório home, o root e a mídia fixa ou removível conectada ao seu computador. Além disso, há um item chamado Network (Rede).

Para ver qualquer recurso de rede já conectado e os meios para acessar outros, clique no ícone Network (figura 1). Para ver o sistema Windows e compartilhamentos, clique no ícone Samba Shares. Os servidores Samba [1] ou as máquinas Windows anunciando compartilhamento de rede serão exibidas primeiro na janela do navegador, abaixo de seu nome de grupo de trabalho (como contabilidade ou vendas). Clique no nome do grupo de trabalho, e serão mostrados os computadores clientes, impressoras, dispositivo de rede e tudo o que estiver disponível na rede Windows. Para ler, escrever e usar os arquivos compartilhados nesses computadores, clique na pasta correspondente. Todos os diretórios compartilhados disponíveis estarão visíveis (figura 2). Daqui para frente, é o clássico arrastar e soltar dos gerenciadores de arquivos gráficos. Os passos para acessar os compartilhamentos do Windows no Gnome são similares. Para começar, execute o Nautilus clicando em Places no painel superior do Gnome e selecionando network. Quando o Nautilus abrir, haverá uma pasta chamada Windows Network. Clique nela duas vezes para ver os domínios ou grupos de trabalho do Windows na sua rede (figura 3).

Figura 2: Uma vez conectado, a navegação é feita como em qualquer gerenciador de arquivo básico.

Agora, basta clicar em algum dos grupos de trabalho para selecionar um computador. Então, na lista de computadores, clique duas vezes no que foi escolhido e comece a navegar nos recursos individuais. Saiba que, ocasionalmente, é possível que um nome de usuário e uma senha sejam solicitados para o acesso a um computador ou mesmo uma pasta.

Simples login

Nos ambientes Windows mais modernos, particularmente em grandes organizações, a autenticação é um pouco mais complicada. Com centenas de máquinas e possivelmente milhares de usuários, as empresas geralmente recorrem a algum tipo de sistema de autenticação central, preferivelmente algo que possua a capacidade single sign-on (simples login).

Dada a presença quase onipresente do Windows nas empresas, a tarefa desse tipo de autenticação central fica geralmente a cargo de um servidor Windows com o Active Directory Domain Services da Microsoft.

O Active Directory oferece um sistema de serviço de diretório similar ao LDAP, com autenticação e criptografia Kerberos, DNS e mais algumas coisas. Para acessar os recursos dos ambientes do Active Directory, seu computador Linux precisa entrar no Active Directory.

Kerberos

Como sempre acontece no mundo do código aberto, o problema para se conectar ao Active Directory tem sempre mais de uma solução.

Primeiro, a mais trabalhosa. Mas, antes de pensar em pular esta parte completamente e passar para a solução mais simples, é bom saber que a solução mais difícil é a mais flexível. Ela oferece um grau de controle que não existe de outra maneira, e é um caminho para entender o que de fato acontece durante todo o processo.

O Kerberos é um protocolo de autenticação poderoso que usa criptografia baseada em chave secreta. Apesar de existir várias variações do Kerberos (incluindo a da própria Microsoft) por aí, veremos a versão de código aberto.

Figura 3: Rede Windows no Nautilus.

No meu sistema de teste, usei um sistema com Ubuntu 9.10. Na instalação, vários pacotes estão faltando, portanto, o primeiro passo é instalá-los:

apt‑get install krb5‑user libpam‑krb5 krb5‑config libkadm5clnt6

Para serviços de domínios e autenticação de senhas, essa é provavelmente uma boa hora para se certificar de ter incluído seu endereço IP no arquivo /etc/hosts nos vários hosts com os quais serão feitas conexões. Por exemplo:

172.16.59.21 adserver.realm.mydomain.dom

Além disso, certifique-se de ter acesso a todas as máquinas. Se puder dar um ping nos vários hosts, provavelmente tudo está correto.

O Kerberos depende de uma conexão de rede consistente. Para que funcione corretamente, os clientes e servidores devem estar devidamente sincronizados. O protocolo de rede (NTP) oferece essa sincronia de dados de tempos em tempos nos sistemas Linux. É quase certo que seu sistema já tenha o pacote ntpdate, portanto, basta configurá-lo para que ele pegue o tempo do controlador do Active Directory. Edite o arquivo de configuração /etc/default/ntpdate e faça as seguintes mudanças:

NTPSERVERS="adserver.realm.mydomain.dom"

Reinicie, então o NTP.

/etc/init.d/ntpdate restart

Até aqui, tudo bem. Daqui para frente, será preciso configurar o Kerberos. Ao instalar o pacote krb5config, será necessário passar por uma sessão de perguntas e respostas sobre seu realm padrão e se seu DNS contém ponteiros para os vários hosts. Esse é um ótimo caminho para criar sua configuração inicial, mas há muita informação que pode ser considerada desnecessária. Além disso, é possível apenas editar o arquivo /etc/krb5.conf conforme mostra a (listagem 1).

A listagem 2 confirma que agora poderemos obter um ticket Kerberos do servidor AD. Para liberar o ticket, use kdestroy

Se conseguir obter o ticket do servidor, saberá que o Kerberos está funcionando.

Samba

Agora é a hora do Samba. Como já sabemos, o Samba é uma suíte de programas de código aberto que possibilitam ao desktop ou ao servidor Linux o acesso e o uso de arquivos e impressoras em uma rede Windows. Em um servidor, o Samba oferece esses serviços aos clientes Windows, efetivamente assumindo o posto do servidor Windows. De fato, o Samba pode funcionar como um servidor Active Directory, mas isso é assunto para um outro artigo. Para usar o Samba para atender as necessidades do cliente Active Directory, instale os seguintes pacotes:

apt‑get install winbind samba smbclient smbfs nfs‑common

Os dois últimos pacotes são opcionais, mas úteis caso seja preciso montar suas pastas de rede usando SMB ou NFS.

O principal arquivo de configuração do Samba está normalmente em /etc/samba/smb.conf (a menos, é claro, que outro caminho tenha sido especificado). Não será necessário mexer em todo o arquivo; o básico é mostrado na listagem 3.

Figura 4: Mesmo em uma rede Windows ou Samba simples, é possível que algum tipo de autenticação seja necessária.

Enfatizamos que a configuração exibida na listagem 3 é básica. Um número imenso de parâmetros pode ser usado para configurar o Samba e o daemon de autenticação winbind, que suporta o login do Linux em recursos Windows. Muitos desses parâmetros são padrão, o que não quer dizer que eles sejam usados. Caso se interesse, digite testparm -v para conferir sua configuração e achar possíveis erros, mas o -v também devolve uma lista completa de todos os parâmetros que são padrão.

Antes de iniciar o Samba e o Winbind, edite o arquivo /etc/nsswitch.conf e procure as linhas passwd e group. A grande mudança aqui é adicionar winbind às linhas passwd e group:

passwd: files winbind
group: files winbind
shadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files

Então, inicie os serviços Samba e Winbind:

sudo /etc/init.d/samba start
sudo /etc/init.d/winbind start

E agora, o momento pelo qual todos esperávamos. Hora de se juntar ao domínio: para ver se tudo está funcionando corretamente, use algumas ferramentas que já estão presentes no pacote Winbind.

Para obter uma lista de usuários do domínio, digite wbinfo -u. Devido do grande número de usuários, é possível que esse processo demore um pouco. O resultado deve ser uma lista semelhante a essa:

user1
user2
user3
user4

Do mesmo modo, é possível listar os grupos com wbinfo -g, cujo resultado seria mais ou menos esse:

engineering_group
financial_group
humanresources_group

Particularmente, se o número de usuários do Active Directory for muito grande, acredito que seria interessante fazer mais uma modificação no arquivo smb.conf. Nessas circunstâncias, a enumeração de usuários e grupos pode exigir um grande desempenho da máquina, o que acarretaria timeouts, falhas de login e outros aborrecimentos. A mudança é de fácil implementação:

winbind enum users = no
winbind enum groups = no
Figura 5: A configuração GUI do Likewise Open facilita tudo.

Até o momento, já conseguimos e conversar com o servidor Active Directory, mas ainda temos que configurar a autenticação. Essa última parte acontece com o PAM (Plugable Authentication Module) Os arquivos que precisam ser editados estão no diretório /etc/pam.d. O seguinte comando instala alguns módulos adicionais para suporte PAM:

apt‑get install libpam‑mount libpam‑encfs

Esses módulos oferecem suporte para que o PAM possa montar compartilhamentos de rede, como NFS ou CIFS, usando sistemas de arquivos criptografados. Para completar a configuração, será necessário editar alguns arquivos. A listagem 4 mostra algumas configurações dos arquivos common‑auth, common‑account e common‑session.

Likewise

O Likewise Open [2], baseado no Winbind, facilita a configuração e a preparação de um desktop Linux para se juntar a um domínio Active Directory. Os usuários do Mac OS também podem usar o Likewise Open. A Likewise Software oferece uma versão comercial de nível empresarial, além de suporte ao projeto Likewise Open.

O bom do Likewise é que ele consegue fazer todo trabalho descrito anteriormente, com eficiência, apenas com um ou dois passos – sem configurar arquivos e sem a necessidade de pacotes adicionais além dos básicos do Likewise Open. Com uma reinicialização rápida, já é possível aproveitar o single sign-in e trabalhar no Windows e no Linux com seu próprio ID de usuário.

Figura 6: O último passo exige autenticação usando as credenciais do Administrador.

Para baixar tudo que o sistema Linux precisa, visite o site do Likewise Open. Pacotes de 32 e 64 bits estão disponíveis, além de pacotes DEB e RPM. A instalação é só uma questão de dar permissão de execução aos arquivos e executar a instalação. Há um pacote para o Likewise Open básico e outro com interface gráfica. O primeiro, LikewiseIdentityService, é necessário, mas o pacote com interface gráfica é opcional.

Para iniciar, altere os bits executáveis dos dois pacotes, desta forma:

chmod +x Likewise*installer

Depois, continue com a instalação dos pacotes:

sudo LikewiseIdentityServiceOpen‑5.3.0.7724‑linux‑i386‑deb‑installer

Uma vez que isso for feito, há a opção de entrar no Active Desktop usando a linha de comando ou o instalador gráfico. Para acessar seu domínio, execute:

sudo domainjoin‑cli join YOUR.AD.DOMAIN Administrator

A senha do Administrador será solicitada, após o que, assumindo que a informação correta foi inserida, será possível fazer o login. Para usar a versão gráfica do domainjoin, basta executar sudo domainjoin -gui. Uma tela como a da figura 5 será exibida.

Depois, insira o nome completo de domínio no qual deseja entrar e clique no botão Join Domain na base da janela. Então, o login e a senha da conta do Administrador serão pedidos (figura 6).

Certifique-se de digitar a senha corretamente pois ela não é exibida enquanto é digitada. Se tudo correu de acordo com o planejado, o que mais é necessário? A temida reinicialização do sistema (figura 7). Ao reiniciar o sistema, tudo estará pronto para o login usando as credenciais do seu Active Directory. Na figura 8, nós usaremos um gerenciador de login GDM no Ubuntu. Como a conta no AD não existe nesse computador, clique em Other para selecionar um usuário diferente dos que existem nesse computador.

No campo Username, insira o nome do usuário do domínio desse modo:

DOMAIN_NAME/username
Figura 7: Ao entrar no Active Directory e após a configuração, é necessária uma reinicialização.

Quando solicitada, insira sua senha para finalizar o processo. Ao fazer o login com a conta AD pela primeira vez, o diretório home não existe. Sem problemas o sistema irá criá-lo em /etc/skel.

Se preferir, é possível fazer o login com sua conta normal e depois fazer o login na estação de trabalho local com SSH (será necessário ter o servidor openssh instalado, logicamente). Para isso, faça o seguinte:

ssh AD‑DOMAIN\\user_name@localhost

Note as barras duplas, se colocar só uma barra não funcinonará. Quando a senha for solicitada, basta inseri-la.

Como você pode ver, um desktop Linux pode trabalhar dentro de uma rede Windows de várias maneiras. Do compartilhamento do espaço de domínio até ambientes de Active Directory seguros, executar seu Linux em um desktop de PC não quer dizer que não se possa fazer parte da comunidade.

Figura 8: Fazer login no Active Directory usando GDM.

Mais informações

[1] Samba: http://www.samba.org
[2] Likewise Open: http://www.powerbrokeropen.org/

Listagem 1: /etc/krb5.conf

[libdefaults]
default_realm = REALM.MYDOMAIN.DOM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

[realms]
REALM.MYDOMAIN.DOM = {
k dc = adserver.realm.mydomain.dom
k dc = adserver2.realm.mydomain.dom
a dmin_server = adserver.realm.mydomain.dom
}

[domain_realm]
.r ealm.mydomain.dom = REALM.MYDOMAIN.DOM
r ealm.mydomain.dom = REALM.MYDOMAIN.DOM

Listagem 2: Conseguindo um Ticket

root@adilaptop:~# kinit Administrator@REALM.MYDOMAIN.DOM
Password for Administrator@REALM.MYDOMAIN.DOM:

root@adilaptop:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@REALM.MYDOMAIN.DOM

Valid starting Expires Service principal
03/10/10 17:05:06 03/11/10 03:05:20 k rbtgt/REALM.MYDOMAIN.DOM@REALM.MYDOMAIN.DOM
renew until 03/11/10 17:05:06

Listagem 3: /etc/ samba/smb.conf

[globals]
workgroup = AD‐DOMAIN
netbios name = ADILAPTOP
pa ssword server = adserver.realm.mydomain.dom
realm = REALM.MYDOMAIN.DOM
server string = My Linux Test Machine
security = adsidmap uid = 1000‐2000000
idmap gid = 1000‐2000000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = Yes
winbind nested groups = Yes
winbind separator = +winbind refresh tickets = yes
template homedir = /home/%U
template shell = /bin/bash

Listagem 4: Arquivos de configuração PAM

# common‐authauth

sufficient pam_winbind.so
au th sufficient pam_unix.so nullok_secure use_first_pass
auth required pam_deny.so
# common‐account

account sufficient pam_winbind.so
account required pam_unix.so

# common‐session
session required pam_unix.so
session required pam_mkhomedir.so

Artigo originalmente publicado na Linux Magazine 68.