Autenticando Linux (Ubuntu 9.04) no AD (Windows Server 2003)

Autor: Vicente Santos <vicente.cts at gmail.com>
Data: 25/11/2009

Introdução

Algum tempo atrás precisei autenticar o Linux
no AD no trabalho, foi onde começou o meu problema, procurei tutoriais
na internet mas não conseguia de maneira nenhuma logar o Ubuntu 9.04 no
Active Directory. Depois de muitas pesquisas e de muitos testes
consegui e venho aqui compartilhar com alguém que esteja na mesma
situação.

Nesta situação foi usado como cliente o Ubuntu 9.04 e como servidor o Windows 2003 Server.

Para começar são necessários alguns dados sobre sua rede e seu domínio. Para este artigo assumi os seguintes dados:

  • Nome do grupo/domínio (nome o qual é reconhecido o domínio "workgroup") = dominio
  • Nome do domínio (nome utilizado para adicionar as máquinas Windows no domínio) = dominio.vov
  • Nome do kerberos "realm" (mesmo nome do domínio sendo maiúsculo) = DOMINIO.VOV
  • Nome da máquina com servidor (hostname da máquina com AD) = servidor
  • Nome da máquina cliente (hostname da máquina local) = cliente
  • IP do servidor AD = 192.168.0.2

Pacotes necessários são:

  • Kerberos (será usado como protocolo de autenticação)
  • Winbind (será usado para fazer relações de confiança entre domínios e os smbd e nmbd)
  • Samba (usado para fazer a comunicação entre Linux e Windows)

Vamos instalar as dependências usando apt-get:

# apt-get install krb5-user samba winbind

Alterando arquivos .conf

Os arquivos abaixo devem ser alterados de acordo com sua rede.

Adicione no arquivo /etc/resolv.conf:

search dominio.vov
nameserver 192.168.0.2

Adicionar ao arquivo /etc/hosts:

192.168.0.2   servidor.grupo.vov servidor

Modificar no arquivo /etc/nsswitch.conf:

	passwd:         compat winbind
group: compat winbind
shadow: compat winbind

Acrescentar algumas linhas e modificar outras já existentes em /etc/kbr5.conf:

[logging]
default=FILE:/var/log/krb5libs.log
kdc=FILE:/var/log/krb5kdc.log
admin_server=FILE:/var/log/kadmind.log

[libdefaults]
#As linhas abaixo devem ser adicionadas abaixo de [libdefaults]
default_realm = DOMINIO.VOV
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[realms]
#As linhas abaixo devem ser adicionadas abaixo de [realms]
DOMINIO.VOV = {
kdc = servidor.dominio.vov
admin_server = servidor.dominio.vov
default_domain = DOMINIO.VOV
}

[domain_realm]
#As linhas abaixo devem ser adicionadas abaixo de [domain_realm]
.dominio.vov = DOMINIO.VOV
dominio.vov = DOMINIO.VOV

Após fazer as configurações acima, executar os seguintes comandos para testar o Kerberos.

Sincronizando horário:

# ntpdate 192.168.0.2

Testando o Kerberos:

# kinit Usuário_do_Dominio@DOMINIO.VOV

Se não aparecer nenhuma mensagem de erro, funcionou! Digite o próximo:

# klist

Deve aparecer o texto abaixo:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: usuário@DOMINIO.SEU
Valid starting Expires Service

16/10/09 14:12:30 16/10/09 13:12:34 krbtgt/DOMINIO.VOV@DOMINIO.VOV
RENEW UNTIL 16/10/09 13:35:22

Principais erros possíveis:

  • Hora do cliente não está sincronizada com a hora do servidor;
  • Nome do domínio não está maiúsculo.

De acordo com o Kerberos, são o únicos erros que relatei.

Configurando Samba, mudando autenticação e reiniciando serviços

Alterando arquivo de configuração do Samba (/etc/samba/smb.conf):

workgroup = dominio
max log size = 50
security = ads
password server = servidor.dominio.vov
realm = DOMINIO.VOV
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/bash
template homedir = /home/%U
winbind use default domain = true
winbind enum users = yes
winbind enum groups = yes
winbind separator = +

Arquivo /etc/pam.d/common-account (deixar apenas as linhas abaixo):

account sufficient pam_winbind.so

account required pam_unix.so

Arquivo /etc/pam.d/common-auth (deixar apenas as linhas abaixo):

auth sufficient pam_winbind.so

auth required pam_unix.so nullok_secure use_first_pass

Arquivo /etc/pam.d/common-session (acrescentar a linha abaixo):

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

Agora vamos adicionar a máquina ao seu domínio usando o comando abaixo:

# net ads join -U administrador

Reiniciando os serviços na seguinte ordem:

# /etc/init.d/samba stop
# /etc/init.d/winbind stop
# /etc/init.d/samba start
# /etc/init.d/winbind start

Depois digite o próximo comando para testar, ele deve mostrar os usuários do AD:

# wbinfo -u

Após essas alterações, é só reiniciar a máquina e você estará no domínio.

Vicente Junior

Fontes:


http://www.vivaolinux.com.br/artigo/Autenticando-Linux-(Ubuntu-9.04)-no-AD-(Windows-Server-2003)

Um comentário sobre “Autenticando Linux (Ubuntu 9.04) no AD (Windows Server 2003)

  1. Muito bom seu tutorial.
    Só estou com um problema. Depois que reinicio não aparece o meu usuario da rede para logar. Fica apenas o meu usuario local.
    Como posso alterar isso?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s