De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Permitindo a usuários Windows-ADS a logar em uma máquina Linux

Colaboração: Henrique Cicuto Machado

Data de Publicação: 17 de Novembro de 2005

Os procedimentos abaixo descritos forem testados e estão atualmente em operação em máquinas rodando a distribuição Linux Fedora Core 3 em uma rede Active Directory Windows 2000.

No final do documento existem algumas observações extras sobre algumas seções.

Introdução

Apesar da grande maioria das empresas que adotaram, em qualquer aspecto, o uso do Linux atualmente se utilizarem de servidores Linux e estações Windows (senão uma rede completamente Linux), existem aquelas (a minha, por exemplo) que resolveram adotar máquinas Linux dentro de uma rede Windows.

Esse foi meu primeiro grande projeto trabalhando com Linux, e digo que ter que fazer isso sozinho não foi nada fácil. Então resolvi escrever esse pequeno tutorial sobre como implementar esse tipo de solução. Espero que possa ajudar alguém.

Instalação

A instalação é bem simples, sendo necessários apenas os seguintes pacotes:

  1. Suíte SAMBA (samba, samba-common, samba-client)
  2. PAM (Pluggable Authentication Modules)
  3. Kerberos (krb5-libs e krb5-workstation)

Configuração

Agora vamos iniciar a configuração dos arquivos. Segue abaixo uma breve legenda para os exemplos:

  • DC01 = É o meu controlador de domínio da rede Windows. IP: 192.168.0.2
  • WS01 = É a minha estação de trabalho Linux
  • KDOMAIN.SP = É o meu domínio Windows
  • Admin = É o meu usuário Administrador da rede Windows

1) Kerberos (krb5.conf): Altere as seções 'realms' e 'domain_realms' para ficarem similares as abaixo.

  [realms]
  KDOMAIN.SP = {
  kdc = 192.168.0.2
  default_domain = kdomain.sp
  }
  
  [domain_realms]
  .kdomain.sp = KDOMAIN.SP
  kdomain.sp = KDOMAIN.SP

Cheque a configuração obtendo um ticket do Kerberos. Execute numa linha de comando:

  kinit Admin@KDOMAIN.SP
  Password for Admin@KDOMAIN.SP:

Entre com a senha e pressione Enter. Se não aparecer nenhuma mensagem quer dizer que funcionou. Cheque o ticket com o comando 'klist'. A saída deve ser algo mais ou menos como abaixo:

  Ticket cache: FILE:/tmp/krb5cc_10000_YwFfS0
  Default principal: Admin@KDOMAIN.SP
  
  Valid starting     Expires            Service principal
  08/23/05 09:30:00  08/23/05 19:30:04  krbtgt/KDOMAIN.SP@KDOMAIN.SP
  renew until 08/24/05 09:30:00
  
  
  Kerberos 4 ticket cache: /tmp/tkt10000
  klist: You have no tickets cached

2) SAMBA (smb.conf): A configuração do SAMBA pode variar muito de rede para rede, mas as opções necessárias estão listadas aqui.

  [global]
  
  netbios name = WS01
  server string = WS01
  socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  realm = KDOMAIN.SP
  workgroup = KDOMAIN
  security = ads
  password server = *
  encrypt passwords = yes
  winbind separator = +
  winbind use default domain = yes
  winbind use default domain = yes
  winbind enum users = yes
  winbind enum groups = yes
  idmap uid = 10000-60000
  idmap gid = 10000-60000
  template shell = /bin/bash
  template homedir = /home/%U

Agora execute o comando 'net' para adicionar a máquina Linux como parte da rede Windows:

net ads join

A saída do comando será algo como assim:

  [2005/08/23 09:51:33, 0] libads/ldap.c:ads_add_machine_acct(1405)
  Using short domain name -- KDOMAIN
  Joined 'WS01' to realm 'KDOMAIN.SP'

Agora suba os daemons do SAMBA (smbd e nmbd) e do Winbind (winbindd). Cheque a comunicação do Winbind através dos comandos 'wbinfo -u', 'wbinfo -g' e 'wbinfo -t'. O primeiro deverá listar os usuários do Windows, o segundo os grupos e o terceiro deverá devolver a mensagem 'checking the trust secret via RPC calls succeeded'.

3) PAM: No diretório do pam, nós iremos alterar o system-auth. Uma observação importante aqui: No Fedora, esse arquivo afeta o login pelos terminais texto e pelo KDM. Apesar de ter tentando, eu admito que não consegui fazer essa alteração para fazê-la funcionar no GDM ou no XDM. Abaixo é uma cópia do meu system-auth. Outra observação importante: Quando eu fui configurar esse arquivo, percebi que havia sido criado, automaticamente, um system-auth-winbind. Caso ele exista, basta renomeá-lo para system-auth.

  auth        sufficient    /lib/security/pam_winbind.so
  auth        required      /lib/security/$ISA/pam_env.so
  auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
  auth        required      /lib/security/$ISA/pam_deny.so
  
  account     sufficient    /lib/security/pam_winbind.so
  account     required      /lib/security/$ISA/pam_unix.so
  account     sufficient    /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
  account     required      /lib/security/$ISA/pam_permit.so
  
  password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3
  password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5shadow
  password    sufficient    /lib/security/pam_winbind.so use_authtok
  password    required      /lib/security/$ISA/pam_deny.so
  
  session     required      /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
  session     required      /lib/security/$ISA/pam_limits.so
  session     required      /lib/security/$ISA/pam_unix.so

4) Nsswitch (/etc/nsswitch.conf): Apenas acrescente nas linhas 'passwd', 'shadow' e 'group' a entrada para o winbind:

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

Agora é só correr para o abraço. Tente efetuar o login com seu usuário da rede Windows.

Observações:

  1. Caso opte por compilar os pacotes a partir do source, não esqueça de ativar, no SAMBA, os suportes a 'ldap, 'ads', 'pam', 'krb5' e 'winbind' (smbmount também é recomendável).

  2. É possível que, ao tentar obter o ticket do Kerberos ou ao adicionar a máquina no domínio, surja um erro sobre 'Clock skew too great'. Isso se refere a diferença muito grande de horário entre o Controlador de Dominio e a estação Linux. Acerte o relógio e o calendário caso isso ocorra.

  3. Por favor, quaisquer dúvidas ou criticas me falem. Meu e-mail é <henrique cicuto (a) gmail com>.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Henrique Cicuto Machado