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 ;-)