Autenticação Ubuntu 10.04 LTS no Active Directory (Windows 2008)
Este tutorial descreve o caminho das pedras para incluir uma estação/servidor Linux Ubuntu em um domínio Active Directory Windows (2000, 2003 ou 2008).
A solução utiliza Samba e Winbind e mostra os passos para que usuários possam se logar na estação Linux usando suas credenciais do Active Directory (AD). É sugerida ainda a criação de um grupo no AD para incluir usuários com privilégios de administrador de estações Linux podendo usar o sudo para executar comandos como root.
Este post faz parte do tutorial Proxy Squid no Ubuntu com autenticação NTLM no Windows 2008 e regras baseadas em Grupos do AD.
Pré-Requisitos
- Estação/Servidor com Linux Ubuntu 10.04 LTS ou superior instalado.
- Servidor de DNS configurado (/etc/resolv.conf) e apontando para um servidor de DNS do domínio Active Directory
- Privilégios de administrador (root) no Linux instalado.
- Domínio Active Directory baseado em Windows 2000, 2003 ou 2008 já instalado e operando.
- Credenciais com privilégios suficientes para inclusão de computador no domínio AD pré-existente.
- Opcional: credenciais com privilégios para criação de grupos no AD
Tutorial
Recomendo atualizar seu Ubuntu, antes de começar, utilizando os comandos abaixo:
sudo apt-get update sudo apt-get dist-upgrade
Reinicie o computador para que o novo kernel seja atualizado (se necessário).
sudo reboot
Instale os pacotes libkrb5-3, krb5-config, samba, winbind e ntp utilizando o comando abaixo:
sudo apt-get install libkrb5-3 krb5-config samba winbind ntp
Pare os serviços samba e winbind:
sudo service smbd stop sudo service winbind stop
Limpe a pasta de cache do samba:
sudo rm -rf /var/lib/samba/*
Configure o Kerberos alterando o conteúdo do arquivo /etc/krb5.conf pelo apresentado abaixo.
Lembre-se de substituir DOMINIO.COM.BR e dominio.com.br pelo nome FQDN de seu domínio Active Directory nas linhas em destaque. Troque também servidor pelo nome DNS de um servidor controlador de domínio de sua floresta.
[libdefaults]
default_realm = DOMINIO.COM.BR
ticket_lifetime = 24000
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
DOMINIO.COM.BR = {
kdc = servidor.dominio.com.br:88
admin_server = servidor.dominio.com.br:749
default_domain = dominio.com.br
}
[domain_realm]
.dominio.com.br = DOMINIO.COM.BR
dominio.com.br = DOMINIO.COM.BR
[login]
krb4_convert = true
krb4_get_tickets = false
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
Edite o arquivo /etc/ntp.conf e substitua a linha server informando o nome de seu domínio. Você pode apontar para um servidor NTP de sua rede ou outro qualquer de preferência.
server dominio.com.br
Reinicie o serviço ntp e verifique se a data e hora estão corretos:
sudo service ntp restart date
Configure o Samba/Winbind, editando o arquivo /etc/samba/smb.conf e substituindo seu conteúdo conforme abaixo.
Lembre-se de substituir HOSTNAME pelo nome de seu servidor linux e alterar DOMINIO, DOMINIO.COM.BR e dominio.com.br para o FQDN de seu domínio nas linhas em destaque. Troque também servidor pelo nome DNS de um servidor controlador de domínio de sua floresta..
[global] realm = DOMINIO.COM.BR workgroup = DOMINIO netbios name = HOSTNAME server string = %h server security = ads allow trusted domains = no idmap config DOMINIO: default = yes idmap config DOMINIO: backend = rid idmap config DOMINIO: readonly = yes idmap config DOMINIO: range= 1000000-10000000 idmap alloc config: range = 1000000-10000000 idmap uid = 1000000-10000000 idmap gid = 1000000-10000000 template shell = /bin/bash template homedir = /home/%U winbind use default domain = yes winbind enum users = yes winbind enum groups = yes winbind nested groups = yes load printers = no domain master = no preferred master = no domain logons = no wins support = no wins proxy = no dns proxy = no password server = servidor.dominio.com.br #Compartilhamento Home [homes] comment = Compartilhamento Home browseable = no writable = yes read only = no create mask = 0664 directory mask = 0775
Substitua o conteúdo do arquivo /etc/nsswitch.conf pelo abaixo, para configurar o Linux para considerar o winbind para senhas e grupos.
passwd: compat winbind group: compat winbind shadow: compat hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Para que estas configurações (nsswitch) tenham efeito, execute o comando ldconfig:
sudo ldconfig
Ajuste o nome do host no arquivo /etc/hosts conforme abaixo, alterando nome-do-host e dominio.com de acordo com o hostname de seu Linux e o FQDN de seu domínio:
127.0.0.1 localhost 127.0.0.1 nome-do-host.dominio.com nome-do-host
Se o computador estiver utilizando DHCP, ajuste o nome do host para que seja registrado automaticamente no DNS, incluindo as linhas abaixo no arquivo /etc/dhcp3/dhclient.conf. Lembre-se de alterar nome-do-host e dominio.com de acordo com o hostname de seu Linux e o FQDN de seu domínio.
send host-name "nome-do-host.dominio.com"; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope, interface-mtu;
Adicione o Linux no dominio executando o comando abaixo. Substitua usuário pela sigla de um usuário com privilégios para adicionar computadores no domínio.
sudo net ads join -U usuario
Sua senha será solicitada. O resultado da execução será algo semelhante ao abaixo:
Enter usuarios's password: Using short domain name -- DOMINIO Joined 'HOSTNAME' to realm 'dominio.com.br' DNS update failed!
Não se preocupe com a mensagen DNS update failed!. Ela aparecerá se o seu dominio não estiver configurado para aceitar atualizações de DNS não autenticadas. Simplesmente ignore esta mensagem.
Inicie os serviços samba e winbind:
sudo service smbd start sudo service winbind start
Verifique se a resolução de nomes esta funcionando corretamente. Caso não esteja reveja os passos realizados acima.
wbinfo –u wbinfo –g wbinfo –i usuario
Se tudo está funcionando corretamente, configure a autenticação do Linux, alterando os arquivos abaixo. Provavelmente o conteúdo já estará correto. Apenas certifique-se de que está tudo OK e altere o que estiver diferente.
Alternativamente você pode fazer estas configurações de forma automática executando o comando abaixo:
sudo pam-auth-update
Conteúdo do arquivo /etc/pam.d/common-account:
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so account requisite pam_deny.so account required pam_permit.so
Conteúdo do arquivo /etc/pam.d/common-auth:
auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass auth requisite pam_deny.so auth required
Conteúdo do arquivo /etc/pam.d/common-session. Será necessário incluir a linha destacada, conforme abaixo. Esta alteração irá criar a pasta home do usuário automaticamente no primeiro logon.
session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session optional pam_winbind.so
Se você quiser restringir o acesso via SSH para um grupo de usuários, crie um grupo global no AD e inclua os usuários permitidos a acessar o servidor Linux neste grupo, por exemplo administradores_linux. Altere o arquivo /etc/ssh/sshd_config e inclua no final do mesmo a seguinte linha:
AllowGroups admin administradores_linux
O grupo admin é opcional e permite o logon dos usuários locais que estão no grupo admin. Por padrão o primeiro usuário criado no Ubuntu no momento da instalação terá este privilégio.
Como boa prática de segurança, evite que o root faça logon via ssh, atlerando a linha abaixo no arquivo /etc/ssh/sshd_config:
PermitRootLogin no
Se desejar você pode incluir a linha abaixo no arquivo /etc/sudoers para permitir que os usuários membros do grupo administradores_linux possam executar comandos com privilégios de root.
%administradores_linux ALL=(ALL) ALL
Espero que o artigo tenha sido útil. Em caso de problemas é só postar nos comentários.
-
Referências
- Ubuntu 8.04 autenticando no AD do Windows Server 2003
- Integrating Squid and Samba3 with NTLM authentication
- Integrando autenticação do Squid ao Active Directory


Olá
Agradeço pelo link. Este procedimento funciona mas tem alguns inconvinientes. Dê uma olhada neste: http://blogdovicente.com/2010/08/03/linux-bsd-aix-solaris-mac-os-e-hp-ux-logando-em-dominio-windows/
Abraços.