Autenticação de servidores CentOS/Red Hat 6 em Windows 2008

Este artigo foi criado para demonstrar o processo de autenticação de servidores CentOS e Red Hat 6 no Windows 2008, utilizando-se dos recursos de LDAP e Kerberos, e o recurso de NSLCD nos clientes (ao invés do SSSD).

[ Hits: 47.847 ]

Por: Ricardo Katz em 13/08/2012


Introdução - Pré-requisitos



Este artigo foi criado para ensinar a configuração de autenticação de servidores CentOS e Red Hat (versão 6) no Windows 2008.

Diversos artigos encontrados na Internet, fazem uso do Winbind para possibilitar esta autenticação, contudo, como esta configuração depende da instalação do serviço Samba (e consequente abertura de portas, vulnerabilidades, etc), optei por fazer esta configuração utilizando-se apenas do serviço de LDAP, que já é disponibilizado pelo Windows 2008, e pelo serviço Kerberos 5.

Assim, não é necessária a abertura de nenhuma porta nos clientes de autenticação, e caso seja uma autenticação entre redes distintas com firewall, apenas a abertura das portas do LDAP, Kerberos 5 e DNS serão suficientes.

Definições

Estas definições serão utilizadas durante o artigo, e serão explicadas conforme o desenvolvimento do mesmo:
  • Domínio: SPRINGFIELD.CORP (LDAP: DC=SPRINGFIELD, DC=CORP)
  • Hostname do Domain Controller: Homer (HOMER.SPRINGFIELD.CORP)
  • IP do Domain Controller: 192.168.5.151
  • Conta de serviço LDAP: CN=AuthLinux,CN=Users,DC=Springfield,DC=Corp
  • Usuário criado para testes de Logon: rkatz@SPRINGFIELD.CORP
  • Grupo criado com atributos Unix: Linux

Configuração do Windows 2008 (Domain Controller)

Assumindo que o seu Domain Controller já esteja instalado e em funcionamento, as seguintes configurações abaixo deverão ser feitas:

1. Atualização do ambiente

Não é necessariamente um pré-requisito para o correto funcionamento do ambiente, mas recomendo executar um 'Windows Update' no ambiente, apenas por garantia. ;)

2. Instalação do Unix Integration Tools

Para que a autenticação funcione com sucesso, devemos instalar o Unix Integration Tools nos Domain Controllers. Esta nova role cria atributos específicos necessários para a autenticação em Unix/Linux, como Home Directory e Default Shell.
  • Em Server Manager, na aba (lateral esquerda), selecionar 'Roles'.
  • Na seção 'Role Services' da role 'Active Directory Domain Services', adicionar o serviço 'Identity Management for Unix', através do link 'Add Role Services', incluindo todos os demais serviços (Server for Network Information Services, Password Syncronization e Administration Tools).


Criação das contas no DC

Para o correto funcionamento da configuração, devemos criar uma conta de serviço que será utilizada para o BIND (conexão) ao LDAP, uma vez que o Windows 2008 não permite conexão anônima ao LDAP. Também criaremos um grupo e uma conta exemplo, que serão utilizados nos testes de Login.

Conta de serviço

Esta conta deverá ser criada com a política de "não expiração de senha", pois esta senha será utilizada na configuração de todos os clientes. Caso a senha expire, a mesma deverá ser trocada no servidor, e consequentemente em todos os clientes.

* Importante: Lembre-se ao criar esta conta, de que o 'Full Name' da conta criada é utilizada como RDN no LDAP.

Exemplo:
  • FullName=Bart Simpson
  • CN=Bart Simpson
  • CN=Users
  • DC=Domínio.

Assim, recomenda-se criar a conta com um 'Full Name' de uma palavra, como 'AuthLinux', para não haver maiores problemas.

A conta será criada conforme abaixo:
  • FullName: AuthLinux
  • User Logon Name: AuthLinux
  • Senha (exemplo, alterar no seu ambiente): 12qw!@QW
  • Configurações: 'User Cannot Change Password', e 'Password Never Expires'

Após a criação desta conta de serviço, alterar o seu grupo, colocando-o apenas como membro do grupo "Domain Guests" e removendo todos os demais grupos, de forma que este usuário não possua nenhuma permissão no domínio.

Criação do Grupo

Ou, alteração de grupo já existente.

Deve ser criado um grupo (ou alterado um já existente) para que o mesmo possua atributos Unix, possibilitando sua utilização em nosso ambiente. Isso deve ser feito, primeiro criando-se o grupo (caso já não exista) e depois, alterando-o conforme abaixo.

