{"id":347,"date":"2012-08-21T10:31:18","date_gmt":"2012-08-21T13:31:18","guid":{"rendered":"http:\/\/linuxrs.com.br\/?p=347"},"modified":"2012-08-21T10:31:36","modified_gmt":"2012-08-21T13:31:36","slug":"autenticacao-de-servidores-centosred-hat-6-em-windows-2008","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=347","title":{"rendered":"Autentica\u00e7\u00e3o de servidores CentOS\/Red Hat 6 em Windows 2008"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><strong>Introdu\u00e7\u00e3o &#8211; Pr\u00e9-requisitos<\/strong><\/p>\n<div>Este artigo foi criado para ensinar a configura\u00e7\u00e3o de autentica\u00e7\u00e3o de servidores <em>CentOS<\/em> e <em>Red Hat<\/em>(vers\u00e3o 6) no Windows 2008.Diversos artigos encontrados na Internet, fazem uso do Winbind para possibilitar esta autentica\u00e7\u00e3o, contudo, como esta configura\u00e7\u00e3o depende da instala\u00e7\u00e3o do servi\u00e7o <em>Samba<\/em> (e consequente abertura de portas, vulnerabilidades, etc), optei por fazer esta configura\u00e7\u00e3o utilizando-se apenas do servi\u00e7o de LDAP, que j\u00e1 \u00e9 disponibilizado pelo Windows 2008, e pelo servi\u00e7o <em>Kerberos 5<\/em>.<\/p>\n<p>Assim, n\u00e3o \u00e9 necess\u00e1ria a abertura de nenhuma porta nos clientes de autentica\u00e7\u00e3o, e caso seja uma autentica\u00e7\u00e3o entre redes distintas com firewall, apenas a abertura das portas do LDAP, Kerberos 5 e DNS ser\u00e3o suficientes.<\/p>\n<h1>Defini\u00e7\u00f5es<\/h1>\n<p>Estas defini\u00e7\u00f5es ser\u00e3o utilizadas durante o artigo, e ser\u00e3o explicadas conforme o desenvolvimento do mesmo:<\/p>\n<ul>\n<li>Dom\u00ednio: SPRINGFIELD.CORP (LDAP: DC=SPRINGFIELD, DC=CORP)<\/li>\n<li>Hostname do Domain Controller: Homer (HOMER.SPRINGFIELD.CORP)<\/li>\n<li>IP do Domain Controller: 192.168.5.151<\/li>\n<li>Conta de servi\u00e7o LDAP: CN=AuthLinux,CN=Users,DC=Springfield,DC=Corp<\/li>\n<li>Usu\u00e1rio criado para testes de Logon: rkatz@SPRINGFIELD.CORP<\/li>\n<li>Grupo criado com atributos Unix: Linux<\/li>\n<\/ul>\n<h1>Configura\u00e7\u00e3o do Windows 2008 (Domain Controller)<\/h1>\n<p>Assumindo que o seu <em>Domain Controller<\/em> j\u00e1 esteja instalado e em funcionamento, as seguintes configura\u00e7\u00f5es abaixo dever\u00e3o ser feitas:<\/p>\n<p>1. Atualiza\u00e7\u00e3o do ambiente<\/p>\n<p>N\u00e3o \u00e9 necessariamente um pr\u00e9-requisito para o correto funcionamento do ambiente, mas recomendo executar um &#8216;Windows Update&#8217; no ambiente, apenas por garantia. \ud83d\ude09<\/p>\n<p>2. Instala\u00e7\u00e3o do Unix Integration Tools<\/p>\n<p>Para que a autentica\u00e7\u00e3o funcione com sucesso, devemos instalar o <em>Unix Integration Tools<\/em> nos Domain Controllers. Esta nova <em>role<\/em>cria atributos espec\u00edficos necess\u00e1rios para a autentica\u00e7\u00e3o em Unix\/Linux, como Home Directory e Default Shell.<\/p>\n<ul>\n<li>Em Server Manager, na aba (lateral esquerda), selecionar &#8216;Roles&#8217;.<\/li>\n<li>Na se\u00e7\u00e3o &#8216;Role Services&#8217; da role &#8216;Active Directory Domain Services&#8217;, adicionar o servi\u00e7o &#8216;Identity Management for Unix&#8217;, atrav\u00e9s do link &#8216;Add Role Services&#8217;, incluindo todos os demais servi\u00e7os (Server for Network Information Services, Password Syncronization e Administration Tools).<\/li>\n<\/ul>\n<h1>Cria\u00e7\u00e3o das contas no DC<\/h1>\n<p>Para o correto funcionamento da configura\u00e7\u00e3o, devemos criar uma conta de servi\u00e7o que ser\u00e1 utilizada para o BIND (conex\u00e3o) ao LDAP, uma vez que o Windows 2008 n\u00e3o permite conex\u00e3o an\u00f4nima ao LDAP. Tamb\u00e9m criaremos um grupo e uma conta exemplo, que ser\u00e3o utilizados nos testes de Login.<\/p>\n<h1>Conta de servi\u00e7o<\/h1>\n<p>Esta conta dever\u00e1 ser criada com a pol\u00edtica de &#8220;n\u00e3o expira\u00e7\u00e3o de senha&#8221;, pois esta senha ser\u00e1 utilizada na configura\u00e7\u00e3o de todos os clientes. Caso a senha expire, a mesma dever\u00e1 ser trocada no servidor, e consequentemente em todos os clientes.<\/p>\n<p>* Importante: Lembre-se ao criar esta conta, de que o &#8216;Full Name&#8217; da conta criada \u00e9 utilizada como RDN no LDAP.<\/p>\n<p>Exemplo:<\/p>\n<ul>\n<li>FullName=Bart Simpson<\/li>\n<li>CN=Bart Simpson<\/li>\n<li>CN=Users<\/li>\n<li>DC=Dom\u00ednio.<\/li>\n<\/ul>\n<p>Assim, recomenda-se criar a conta com um &#8216;Full Name&#8217; de uma palavra, como &#8216;AuthLinux&#8217;, para n\u00e3o haver maiores problemas.<\/p>\n<p>A conta ser\u00e1 criada conforme abaixo:<\/p>\n<ul>\n<li>FullName: AuthLinux<\/li>\n<li>User Logon Name: AuthLinux<\/li>\n<li>Senha (exemplo, alterar no seu ambiente): 12qw!@QW<\/li>\n<li>Configura\u00e7\u00f5es: &#8216;User Cannot Change Password&#8217;, e &#8216;Password Never Expires&#8217;<\/li>\n<\/ul>\n<p>Ap\u00f3s a cria\u00e7\u00e3o desta conta de servi\u00e7o, alterar o seu grupo, colocando-o apenas como membro do grupo &#8220;Domain Guests&#8221; e removendo todos os demais grupos, de forma que este usu\u00e1rio n\u00e3o possua nenhuma permiss\u00e3o no dom\u00ednio.<\/p>\n<h1>Cria\u00e7\u00e3o do Grupo<\/h1>\n<p>Ou, altera\u00e7\u00e3o de grupo j\u00e1 existente.<\/p>\n<p>Deve ser criado um grupo (ou alterado um j\u00e1 existente) para que o mesmo possua atributos <em>Unix<\/em>, possibilitando sua utiliza\u00e7\u00e3o em nosso ambiente. Isso deve ser feito, primeiro criando-se o grupo (caso j\u00e1 n\u00e3o exista) e depois, alterando-o conforme abaixo.<\/p>\n<p>No nosso exemplo, foi criado o grupo &#8220;Linux&#8221;. Ap\u00f3s isso, na aba &#8216;Unix Attributes&#8217; das propriedades do grupo, alterar o NIS Domain para &#8216;SPRINGFIELD&#8217; (ou o Dom\u00ednio utilizado). Manter o GID criado padr\u00e3o, e n\u00e3o adicionar nenhum usu\u00e1rio no grupo.<\/p>\n<h1>Cria\u00e7\u00e3o de usu\u00e1rio com permiss\u00e3o de Login<\/h1>\n<p>Ou, altera\u00e7\u00e3o de usu\u00e1rio j\u00e1 existente.<\/p>\n<p>Um usu\u00e1rio deve ser criado (ou alterado) de forma que possamos efetuar logon em um ambiente Unix. Nesse artigo, ser\u00e1 criado o usu\u00e1rio &#8216;rkatz&#8217;, conforme abaixo:<\/p>\n<ul>\n<li>Criar o usu\u00e1rio (ou alterar) desabilitando a op\u00e7\u00e3o &#8216;User Must Change Password on Next Logon&#8217;;<\/li>\n<li>Editar o usu\u00e1rio, e na aba &#8216;Unix Attributes&#8217; alterar o NIS Domain para &#8216;SPRINGFIELD&#8217;;<\/li>\n<li>Alterar o &#8216;Login Shell&#8217; para o Shell padr\u00e3o utilizado no ambiente (como \/bin\/bash);<\/li>\n<li>E, Primary group Name\/GID para o grupo criado acima (Linux).<\/li>\n<\/ul>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><strong>Configura\u00e7\u00e3o do S.O.<\/strong><\/p>\n<div>Assumindo que sua instala\u00e7\u00e3o do sistema operacional j\u00e1 esteja feita (eu utilizei o CentOS neste artigo), os seguintes passos devem ser feitos:<\/p>\n<h1>Atualiza\u00e7\u00e3o do sistema operacional<\/h1>\n<p>Tal como no ambiente Windows, esse n\u00e3o \u00e9 um pr\u00e9-requisito, mas altamente recomend\u00e1vel para garantirmos a estabilidade da autentica\u00e7\u00e3o.<\/p>\n<h1>Configura\u00e7\u00e3o de DNS e NTP<\/h1>\n<p>O nosso cliente deve &#8216;conhecer&#8217; o dom\u00ednio que ser\u00e1 utilizado, para o seu correto funcionamento. Assim, no arquivo <em>\/etc\/resolv.conf<\/em>, o IP dos Domain Controllers do ambiente, dever\u00e3o ser utilizados conforme abaixo:<\/p>\n<div>nameserver 192.168.5.151<\/div>\n<p>Testar o funcionamento, efetuando um <em>nslookup<\/em> (ou <em>ping<\/em>, mesmo) para o nome SPRINGFIELD.CORP (Dom\u00ednio) e HOMER.SPRINGFIELD.CORP (Domain Controller) e verificar o correto funcionamento.<\/p>\n<p>Tamb\u00e9m, o hor\u00e1rio do cliente dever\u00e1 estar sincronizado com o do restante do dom\u00ednio. Assim, os pacotes do NTP dever\u00e3o ser instalados:<\/p>\n<p><strong># yum install ntp ntpdate<\/strong><\/p>\n<p>Ap\u00f3s a instala\u00e7\u00e3o dos pacotes de NTP, uma primeira sincroniza\u00e7\u00e3o dever\u00e1 ser efetuada com o comando <em>ntpdate<\/em>:<\/p>\n<p><strong># ntpdate springfield.corp<\/strong><\/p>\n<p>Feita a primeira sincroniza\u00e7\u00e3o do hor\u00e1rio, o arquivo <em>\/etc\/ntp.conf<\/em> deve ser editado, removendo-se todas as linhas &#8216;server&#8217; e adicionando apenas a seguinte:<\/p>\n<div>server springfield.corp<\/div>\n<p>Ap\u00f3s isso, adicionar o servi\u00e7o de NTP \u00e0 inicializa\u00e7\u00e3o do ambiente, e iniciar o servi\u00e7o. Ent\u00e3o, verificar o funcionamento:<\/p>\n<p><strong># chkconfig ntpd on<br \/>\n# \/etc\/init.d\/ntpd on<br \/>\n# ntpq -c pe<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_410696\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>remote\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 refid\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 st t\u00a0 when poll reach\u00a0 delay\u00a0\u00a0 offset\u00a0\u00a0 jitter<\/code><\/div>\n<div><code>==============================================================================<\/code><\/div>\n<div><code>192.168.5.151\u00a0\u00a0 200.160.7.186\u00a0\u00a0 2\u00a0 u\u00a0\u00a0 12\u00a0\u00a0 64\u00a0\u00a0 377\u00a0\u00a0\u00a0 0.762\u00a0 449.851\u00a0 17.746<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h1>Instala\u00e7\u00e3o dos pacotes de autentica\u00e7\u00e3o e Kerberos<\/h1>\n<p>Em uma instala\u00e7\u00e3o padr\u00e3o os pacotes necess\u00e1rios para autentica\u00e7\u00e3o n\u00e3o vem instalados por padr\u00e3o. Assim, devemos instalar os pacotes necess\u00e1rios, conforme abaixo:<\/p>\n<p><strong># yum install nss-pam-ldapd krb5-workstation pam_krb5 nscd openldap-clients<\/strong><\/p>\n<h1>Verifica\u00e7\u00e3o de conta de servi\u00e7o<\/h1>\n<p>Para garantirmos o correto funcionamento, a conta de servi\u00e7o criada na configura\u00e7\u00e3o do Windows 2008 (AuthLinux) dever\u00e1 ser testada. Podemos testar essa conta com o seguinte comando (ser\u00e1 solicitada a senha da conta):<\/p>\n<p><strong># ldapsearch -v -x -H &#8220;ldap:\/\/springfield.corp&#8221; -D &#8220;cn=AuthLinux,cn=Users,dc=Springfield,dc=corp&#8221; -b &#8220;dc=Springfield,dc=corp&#8221; -s sub -W<\/strong><\/p>\n<p>Caso o comando n\u00e3o retorne nenhum erro (mas uma sa\u00edda LDIF), a conta de servi\u00e7o est\u00e1 funcionando corretamente. Caso contr\u00e1rio, dever\u00e1 ser verificado se os dados utilizados para autentica\u00e7\u00e3o (cn, senha) est\u00e3o corretos.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><strong>Autentica\u00e7\u00e3o LDAP<\/strong><\/p>\n<div>Ap\u00f3s a configura\u00e7\u00e3o do ambiente, devemos configurar o sistema operacional de forma a autenticar-se no AD. As seguintes configura\u00e7\u00f5es devem ser efetuadas:<\/p>\n<h1>NSLCD (Autentica\u00e7\u00e3o LDAP)<\/h1>\n<p>O NSLCD (local LDAP name service daemon) ser\u00e1 utilizado para a autentica\u00e7\u00e3o ao LDAP. Antes configurado atrav\u00e9s do arquivo <em>\/etc\/ldap.conf<\/em> (no RHEL 5 e derivados), agora este recurso possui um <em>daemon<\/em> pr\u00f3prio.<\/p>\n<p>Para configur\u00e1-lo, devemos alterar o arquivo <em>\/etc\/nslcd.conf<\/em> conforme abaixo (as explica\u00e7\u00f5es est\u00e3o nos coment\u00e1rios do arquivo):<\/p>\n<div># Versao LDAP<br \/>\nldap_version 3<br \/>\n# Usuario e grupo para executar o daemon<br \/>\nuid nslcd<br \/>\ngid ldap# Limite de timeout de bind e de busca<br \/>\nbind_timelimit 30<br \/>\ntimelimit 30<\/p>\n<p># Servidor LDAP e BaseDN<br \/>\nuri ldap:\/\/springfield.corp<br \/>\nbase dc=springfield,dc=corp<\/p>\n<p># O SSL ainda n\u00e3o ser\u00e1 configurado<br \/>\nssl no<br \/>\ntls_cacertdir \/etc\/openldap\/cacerts<\/p>\n<p># usu\u00e1rio e senha de servi\u00e7o<br \/>\nbinddn cn=AuthLinux,cn=Users,dc=springfield,dc=corp<br \/>\nbindpw 12qw!@QW<\/p>\n<p>scope sub<br \/>\nscope\u00a0\u00a0\u00a0group\u00a0\u00a0\u00a0sub scope\u00a0\u00a0\u00a0hosts\u00a0\u00a0\u00a0sub<\/p>\n<p># Ignorar lookup de grupos para os usu\u00e1rios de sistema<br \/>\nnss_initgroups_ignoreusers root,nslcd,bin,daemon,mail,nobody,sshd,nscd,ntp<\/p>\n<p># Caso seja necess\u00e1rio algum filtro, para apenas algum usu\u00e1rio de algum grupo logar<br \/>\n# pam_authz_search (gidNumber=10000)<\/p>\n<p># Configuracoes de Mapping &#8211; AD<br \/>\npagesize 1000<br \/>\nreferrals off<br \/>\nfilter\u00a0passwd (&amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))<br \/>\nmap\u00a0\u00a0\u00a0\u00a0passwd uid\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sAMAccountName<br \/>\nmap\u00a0\u00a0\u00a0\u00a0passwd homeDirectory\u00a0\u00a0unixHomeDirectory<br \/>\nmap\u00a0\u00a0\u00a0\u00a0passwd gecos\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0displayName<br \/>\nfilter shadow (&amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))<br \/>\nmap\u00a0\u00a0\u00a0\u00a0shadow uid\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sAMAccountName<br \/>\nmap\u00a0\u00a0\u00a0\u00a0shadow shadowLastChange pwdLastSet<br \/>\nfilter\u00a0group (objectClass=group)<br \/>\nmap\u00a0\u00a0\u00a0\u00a0group uniqueMember\u00a0\u00a0\u00a0\u00a0member<\/p>\n<\/div>\n<p>Ap\u00f3s isso, devemos iniciar o daemon do <em>nslcd<\/em> e coloc\u00e1-lo na inicializa\u00e7\u00e3o:<\/p>\n<p><strong># chkconfig nslcd on<br \/>\n# \/etc\/init.d\/nslcd on<\/strong><\/p>\n<h1>Kerberos 5<\/h1>\n<p>A configura\u00e7\u00e3o do <em>Kerberos<\/em> dever\u00e1 ser feita de forma a validar um usu\u00e1rio, e permitir, entre outras coisas, sua autentica\u00e7\u00e3o e posteriores opera\u00e7\u00f5es (como <em>query<\/em> de grupos a que pertence, etc).<\/p>\n<p>A configura\u00e7\u00e3o dever\u00e1 ser feita conforme abaixo.<\/p>\n<p>Alterar o arquivo <em>\/etc\/krb5.conf<\/em>, conforme abaixo (as explica\u00e7\u00f5es est\u00e3o nos coment\u00e1rios do arquivo):<\/p>\n<div># Nao validar o hostname do servidor (senao precisa de entradas no DNS e Reverso)<br \/>\n[appdefaults]<br \/>\nvalidate = false# Locais de Logging<br \/>\n[logging]<br \/>\ndefault = FILE:\/var\/log\/krb5libs.log<br \/>\nkdc = FILE:\/var\/log\/krb5kdc.log<br \/>\nadmin_server = FILE:\/var\/log\/kadmind.log<\/p>\n<p># Configuracoes Padrao<br \/>\n[libdefaults]<br \/>\n# Dominio Padrao &#8211; SPRINGFIELD.CORP &#8211; Deve ser o mesmo do AD<br \/>\ndefault_realm = SPRINGFIELD.CORP<br \/>\ndns_lookup_realm = false<br \/>\ndns_lookup_kdc = false<br \/>\nticket_lifetime = 24h<br \/>\nrenew_lifetime = 7d<br \/>\nforwardable = true<\/p>\n<p>[realms]<br \/>\n# Configuracao do servidor de KERBEROS<br \/>\n# Utilizando o nome do DOMINIO, ele vai para o DC<br \/>\nSPRINGFIELD.CORP = {<br \/>\nkdc = SPRINGFIELD.CORP<br \/>\nadmin_server = SPRINGFIELD.CORP<br \/>\n}<\/p>\n<p># Configuracoes de DOMINIO &#8211; Qual REALM deve ser usado para qual dominio<br \/>\n[domain_realm]<br \/>\nspringfield.corp = springfield.corp<br \/>\n.springfield.corp = springfield.corp<\/p>\n<\/div>\n<p>Testar a gera\u00e7\u00e3o de um ticket de autentica\u00e7\u00e3o para um usu\u00e1rio qualquer do dom\u00ednio, como o Administrador:<\/p>\n<p><strong># kinit -V Administrator@SPRINGFIELD.CORP<\/strong><\/p>\n<p>A sa\u00edda seria:<\/p>\n<blockquote><p>Using default cache: \/tmp\/krb5cc_0<br \/>\nUsing principal: Administrator@SPRINGFIELD.CORP<br \/>\nPassword for Administrator@SPRINGFIELD.CORP: [DIGITAR A SENHA]<br \/>\nAuthenticated to Kerberos v5<\/p><\/blockquote>\n<p>Caso o retorno seja diferente de:<\/p>\n<blockquote><p>Authenticated to Kerberos v5<\/p><\/blockquote>\n<p>A configura\u00e7\u00e3o deve ser verificada novamente, pois alguma configura\u00e7\u00e3o foi efetuada incorretamente.<\/p>\n<h1>Configura\u00e7\u00e3o do NSCD e NSSWITCH<\/h1>\n<p>Devemos agora, configurar o daemon de cache de logins, e o NSSWITCH, que ir\u00e1 direcionar a autentica\u00e7\u00e3o de usu\u00e1rios e grupos para o NSLCD (LDAP), caso n\u00e3o seja encontrado um usu\u00e1rio local.<\/p>\n<p>Por padr\u00e3o, o arquivo <em>\/etc\/nscd.conf<\/em> j\u00e1 vem configurado com par\u00e2metros aceit\u00e1veis, sendo necess\u00e1rio apenas descomentar a linha &#8220;logfile \/var\/log\/nscd.log&#8221;, para que o daemon efetue log, caso algo d\u00ea errado.<\/p>\n<p>Devemos ent\u00e3o, alterar o arquivo <em>\/etc\/nsswitch.conf<\/em>, deixando as linhas: <em>passwd, shadow<\/em> e <em>group<\/em>, conforme abaixo:<\/p>\n<div>\u00a0\u00a0passwd:\u00a0\u00a0\u00a0\u00a0files ldap<br \/>\nshadow:\u00a0\u00a0\u00a0\u00a0files ldap<br \/>\ngroup:\u00a0\u00a0\u00a0\u00a0\u00a0files ldap<\/div>\n<p>Por fim, o daemon do NSCD deve ser colocado na inicializa\u00e7\u00e3o do S.O., e ser iniciado:<\/p>\n<p><strong># chkconfig nscd on<br \/>\n# \/etc\/init.d\/nscd start<\/strong><\/p>\n<p>Para verificar o funcionamento correto da configura\u00e7\u00e3o, utilizar o comando <em>getent<\/em> no usu\u00e1rio e grupo criado na etapa de &#8220;Pr\u00e9 requisitos&#8221;:<\/p>\n<p><strong># getent passwd rkatz<\/strong><\/p>\n<p>A sa\u00edda seria:<\/p>\n<blockquote><p>rkatz:*:10002:10000:Ricardo P. Katz:\/home\/rkatz:\/bin\/bash<\/p><\/blockquote>\n<p>E:<\/p>\n<p><strong># getent group Linux<\/strong><\/p>\n<blockquote><p>Linux:*:10000:rkatz<\/p><\/blockquote>\n<h1>Configura\u00e7\u00e3o do PAM<\/h1>\n<p>A etapa final da configura\u00e7\u00e3o \u00e9 a altera\u00e7\u00e3o do PAM (Plugable Authentication Modules), de forma que as autentica\u00e7\u00f5es do Sistema Operacional sejam enviadas ao servidor LDAP (Domain Controller).<\/p>\n<p>Adicionalmente, quando um usu\u00e1rio n\u00e3o possuir diret\u00f3rio &#8216;home&#8217; no ambiente, o esperado \u00e9 que o PAM crie esse diret\u00f3rio.<\/p>\n<p>O arquivo <em>\/etc\/pam.d\/system-auth<\/em> dever\u00e1 ser alterado para ficar conforme abaixo. O arquivo aqui \u00e9 um exemplo, sugiro que verifique se n\u00e3o h\u00e1 nenhum mecanismo de autentica\u00e7\u00e3o j\u00e1 em uso no ambiente, e adeque as configura\u00e7\u00f5es \u00e0s suas necessidades:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_251592\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#%PAM-1.0<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_env.so<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_fprintd.so<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_unix.so nullok try_first_pass<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 requisite\u00a0\u00a0\u00a0\u00a0 pam_succeed_if.so uid &gt;= 500 quiet<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_krb5.so use_first_pass<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_deny.so<\/code><\/div>\n<div><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_unix.so<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_localuser.so<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_succeed_if.so uid &lt; 500 quiet<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 [default=bad success=ok user_unknown=ignore] pam_krb5.so<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_permit.so<\/code><\/div>\n<div><\/div>\n<div><code>password\u00a0\u00a0\u00a0 requisite\u00a0\u00a0\u00a0\u00a0 pam_cracklib.so try_first_pass retry=3 <\/code><code>type<\/code><code>=<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_unix.so sha512 shadow nullok try_first_pass use_authtok<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_krb5.so use_authtok<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_deny.so<\/code><\/div>\n<div><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 optional\u00a0\u00a0\u00a0\u00a0\u00a0 pam_keyinit.so revoke<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_limits.so<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_mkhomedir.so skel=<\/code><code>\/etc\/skel<\/code> <code>umask<\/code><code>=0022<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 [success=1 default=ignore] pam_succeed_if.so service <\/code><code>in<\/code> <code>crond quiet use_uid<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_unix.so<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 optional\u00a0\u00a0\u00a0\u00a0\u00a0 pam_krb5.so<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Alterar tamb\u00e9m o arquivo <em>\/etc\/pam.d\/password-auth<\/em>, conforme configura\u00e7\u00e3o abaixo:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_294914\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#%PAM-1.0<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_env.so<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_unix.so nullok try_first_pass<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 requisite\u00a0\u00a0\u00a0\u00a0 pam_succeed_if.so uid &gt;= 500 quiet<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_krb5.so use_first_pass<\/code><\/div>\n<div><code>auth\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_deny.so<\/code><\/div>\n<div><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_unix.so broken_shadow<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_localuser.so<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_succeed_if.so uid &lt; 500 quiet<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 [default=bad success=ok user_unknown=ignore] pam_krb5.so<\/code><\/div>\n<div><code>account\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_permit.so<\/code><\/div>\n<div><\/div>\n<div><code>password\u00a0\u00a0\u00a0 requisite\u00a0\u00a0\u00a0\u00a0 pam_cracklib.so try_first_pass retry=3 <\/code><code>type<\/code><code>=<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_unix.so sha512 shadow nullok try_first_pass use_authtok<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 sufficient\u00a0\u00a0\u00a0 pam_krb5.so use_authtok<\/code><\/div>\n<div><code>password\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_deny.so<\/code><\/div>\n<div><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 optional\u00a0\u00a0\u00a0\u00a0\u00a0 pam_keyinit.so revoke<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_limits.so<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 [success=1 default=ignore] pam_succeed_if.so service <\/code><code>in<\/code> <code>crond quiet use_uid<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 required\u00a0\u00a0\u00a0\u00a0\u00a0 pam_unix.so<\/code><\/div>\n<div><code>session\u00a0\u00a0\u00a0\u00a0 optional\u00a0\u00a0\u00a0\u00a0\u00a0 pam_krb5.so<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Ap\u00f3s as altera\u00e7\u00f5es, logar-se em um novo terminal com o usu\u00e1rio criado no AD (no exemplo, o usu\u00e1rio: rkatz), e verificar se o login \u00e9 autorizado, bem como o diret\u00f3rio home criado.<\/p>\n<p>Verificar tamb\u00e9m com o comando <em>id<\/em>, se os grupos a que o usu\u00e1rio pertence s\u00e3o carregados. Caso n\u00e3o funcione, os arquivos <em>\/var\/log\/messages<\/em> e <em>\/var\/log\/secure<\/em> podem ser verificados em busca de erros.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><strong>Habilita\u00e7\u00e3o de SSL (LDAPs)<\/strong><\/p>\n<div>Para que as informa\u00e7\u00f5es n\u00e3o fiquem trafegando em texto plano, faz-se necess\u00e1ria a configura\u00e7\u00e3o de comunica\u00e7\u00e3o utilizando-se de SSL.Assume-se que, o AD j\u00e1 esteja com essa funcionalidade (LDAPS) habilitada.<\/p>\n<p>Caso n\u00e3o, pode ser verificado em<\/p>\n<ul>\n<li><a href=\"http:\/\/social.technet.microsoft.com\/wiki\/contents\/articles\/2980.ldap-over-ssl-ldaps-certificate.aspx\">http:\/\/social.technet.microsoft.com\/wiki\/contents\/articles\/2980.ldap-over-ssl-ldaps-certificate.aspx<\/a><\/li>\n<\/ul>\n<p>Alterar o arquivo <em>\/etc\/openldap\/ldap.conf<\/em>, para que ele n\u00e3o reclame do certificado de <em>CA<\/em> inv\u00e1lido apresentado pelo servidor:<\/p>\n<div>TLS_REQCERT never<\/div>\n<p>Testar a comunica\u00e7\u00e3o com o comando abaixo (note que \u00e9 o mesmo comando de teste anterior, chamando o protocolo LDAPS ao inv\u00e9s de LDAP apenas):<\/p>\n<div>ldapsearch -v -x -H &#8220;ldaps:\/\/springfield.corp&#8221; -D &#8220;cn=AuthLinux,cn=Users,dc=Springfield,dc=corp&#8221; -b &#8220;dc=Springfield,dc=corp&#8221; -s sub -W<\/div>\n<p>Conforme o teste funcione com sucesso, o arquivo <em>\/etc\/nslcd.conf<\/em> dever\u00e1 ser alterado para permitir a utiliza\u00e7\u00e3o do SSL, alterando-se as seguintes linhas:<\/p>\n<div>uri ldaps:\/\/springfield.corp<br \/>\nssl yes<br \/>\ntls_cacertdir \/etc\/openldap\/cacerts<br \/>\ntls_reqcert never<\/div>\n<p>Reiniciar o NSLCD e o NSCD, e verificar o funcionamento com o:<\/p>\n<p><strong># getent passwd USUARIO<\/strong><\/p>\n<h1>Conclus\u00f5es<\/h1>\n<p>Apesar de parecer complexa, a configura\u00e7\u00e3o de integra\u00e7\u00e3o entre o <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">GNU\/Linux<\/a> e o AD pode ser feita de forma bastante simples.<\/p>\n<p>Esta \u00e9 uma necessidade que muitas empresas t\u00eam, pois possuem seus controladores de dom\u00ednio e, por diversas vezes, os seus servidores GNU\/Linux n\u00e3o possuem uma forma de controle t\u00e3o refinada quanto os servidores Windows.<\/p>\n<p>Espero ter contribu\u00eddo com qualquer necessidade.<\/p>\n<p>Qualquer d\u00favida, estou \u00e0 disposi\u00e7\u00e3o. \ud83d\ude09<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o &#8211; Pr\u00e9-requisitos Este artigo foi criado para ensinar a configura\u00e7\u00e3o de autentica\u00e7\u00e3o de servidores CentOS e Red Hat(vers\u00e3o 6) no Windows 2008.Diversos artigos encontrados na Internet, fazem uso do Winbind para possibilitar esta autentica\u00e7\u00e3o, contudo, como esta configura\u00e7\u00e3o depende da instala\u00e7\u00e3o do servi\u00e7o Samba (e consequente abertura de portas, vulnerabilidades, etc), optei por fazer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1,51,102],"tags":[103,88,178,14,177],"class_list":["post-347","post","type-post","status-publish","format-standard","hentry","category-viazap","category-linux-linuxrs","category-windows","tag-ad","tag-autenticacao","tag-kerberos","tag-linux","tag-windows2008"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=347"}],"version-history":[{"count":3,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions"}],"predecessor-version":[{"id":350,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions\/350"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}