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çõesEstas definições serão utilizadas durante o artigo, e serão explicadas conforme o desenvolvimento do mesmo:
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 rolecria atributos específicos necessários para a autenticação em Unix/Linux, como Home Directory e Default Shell.
Criação das contas no DCPara 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çoEsta 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:
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:
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 GrupoOu, 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 LoginOu, 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:
|
|||
Configuração do S.O.
Assumindo que sua instalação do sistema operacional já esteja feita (eu utilizei o CentOS neste artigo), os seguintes passos devem ser feitos:
Atualização do sistema operacionalTal como no ambiente Windows, esse não é um pré-requisito, mas altamente recomendável para garantirmos a estabilidade da autenticação. Configuração de DNS e NTPO nosso cliente deve ‘conhecer’ o domínio que será utilizado, para o seu correto funcionamento. Assim, no arquivo /etc/resolv.conf, o IP dos Domain Controllers do ambiente, deverão ser utilizados conforme abaixo: nameserver 192.168.5.151
Testar o funcionamento, efetuando um nslookup (ou ping, mesmo) para o nome SPRINGFIELD.CORP (Domínio) e HOMER.SPRINGFIELD.CORP (Domain Controller) e verificar o correto funcionamento. Também, o horário do cliente deverá estar sincronizado com o do restante do domínio. Assim, os pacotes do NTP deverão ser instalados: # yum install ntp ntpdate Após a instalação dos pacotes de NTP, uma primeira sincronização deverá ser efetuada com o comando ntpdate: # ntpdate springfield.corp Feita a primeira sincronização do horário, o arquivo /etc/ntp.conf deve ser editado, removendo-se todas as linhas ‘server’ e adicionando apenas a seguinte: server springfield.corp
Após isso, adicionar o serviço de NTP à inicialização do ambiente, e iniciar o serviço. Então, verificar o funcionamento: # chkconfig ntpd on
Instalação dos pacotes de autenticação e KerberosEm uma instalação padrão os pacotes necessários para autenticação não vem instalados por padrão. Assim, devemos instalar os pacotes necessários, conforme abaixo: # yum install nss-pam-ldapd krb5-workstation pam_krb5 nscd openldap-clients Verificação de conta de serviçoPara garantirmos o correto funcionamento, a conta de serviço criada na configuração do Windows 2008 (AuthLinux) deverá ser testada. Podemos testar essa conta com o seguinte comando (será solicitada a senha da conta): # ldapsearch -v -x -H “ldap://springfield.corp” -D “cn=AuthLinux,cn=Users,dc=Springfield,dc=corp” -b “dc=Springfield,dc=corp” -s sub -W Caso o comando não retorne nenhum erro (mas uma saída LDIF), a conta de serviço está funcionando corretamente. Caso contrário, deverá ser verificado se os dados utilizados para autenticação (cn, senha) estão corretos. |
|||
Autenticação LDAP
Após a configuração do ambiente, devemos configurar o sistema operacional de forma a autenticar-se no AD. As seguintes configurações devem ser efetuadas:
NSLCD (Autenticação LDAP)O NSLCD (local LDAP name service daemon) será utilizado para a autenticação ao LDAP. Antes configurado através do arquivo /etc/ldap.conf (no RHEL 5 e derivados), agora este recurso possui um daemon próprio. Para configurá-lo, devemos alterar o arquivo /etc/nslcd.conf conforme abaixo (as explicações estão nos comentários do arquivo): # Versao LDAP
ldap_version 3 # Usuario e grupo para executar o daemon uid nslcd gid ldap# Limite de timeout de bind e de busca bind_timelimit 30 timelimit 30 # Servidor LDAP e BaseDN # O SSL ainda não será configurado # usuário e senha de serviço scope sub # Ignorar lookup de grupos para os usuários de sistema # Caso seja necessário algum filtro, para apenas algum usuário de algum grupo logar # Configuracoes de Mapping – AD Após isso, devemos iniciar o daemon do nslcd e colocá-lo na inicialização: # chkconfig nslcd on Kerberos 5A configuração do Kerberos deverá ser feita de forma a validar um usuário, e permitir, entre outras coisas, sua autenticação e posteriores operações (como query de grupos a que pertence, etc). A configuração deverá ser feita conforme abaixo. Alterar o arquivo /etc/krb5.conf, conforme abaixo (as explicações estão nos comentários do arquivo): # Nao validar o hostname do servidor (senao precisa de entradas no DNS e Reverso)
[appdefaults] validate = false# Locais de Logging [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log # Configuracoes Padrao [realms] # Configuracoes de DOMINIO – Qual REALM deve ser usado para qual dominio Testar a geração de um ticket de autenticação para um usuário qualquer do domínio, como o Administrador: # kinit -V [email protected] A saída seria:
Caso o retorno seja diferente de:
A configuração deve ser verificada novamente, pois alguma configuração foi efetuada incorretamente. Configuração do NSCD e NSSWITCHDevemos agora, configurar o daemon de cache de logins, e o NSSWITCH, que irá direcionar a autenticação de usuários e grupos para o NSLCD (LDAP), caso não seja encontrado um usuário local. Por padrão, o arquivo /etc/nscd.conf já vem configurado com parâmetros aceitáveis, sendo necessário apenas descomentar a linha “logfile /var/log/nscd.log”, para que o daemon efetue log, caso algo dê errado. Devemos então, alterar o arquivo /etc/nsswitch.conf, deixando as linhas: passwd, shadow e group, conforme abaixo: passwd: files ldap
shadow: files ldap group: files ldap Por fim, o daemon do NSCD deve ser colocado na inicialização do S.O., e ser iniciado: # chkconfig nscd on Para verificar o funcionamento correto da configuração, utilizar o comando getent no usuário e grupo criado na etapa de “Pré requisitos”: # getent passwd rkatz A saída seria:
E: # getent group Linux
Configuração do PAMA etapa final da configuração é a alteração do PAM (Plugable Authentication Modules), de forma que as autenticações do Sistema Operacional sejam enviadas ao servidor LDAP (Domain Controller). Adicionalmente, quando um usuário não possuir diretório ‘home’ no ambiente, o esperado é que o PAM crie esse diretório. O arquivo /etc/pam.d/system-auth deverá ser alterado para ficar conforme abaixo. O arquivo aqui é um exemplo, sugiro que verifique se não há nenhum mecanismo de autenticação já em uso no ambiente, e adeque as configurações às suas necessidades:
Alterar também o arquivo /etc/pam.d/password-auth, conforme configuração abaixo:
Após as alterações, logar-se em um novo terminal com o usuário criado no AD (no exemplo, o usuário: rkatz), e verificar se o login é autorizado, bem como o diretório home criado. Verificar também com o comando id, se os grupos a que o usuário pertence são carregados. Caso não funcione, os arquivos /var/log/messages e /var/log/secure podem ser verificados em busca de erros. |
|||
Habilitação de SSL (LDAPs)
Para que as informações não fiquem trafegando em texto plano, faz-se necessária a configuração de comunicação utilizando-se de SSL.Assume-se que, o AD já esteja com essa funcionalidade (LDAPS) habilitada.
Caso não, pode ser verificado em
Alterar o arquivo /etc/openldap/ldap.conf, para que ele não reclame do certificado de CA inválido apresentado pelo servidor: TLS_REQCERT never
Testar a comunicação com o comando abaixo (note que é o mesmo comando de teste anterior, chamando o protocolo LDAPS ao invés de LDAP apenas): ldapsearch -v -x -H “ldaps://springfield.corp” -D “cn=AuthLinux,cn=Users,dc=Springfield,dc=corp” -b “dc=Springfield,dc=corp” -s sub -W
Conforme o teste funcione com sucesso, o arquivo /etc/nslcd.conf deverá ser alterado para permitir a utilização do SSL, alterando-se as seguintes linhas: uri ldaps://springfield.corp
ssl yes tls_cacertdir /etc/openldap/cacerts tls_reqcert never Reiniciar o NSLCD e o NSCD, e verificar o funcionamento com o: # getent passwd USUARIO ConclusõesApesar de parecer complexa, a configuração de integração entre o GNU/Linux e o AD pode ser feita de forma bastante simples. Esta é uma necessidade que muitas empresas têm, pois possuem seus controladores de domínio e, por diversas vezes, os seus servidores GNU/Linux não possuem uma forma de controle tão refinada quanto os servidores Windows. Espero ter contribuído com qualquer necessidade. Qualquer dúvida, estou à disposição. 😉 |