No nosso exemplo, foi criado o grupo "Linux". Após isso, na aba 'Unix Attributes' das propriedades do grupo, alterar o NIS Domain para 'SPRINGFIELD' (ou o Domínio utilizado). Manter o GID criado padrão, e não adicionar nenhum usuário no grupo.

Criação de usuário com permissão de Login

Ou, alteração de usuário já existente.

Um usuário deve ser criado (ou alterado) de forma que possamos efetuar logon em um ambiente Unix. Nesse artigo, será criado o usuário 'rkatz', conforme abaixo:
  • Criar o usuário (ou alterar) desabilitando a opção 'User Must Change Password on Next Logon';
  • Editar o usuário, e na aba 'Unix Attributes' alterar o NIS Domain para 'SPRINGFIELD';
  • Alterar o 'Login Shell' para o Shell padrão utilizado no ambiente (como /bin/bash);
  • E, Primary group Name/GID para o grupo criado acima (Linux).


    Próxima página

Páginas do artigo
   1. Introdução - Pré-requisitos
   2. Configuração do S.O.
   3. Autenticação LDAP
   4. Habilitação de SSL (LDAPs)
Outros artigos deste autor

Criação de um repositório (mrepo) - Red Hat e CentOS 5 (com atualização na RHN para RedHat)

Leitura recomendada

Elaborando uma política de segurança para a empresa

Segurança para iniciantes

Pen-Test com ênfase em WLAN

Instalando e configurando o SpamAssassin

Entendendo o ataque ARP spoofing + SSLStrip

  
Comentários
[1] Comentário enviado por removido em 13/08/2012 - 19:17h

Muito bom o artigo !

[2] Comentário enviado por Tiago_Rc2 em 13/08/2012 - 20:29h

rikatz, boa noite.

Primeiramente parabéns pelo excelente artigo. Sou um iniciante do mundo Linux, e estou tentando enteder como funciona de fato uma estrutura Linux dentro de um dominio AD.

Me tire só umas dúvidas:

Caso eu queria colocar um Centos como servidor de arquivos, você acha isso uma boa prática?

E outra, as permissões a usuários ou grupos, posse fazer isso pelo Centos? é possível?


Grato!

[3] Comentário enviado por Leosousa84 em 14/08/2012 - 08:54h


Tiago,

Seria uma boa prática sim, mais esse servidor terá que ter o samba e o winbind configurado e as permissões serão dadas por acl.


[2] Comentário enviado por Tiago_Rc2 em 13/08/2012 - 20:29h:

rikatz, boa noite.

Primeiramente parabéns pelo excelente artigo. Sou um iniciante do mundo Linux, e estou tentando enteder como funciona de fato uma estrutura Linux dentro de um dominio AD.

Me tire só umas dúvidas:


Caso eu queria colocar um Centos como servidor de arquivos, você acha isso uma boa prática?

E outra, as permissões a usuários ou grupos, posse fazer isso pelo Centos? é possível?


Grato!



[4] Comentário enviado por amandahla em 14/08/2012 - 10:24h

Excelente artigo!

[5] Comentário enviado por rikatz em 14/08/2012 - 21:45h

Thiago,

Primeiramente, bem vindo ao mundo Linux ;)

Colocar um CentOS como servidor de arquivos é relativo. Servidor de arquivos para clientes Windows? Para clientes Linux? Servidor FTP? :)

As permissões de usuários e grupos funcionam sim, mesmo com a autenticação via AD / LDAP. O que acontece na prática é que o Windows 2008 + atributos extendidos do AD acabam dando um 'UID / GID' para os usuários e grupos unico, e uma vez que esses identificadores são dados aos usuários, podem ser utilizados internamente no servidor para permissionamento :)

Espero ter mais tirado dúvidas que gerado elas ;)




[3] Comentário enviado por Leosousa84 em 14/08/2012 - 08:54h:


Tiago,

Seria uma boa prática sim, mais esse servidor terá que ter o samba e o winbind configurado e as permissões serão dadas por acl.


[2] Comentário enviado por Tiago_Rc2 em 13/08/2012 - 20:29h:

rikatz, boa noite.

Primeiramente parabéns pelo excelente artigo. Sou um iniciante do mundo Linux, e estou tentando enteder como funciona de fato uma estrutura Linux dentro de um dominio AD.

Me tire só umas dúvidas:


Caso eu queria colocar um Centos como servidor de arquivos, você acha isso uma boa prática?

