sexta-feira, 14 de maio de 2010

Integração com winbind - Ingressando estação Linux a um dominio Windows AD

A Necessidade da Integração:

Mesmo que sua empresa opte por uma migração completa, ela não poderá ser realizada da noite para o dia, gerando (mesmo que temporariamente) um ambiente de rede heterogêneo, onde servidores e estações com ambos os sistemas deverão conviver com o menor impacto possível sobre as atividades da empresa.

Onde trabalho já coloquei diversas estações Linux(precisamente distros CentOs) no servidor de dominio windows server 2003. Abaixo descrevo passo à passo com realizar este procedimento e você terá sucesso no join de sua estação Linux ao servidor de dominio windows utilizando o winbind que faz o papel de middleware neste cenário de integração.

A configuração abaixada foi realizada utlizando a distro CentOS, ou seja, derivação RedHat:

1 – CONFIGURAÇÃO DA REDE:

Edite o arquivo /etc/sysconfig/network e coloque as linhas:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=WKSSINAUXOPE001.EMPRESA.SDR

Altere as configurações do arquvivo /etc/hosts:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
#::1 localhost6.localdomain6 localhost6
10.0.0.60 WKSSINAUXOPE001.EMPRESA.SDR WKSSINAUXOPE001
# ACIMA COLOQUE O ENDEREÇO IP DO SERVIDOR DO DOMINIO E AO LADO COLOQUE O NOME DA MAQUINA LINUX, NÃO ME PERGUNTE PORQUE MAS SE VC MAPEAR O ENDEREÇO IP DO SERVIDOR PDC COM SEU NOME CORRESPONDENTE NÃO FUNCIONA! VAI ENTENDER NÉ?

Configuração do DNS (resolver)

a.Edite o arquivo /etc/resolv.conf e coloque as informações referentes ao domínio que você criou no w2003:

nameserver 10.0.0.60
domain empresa.sdr
search empresa.sdr

b.Teste

# ping  srvpdc1tecnotrsdr

# dig empresa.sdr NS


2 - CONFIGURAÇÃO DO KERBEROS

a.Edite o arquivo /etc/krb5.conf e coloque as linhas abaixo, porém comente algumas linhas que são de exemplo no do arquivo padrão diferentes das que estão aqui listadas.

[libdefaults]
default_realm = EMPRESA.SDR
dns_lookup_realm = false
dns_lookup_kdc = false
clockskew=11001

[realms]
EMPRESA.SDR = {
kdc = srvpdc1tecnotrsdr.empresa.sdr:88
admin_server = srvpdc1tecnotrsdr.empresa.sdr:749
default_domain = empresa.sdr
}

[domain_realm]
.empresa.sdr = EMPRESA.SDR
empresa.sdr = EMPRESA.SDR

→ O arquivo final ficará parecido a este:

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

[libdefaults]
default_realm = EMPRESA.SDR
dns_lookup_realm = false
dns_lookup_kdc = false
clockskew=11001

[realms]
EMPRESA.SDR = {
kdc = srvpdc1tecnotrsdr.empresa.sdr:88
admin_server = srvpdc1tecnotrsdr.empresa.sdr:749
default_domain = empresa.sdr
}

[domain_realm]

.empresa.sdr = EMPRESA.SDR
empresa.sdr = EMPRESA.SDR

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

3 - CONFIGURAÇÃO DO SAMBA:

a.Faça uma copia do /etc/samba/smb.conf e crie um novo com o conteúdo abaixo. Fazendo as devidas correções:

Deve ser instalados esses pacotes do samba(não necessariamente nestas versões):

samba-common-3.0.33-3.7.el5_3.1
samba-3.0.33-3.7.el5_3.1
samba-client-3.0.33-3.7.el5_3.1

[global]

security = ADS
password server = 10.0.0.60
realm = EMPRESA.SDR
workgroup = EMPRESA
server string = WKSSINAUXOPE001
encrypt passwords = yes
name resolve order = wins lmhosts bcast
wins server = 10.0.0.60

winbind separator = /
winbind cache time = 7200
idmap uid = 10000-30000
winbind gid = 10000-30000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
template shell = /bin/bash
winbind use default domain = yes

4 - COLOCANDO A MÁQUINA NO DOMINIO:

a.Acerte o horario da máquina com o servidor AD (lembra do kerberos?), o kerberos não irá aceitar autenticação de estações com atrasos superiores a 5 minutos.


# net time set -I 10.0.0.60

b.Inicie o Kerberos

→ Não necessariamente administrador, essa conta pode ser uma conta do domínio que seja do grupo operadores de conta:

# kinit administrador

Autenticou? Caso não. Reveja o processo.

c.Cadastre a máquina a dominio

→ Não necessariamente administrador, essa conta pode ser uma conta do domínio que seja do grupo operadores de conta:

# net ads join -U administrador


Que retorno você obteve?

5 - TESTE O SAMBA E O WINBIND:

a.Inicie o serviço do winbindd


# /etc/init.d/winbind start

b.Teste se o winbind está trazendo as contas do AD

# wbinfo -u


6 - FAÇA A CPNFIGURAÇÃO DO PAM E DO NSS PARA FAZER A INTEGRAÇÃO DE AUTENTICAÇÃO

a.Edite o arquivo /etc/nsswitch.conf e modifique as linhas de acordo com o exemplo baixo:

passwd: files winbind
shadow: files winbind
group: files winbind


→ O arquivo final ficará parecido a este:

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus or nis+ Use NIS+ (NIS version 3)
# nis or yp Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis

passwd: files winbind
shadow: files winbind
group: files winbind



#hosts: db files nisplus nis dns
hosts: files dns

# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files

netgroup: nisplus

publickey: nisplus

automount: files nisplus
aliases: files nisplus

b.Teste

# getent passwd

c.Edite o arquivo /etc/pam.d/system-auth conforme abaixo. Adicione as linhas abaixo nas seções auth, account e session:

auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

→ O arquivo final ficará parecido a este:

auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_succeed_if.so uid < retry="3" skel="/etc/skel/" umask="0022" success="1" default="ignore]">@localhost

Pronto se tudo ocorreu com deveria sua estação linux estar dentro do dominio Windows. Existe outras maneiras de inserir sua estação a um dominio Windows como por exemplo utilizando ldap do linux ou o pacote gráfico likewise AD no Ubuntu, mas ai já fica a critério e necessidade de cada um...

4 comentários:

  1. maravilha.. testado e funcionando.

    ResponderExcluir
  2. Funcionou beleza! Só tomei uma canseira pra instalar todos os pacotes necessários, precisei consultar em outras documentações pela web. Tem como incluir isso pra ficar ainda mais didático? Parabéns pelo conhecimento.

    ResponderExcluir
    Respostas
    1. Renatinho, primeiramente obrigado pelo seu comentário. Bom saber que esse post foi util para você. Com certeza meu caro, pode enviar pra mim essas revisões que fez para meu e-mail? Daí ajusto o post para melhora-lo. Meu e-mail é leonardocoutoc@gmail.com. Obrigado mais uma vez.

      Excluir

Seguidores