Autenticando o Linux no Active Directory

Transcrição

Autenticando o Linux no Active Directory
Autenticando o Linux no Active Directory
Clovis Sena
Versão deste documento: 0.76
É permitido reproduzir e destribuir este documento, sob os termos da GNU Free Documentation License.
Apresentação
O objetivo deste trabalho é mostrar como implementar um ambiente de rede mixto, usando estações de trabalho
Windows e Linux, fazendo a autenticação no Active Directory do Windows 2000 Server.
Vamos mostrar um passo a passo, através das telas da instalação, com todos os procedimentos necessários para
fazer com que nossoas estações Linux consigam fazer a autenticação no Active Directory.
No processo veremos como usar um plugin que trará ao Active Directory a capacidade de autenticar estações
Unix/Linux. Eu sei que existem outras soluções possíveis, incluindo o uso do Services For Unix da própria
Microsoft (SFU), disponível para download gratuitamente (veja referências no final do documento). Mas por
hora, vamos usar o plugin, que é pequeno de tamanho ( AD4Unix=2.7MB / SFU = 222,8MB) e simples de
instalar. Em uma outra oportunidade, poderemos adicionar informaçãoes sobre o uso do SFU.
O ambiente utilizado para fazer os testes foi uma máquina com processador AMD de 1100Mhz com 512 MB de
ram, rodando com o Conectiva 9.0 + updates (kernel 2.4.21), e usando o software VMware para criar os
ambientes virtuais necessários para instalação dos diversos sistemas operacionais: Windows 2000 Server,
Fedora Core1 e SuSe 9.2.
O VMware é realmente fantástico. Sem ele ficaria difícil montar este laboratório com uma máquina apenas.
AVISO IMPORTANTE: Faça testes primeiro. Não vá sair por aí executando os procedimentos aqui descritos
em ambientes de produção.
Sobre o Active Directory
Resumidamnente, o AD é a implementação ldap da Microsoft, constituindo em um novo produto servidor de
diretórios.O Active Directory é tecnicamente um servidor LDAP v3, com implementações e alterações feitos
pela Microsoft, o que o faz um pouco fora dos padrões normais do LDAPv3. Com este princípio em mente,
podemos usar algum recurso ( por exemplo, o plugin ) para extender os schemas do AD de modo a suportar a
autenticação Unix/Linux.
Sobre o AD4Unix Plugin
O MKS AD4Unix é uma extensão plugin para o Active Directory Server da Microsoft, que possibilita que as
informações de autenticação Unix e informaçãoes do usuário sejam armazenadas no Active Directory.O
AD4Unix inclue uma atualização de schema, e uma extensão para o Microsoft User & Group Manager ( parte
da interface de administração do Active Directory, que é por sua vez parte do Microsoft Management Console).
O objetivo principal de AD4Unix é criar um banco de dados de contas unificado para Windows e servidores
Unix/Linux via Active Directory. Isto é o que efetivamente habilita a autenticação multi-plataforma usando o
Active Directory.
O AD4Unix é na verdade um único arquivo .MSI ( Microsoft Installer) que pode ser instalado diretamente em
um servidor Windows 2000.
O AD4Unix foi escrito por Martin Batourine, da Faculdade de Arquitetura, Paisagem e Design na Universidade
de Toronto / Canadá.
A ele nossos agradecimentos.
Arregaçando as mangas...
OK, chega de teorias, vamos começar a parte divertida.
PARTE 1
Preparando o Windows 2000 Server
Nesta parte iremos mostrar as telas da instalação dos componenters necessários no Windows 2000 Server. Mais
detalhes podem ser obtidos consultando a seção referências no fim do documento.
Instalando o High Encryption Pack:
Uma instalação padrão do Windows 2000 Server vem com criptografia de apenas 56 bits. Neste caso vamos ter
que aumentar para 128 bits instalando o pacote High Encryption Pack que você pode obter no site da Microsoft.
Depois de instalar o High Encryption Pach, será preciso re-inicializar o servidor.
Podemos conferir o tipo de criptografia na tela de ajuda do Inernet Explorer, como na figura abaixo.
Tela mostrando que o nosso servidor já está com criptografia de 128 bits.
Configurar o Active Directory:
Agora vamos instalar e configurar o Active Directory em nosso servidor Windows 2000 Server. No menu do
windows, vá em Administrative tools e ache a opção "Configure Your Server".
Selecionamos "Active Directory" no menu da esquerda. Temos de descer a tela um pouco até chegar no botão
de "start"
Clique no botão/link de "Start" para iniciar o programa de instalação do Active Directory.
A tela do instalador do Active Directory. Cliue em "Next".
Clique em "Next"
Clique em "Next".
Clique em "Next".
Entre seu nome DNS ( se não tiver, invente um), depois clique em "Next".
Informe um nome NetBIOS ( netbios name é aquele que aparece no ambiente de rede) e depois clique em
"Next".
Clique em "Next".
Clique em "Next".
Clique em OK, pois vamos usar nosso próprio servidor de DNS.
Clique em "Next". O próprio instalador irá cuidar de instalar e configurar o DNS para este domínio. Lembrese de despois reconfigurar as propriedades do TCP/IP para colocar o IP do servidor como entrada de DNS.
Desta forma, se você der um "ping win2000.servtec.com.br" ele irá responder.
Clique em "Next".
Aqui você precisa informar uma senha para o Administrator do AD. Depois, clique em "Next".
Clique em "Next".
Instalação concluída, clique em "Finish".
Clique em "Restart Now" para re-inicializar o servidor.
Permitir Atualizações do Schema no Controlador do Domínio:
Precisamos executar o comando acima para permitir que atualizações possam ser feitas nos Schemas do
Controlador de Domínio.
Criar um MSC para gerenciamento do Schema :
( na verdade msc é o tipo de arquivo, ex: schema.msc. Também conhecidos como Microsoft Management
Consoles, ou MMC )
Clique em Start => Run, digite MMC e dê OK.
A tela inicial da console MMC.
Clique em "console" no menu e selecione "Add/Remove Snap-in".
Selecione "Active Directory Schema" e clique em "Add". Depois clique em "Close".
Clique em OK.
Pronto, nosso Active Directory Schema foi adicionado, já podemos seguir em frente.
Escolher o Controlador de Domínio no qual Queremos Atualizar o Schema:
Com o botao direito do mouse sobre "Active Directory Schema", selecione "Change Domaind Controller".
Entre seu DNS aqui, como no exemplo.
Permitir Atualização no Controledor de Domínio:
Agora precisamos permitir que atualizações possam ser feitas.
Clique com o botao direito sobre "Active Directory Schema" e escolhe "Operations Master"
Marque a opção "The Schema may be modified on this Domain Controller". Clique em OK.
Instalar o ADS4Unix Plugin:
OK. Neste ponto já estamos prontos para fazer a instalação do ADS4Unix Plugin. Veja nas referências no final
do do documento onde baixar o plugin.
Localize a pasta onde baixou o software e clique duas vezes sobre ele.
A tela do programa de instalação. Clique em "Next".
Aqui devemos aceitar os termos da licensa. Embora o software seja funcional, o autor não se responsabiliza
pelo uso deste software. Use por sua conta e risco.
Clicar "Next"
Clicar "Next"
Clicar "Install"
O software do plugin começa a instalar e aparecem algumas telas com mensagens e algumas perguntas.
Podemos confirmar todas elas, clicando em OK ou em YES, conforme o caso.
Clique em OK.
Clique em YES.
Clique em OK.
Clique em YES.
Aparece uma tela com algumas mensagens. Ela vai fechar sozinha.
Fim da instalação. É só clicar em "Finish" para encerrar.
Configurando o ADS4Unix Plugin:
Agora precisamos configurar O plugin.
A partir do menu Start/Iniciar do Windows, podemos acessar o programa de configuração do plugin.
A tela do configurador do plugin. Clique em "Settings for Plugins" .
Aqui precisamos adicionar um nome em "Allowed NIS". Pode ser qualque nome, não importa, pois na verdade n
estamos usando NIS. Em seguida clique no botão de OK.
Adicionando Usuários pelo Active Diretory:
Vamos dar uma olhada nas propriedades de um novo usuário.
A tela do Active Directory Users and Groups. Selecione um usuário e entre nas propriedades dele.
Aqui estamos vendo as propriedades do usuário uteste2. Observem a aba "Unix Settings". Esta nova aba
também irá aparecer para os usuários já existentes. Basta que você configure, para que estes usuários possam
autenticar em desktops clientes Linux.
O NIS ven desabilitado. Precisamos mudar para o nome do NIS que definimos antes, e ao fazê-lo aparece
uma mensagem de erro. Mas podemos seguir em frente sem problemas.
Aqui precisamos ajustar o UID para um valor acima de 1000 e definir o Shell como /bin/bash.
Grupos do Active Directory:
Nos grupos já existentes ou nos que você acrescentar, agora vai aparecer uma nova aba "Unix Settings", onde
você define algumas propriedades relevantes aos clientes Unix/Linux.
Propriedades da aba "Unix Settings" do grupo "Domain Users".
PARTE 2
Configurando os clientes Linux
Nesta parte iremos mostrar como fizimos para configurar clientes Linux para fazer a autenticação direto no AD.
Como clientes usamos o Fedora Core 1 e o SuSe 9.2. Os procedimentos são bastante simples e poderiam ser
facilmente re-adaptados para qualquer distribuição.
O que é necessário:
Basicamente os pacotes necessários são o openldap-client e o nss_ldap. Nas telas abaixo, poderemos ver os
pacotes instalados em cada sistema usado.
Ferramentas de Configuração:
Tanto o Fedora quanto o SuSe tem ferramentas que permitem uma configuração de modo bem simples.
Ferramenta YAST2 do SuSe, mostrando a parte de configuração do cliente LDAP.
Ferramenta authconfig-gtk do Fedora, mostarndo a parte de configuração do cliente LDAP. No modo texto
tem também o authconfig.
Um detalhe que devemos ficar atentos, é que estas ferramentas "pensam" que voçê vai usar um servidor
OpenLDAP, mas como vamos usar o Active Directory e este tem algumas diferenças de implementação, ainda
precisaremos ajustar alguns arquivos de configuração manualmente.
Basicamente, voçê vai precisar renomear o arquivo /etc/ldap.conf e criar outro com o conteúdo mostrado
abaixo, ajustando os dados de acordo com o seu ambiente (endereço IP do host e base DN ).
Arquivos de configuração envolvidos:
SUSE 9.2
FEDORA CORE 1
/etc/ldap.conf
/etc/ldap.conf
host 192.168.100.130
#base dn=Users,dc=servtec,dc=com,dc=br
binddn cn=uteste4,cn=Users,dc=servtec,dc=com,dc=br
bindpw copa98
scope sub
ssl no
host 192.168.100.130
#base dn=Users,dc=servtec,dc=com,dc=br
binddn cn=uteste4,cn=Users,dc=servtec,dc=com,dc=br
bindpw copa98
scope sub
ssl no
nss_base_passwd cn=Users,dc=servtec,dc=com,dc=br?sub
nss_base_shadow cn=Users,dc=servtec,dc=com,dc=br?sub
nss_base_group cn=Users,dc=servtec,dc=com,dc=br?sub
nss_base_passwd cn=Users,dc=servtec,dc=com,dc=br?sub
nss_base_shadow cn=Users,dc=servtec,dc=com,dc=br?sub
nss_base_group cn=Users,dc=servtec,dc=com,dc=br?sub
nss_map_objectclass posixAccount User
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_attribute uid sAMAccountName
nss_map_objectclass shadowAccount User
nss_map_attribute uid sAMAccountName
#nss_map_attribute uidNumber msSFUUidNumber
#nss_map_attribute gidNumber msSFUUidNumber
#nss_map_attribute loginShell msSFULoginShell
#nss_map_attribute gecos name
#nss_map_attribute uidNumber msSFUUidNumber
#nss_map_attribute gidNumber msSFUUidNumber
#nss_map_attribute loginShell msSFULoginShell
#nss_map_attribute gecos name
nss_map_attribute userPassword msSFUPassword
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_objectclass posixGroup Group
nss_map_attribute uniqueMember member
nss_map_attribute cn sAMAccountName
nss_map_attribute userPassword msSFUPassword
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_objectclass posixGroup Group
nss_map_attribute uniqueMember member
nss_map_attribute cn sAMAccountName
pam_login_attribute sAMAccountName
pam_filter objectclass=User
#pam_member_attribute msSFUPosixMember
#pam_groupdn cn=unixusergroup,dc=servtec,dc=com,dc=br
pam_password ad
pam_login_attribute sAMAccountName
pam_filter objectclass=User
#pam_member_attribute msSFUPosixMember
#pam_groupdn cn=unixusergroup,dc=servtec,dc=com,dc=br
pam_password ad
/etc/nsswitch.conf
/etc/nsswitch.conf
#
# /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:
#
#
compat
Use compatibility setup
#
nisplus
Use NIS+ (NIS version 3)
#
nis
Use NIS (NIS version 2), also called YP
#
dns
Use DNS (Domain Name Service)
#
files
Use the local files
#
db
Use the /var/db databases
#
[NOTFOUND=return]
Stop searching if not found so
far
#
# For more information, please read the nsswitch.conf.5
manual page.
#
#
# /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
#
# passwd: files nis
# shadow: files nis
# group: files nis
passwd: files ldap
shadow: files ldap
group: files ldap
#passwd: compat
#group: compat
hosts: files lwres dns
networks: files dns
# 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 ldap
shadow: files ldap
group:
files ldap
#hosts: db files nisplus nis dns
hosts:
files dns
# Example - obey only what nisplus tells us...
services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files
publickey: files
bootparams: files
automount: files nis
aliases: files
passwd_compat: ldap
group_compat: ldap
#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 ldap
rpc:
files
services: files ldap
netgroup: files ldap
publickey: nisplus
automount: files ldap
aliases: files nisplus
/etc/openldap/ldap.conf
/etc/openldap/ldap.conf
#
# LDAP Defaults
#
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9
#2000/09/04 19:57:01 kurt Exp $
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example, dc=com
#URI ldap://ldap.example.com ldap://ldapmaster.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF
never
TLS_REQCERT allow
host 192.168.100.130
base dc=servtec,dc=com,dc=br
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example, dc=com
#URI ldap://ldap.example.com ldap://ldapmaster.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF
never
HOST 192.168.100.130
BASE dc=servtec,dc=com,dc=br
/etc/pam.d/login
/etc/pam.d/login
#%PAM-1.0
auth requisite pam_unix2.so
nullok #set_secrpc
auth required pam_securetty.so
auth required
pam_nologin.so
#auth required pam_homecheck.so
auth required
pam_env.so
auth required pam_mail.so
account required
pam_unix2.so
password required pam_pwcheck.so
nullok
password required
pam_unix2.so
nullok use_first_pass
use_authtok
session required
pam_unix2.so
none # debug or trace
session required
pam_limits.so
session required pam_resmgr.so
session required /lib/security/pam_mkhomedir.so
skel=/etc/skel/ umask=022
#%PAM-1.0
auth
required pam_securetty.so
auth
required pam_stack.so service=system-auth
auth
required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so
session required /lib/security/pam_mkhomedir.so
skel=/etc/skel/ umask=0022
NOTA: a linha "session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=022" nos
arquivos /etc/pam.d/login serve criar o diretório home dos usuários. Para o ambiente gráfico, você também
deve checar/alterar o arquivo /etc/pam.d/gdm.
Telas do Login:
Algumas telas mostrando o processo de autenticação do usuário no Active Directory.
SuSe 9.2
Tela mostrando o processo de login. Note que o diretório home do usuário será criado caso não exista.
Aqui estamos mostrando os pacotes ldap instalados no SuSe.
Fedora Core 1
Tela mostrando o processo de login. Note que o diretório home do usuário será criado caso não exista.
Aqui estamos listando os pacotes ldap instalados no Fedora Core 1.
PARTE 3
Trabalhando com o Active Directory
Alguns truques ;-)
Uma das primeiras coisas que você deve aprender sobre o Active Directory é que ele não aceita pesquisa
anônimas, ou seja, para fazer algum tipo de busca tem que estar autenticado (bind) com usuário e senha.
O resultado prático disto é que você deve ou criar um usuário específico para pesquisar na base do AD, ou
configurar o AD para aceitar pesquisas anônimas (eu tentei isto mas não deu certo ).
Outra coisa que também deve aprender é que o Active Directory tem algumas diferenças de implementação em
relação a outras soluções de Diretórios existentes. Ou seja, tem alguns campos extras que devem ser colocados
no arquivo de configuração (/etc/ldap.conf ) para que os clientes possam mapear os campos corretamente.
Comandos úteis:
Os comandos abaixo server para fazer pesquisas na Active Directory ou qualquer outro servidor ldap, já que
sao comandos básicos do pacote openldap-clients. Abra uma console, e digite os comandos para ver como
funcionam:
( onde tem "dc=servtec,dc=com,dc=br" coloque seu próprio base dn)
ldapsearch -x
ldapsearch -x -D "cn=Administrator, cn=Users, dc=servtec,dc=com,dc=br" -W
ldapsearch -x -D "cn=Administrator, cn=Users, dc=servtec,dc=com,dc=br" -W "sAMAccountName=uteste"
Ferramentas:
Support Tools: LDP.EXE
No CD original do Windows 2000 Server, tem uma pasta SUPPORT que contém algumas ferramentas
interessantes, mas que não são instaladas durante a instalação do windows. Uma delas, é o pacote Microsoft
Support Tools, que fica na pasta SUPPORT/TOOLS do cd do windows. Este pacote tem algumas ferramentas
para gerenciar e fazer pesquisas no Active Directory.
Preparando para instalar o pacote Support Tools. Basta clicar no SETUP.EXE.
Aqui vemos o menu do windows mostrando as entradas do Microsoft Support Tools.
E aqui vemos a ferramenta LDP, que você pode usar para fazer buscas ou testes no AD.
Softerra LDAPBrowser
Uma outra ferramenta muito boa, é o LDAPBrowser da Softerra. (ver referências abaixo)
Aqui vemos a tela principal, mostrando toda a estrutura do Active Directory.
A configuração para poder acessar o Active Directory.
Como o Active Directory não aceita pesquisas anônimas, precisamos entrar aqui o usuário Administrator ( ou
outro) para podermos visualizar o conteúdo do Diretório. Note que entramos a referência completa do
Administrator, e não apenas seu nome.
GQ
O GQ é outra ferramenta do Linux, abstante usada para fazer consultas a uma base ldap. Neste caso também
podemos configurá-la para acessar ao Active Directory.
Tela do GQ mostrando as entradas do Active Directory.
A configuração necessária par o GQ acessar o Active Directory.
Palavra Final
Se você chegou até aqui, parabéns! Acaba de descobrir que nunca foi tão fácil integrar estações de trabalho
(desktops ) Linux em ambientes de rede Windows.
LDAP é show! :-)
Espero que tenham gostado e que este tipo de informação possa ser útil de alguma forma.
Pra pensar: "Não reclame, faça!"
Clovis Sena
Analista de Suporte Técnico
[email protected]
Recife - PE
28/12/2004
Referências
1 - ADS4UNIX Plugin ==> Você pode baixar no link1 e link2 e link3
2 - Active Directory and Linux
3 - Unite your Linux and Active Directory authentication
4 - MS Services For Unix
5 - Softerra LDAP Browser
6 - Usando o LDP
7 - Extending the Active Directory Schema To Track Custom Info
8 - Understanding Active Directory Services
9 - Windows 2000 High Encryption Pack
10 - GQ LDAP Browser
;-)