E outra, as permissões a usuários ou grupos, posse fazer isso pelo Centos? é possível?


Grato!




[6] Comentário enviado por rikatz em 14/08/2012 - 21:45h

Obrigado! :)


[4] Comentário enviado por amandahla em 14/08/2012 - 10:24h:

Excelente artigo!



[7] Comentário enviado por rikatz em 14/08/2012 - 21:46h

Obrigado!


[1] Comentário enviado por Thalysson S em 13/08/2012 - 19:17h:

Muito bom o artigo !



[8] Comentário enviado por andrefreire em 15/08/2012 - 13:32h

Boa tarde !

Parabéns pelo artigo.

Nesse tipo de solução o host Linux não ingressa no domínio Windows em vez disso usa uma conta de serviço para fazer as consultas.

Essa solução poderia ser utilizada para autenticação do squid por exemplo ?

[9] Comentário enviado por rikatz em 15/08/2012 - 14:44h

Boa tarde:

Obrigado!

Então, exatamente, eu não queria que a máquina ingressasse no domínio, isso depende da abertura de muitas portas, etc.

Como as contas do AD ficam dentro do servidor LDAP do Windows 2008, você simplesmente autenticando o seu squid no LDAP (nem precisa do kerberos) já funciona normalmente.

Veja um exemplo:

http://wiki.squid-cache.org/ConfigExamples/Authenticate/Ldap

Se você fosse utilizar esse artigo como referência, a linha de autenticação ficaria como: 'auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b "dc=springfield,dc=corp" -D cn=AuthLinux,cn=Users,dc=springfield,dc=corp -w 12qw!@QW -f uid=%s springfield.corp'

Ats

[8] Comentário enviado por andrefreire em 15/08/2012 - 13:32h:

Boa tarde !

Parabéns pelo artigo.

Nesse tipo de solução o host Linux não ingressa no domínio Windows em vez disso usa uma conta de serviço para fazer as consultas.

Essa solução poderia ser utilizada para autenticação do squid por exemplo ?


[10] Comentário enviado por fabiocruz27 em 28/09/2012 - 11:44h

Prezado, rikatz


Primeiro parabéns pelo artigo ficou otimo.

Só me tira uma duvida para eu utilizar os usuarios e grupos do ad, eu preciso sempre configurar o NIS Domain , para o linux entender que os usuarios e os grupos fazem parte dele.

Obrigado

[11] Comentário enviado por removido em 15/10/2012 - 13:37h

Amigo gostei do artigo...

Tenho uma pergunta: Usando o método explicado aqui pode ingressar uma máquina com o GNU/Linux instalado no domínio do active directory ?

será necessário algo mais ?

[12] Comentário enviado por digaovaa em 05/09/2013 - 15:45h

Boa tarde, excelente artigo, funcionou perfeitamente. Única coisa que não está funcionando é quando entro a primeira vez com o usuário, ele não cria o diretório /home/usuario.. se eu entrar pelo shell, ele cria e assim quando logar no gnome, ele vai criar as outras pastas (Documents, Downloads,etc). sabe dizer o que pode ser?

obrigado e um abraço

[13] Comentário enviado por ddias em 10/09/2013 - 15:02h

Parabens, excelente artigo! Apenas estou com uma dúvida, onde posso realizar o download do Unix Integration Tools?

Obg.!

[14] Comentário enviado por ddias em 10/09/2013 - 16:48h

Parabens, excelente artigo! Apenas estou com uma dúvida, onde posso realizar o download do Unix Integration Tools para Windows Server R2 x64

Obg.!

[15] Comentário enviado por rikatz em 10/09/2013 - 16:53h

Olá,

Na verdade o Integration Tools você instala como 'Role' (ou Feature, não lembro) do Windows direto no servidor que vai ser o AD




[13] Comentário enviado por ddias em 10/09/2013 - 15:02h:

Parabens, excelente artigo! Apenas estou com uma dúvida, onde posso realizar o download do Unix Integration Tools?

Obg.!



[16] Comentário enviado por marcelo.cheveau em 28/11/2013 - 09:49h

Gostaria de saber como faço para configurar no Linux um meio em que alguns usuários acessam a internet e todas as pastas e outros não acessam a internet e acessam algumas pastas e os que não estão cadastrados não acessam nada?

[17] Comentário enviado por Virgil_Dantas em 27/07/2015 - 10:11h

bom dia, porque utilizar NSLCD nos clientes ao invés do SSSD??


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts