Ingressando CentOS no domínio Active Directory

Neste passo a passo mostraremos como ingressar um Linux CentOS no domínio Microsoft Active Directory através da linha de comando. Isto irá nos permitir autenticar via SSH no Linux com contas de usuários AD, provendo uma fonte central de autenticação.

Há inúmeros meios de se fazer isso, porém o jeito mais fácil que encontrei foi pela linha de comando.

Neste exemplo estou usando CentOS 7 e Windows Server 2012 R2, contudo a versão de Windows não importa. Estamos assumindo que o nosso domínio já está preparado e configurado. Nós estamos simplesmente ingressando o CentOS no domínio existente.

Preparando o CentOS

Primeiro temos que instalar os pacotes abaixo:

# yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python -y

O CentOS deve estar apto a resolver o domínio Active Directory para que possa ingressar. Temos que verificar o servidor DNS em /etc/resolv.conf e confirmar se algum dos DNS’s é referente ao servidor que queremos ingressar.

Ingressando CentOS ao domínio Windows

Para ingressar no domínio usaremos o comando “realm join”, como mostrado abaixo. É necessário especificar o nome do usuário do domínio que tem privilégios para ingressar a estação.

# realm join –user=administrator example.com
Password for administrator:

Uma vez digitada a senha da conta solicitada, os arquivos /etc/sssd/sssd.conf e /etc/krb.conf serão configurados. Isso é muito bom porque editar estes arquivos manualmente pode ocasionar diversos tipos de problemas quando ingressando no domínio. O arquivo /etc/krb5.keytab também é criado durante o processo.

Podemos confirmar que ingressamos no domínio executando o comando “realm list”, como mostrado abaixo:

# realm list
example.com
type: kerberos
realm-name: EXAMPLE.COM
domain-name: example.com
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common-tools
login-formats: %[email protected]
login-policy: allow-realm-logins

Uma vez concluído com sucesso, um objeto referente a estação será criado no Active Directory no container referente a “computers”.

Agora que ingressamos no domínio podemos fazer alguns testes. Por padrão, se queremos especificar algum usuário temos que especificar também o nome do domínio. Por exemplo, com o comando “id” abaixo não obtemos nada para “administrator”, porém “[email protected]” mostra a UID da conta, bem como os grupos a que esta conta pertence no domínio Active Directory.

# id administrator
id: administrator: no such user

# id [email protected]
uid=1829600500([email protected]) gid=1829600513(domain [email protected]) groups=1829600513(domain [email protected]),1829600512(domain [email protected]),1829600572(denied rodc password replication [email protected]),1829600519(enterprise [email protected]),1829600518(schema [email protected]),1829600520(group policy creator [email protected])

Nós podemos modificar este comportamente modificando o arquivo /etc/sssd/sssd.conf, nas seguintes linhas:

use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d

Modifique de acordo com as linhas abaixo, que não requerem um FQDN (fully qualified domain name) a ser especificado. Isso também modifica o comportamente do diretório /home evitando que tenha um FQDN especificado depois do nome do usuário.

use_fully_qualified_names = False
fallback_homedir = /home/%u

Para aplicar as mudanças reinicie o sssd:

# systemctl restart sssd

Agora estaremos aptos a encontrar contas de usuários sem especificar o domínio. Ver exemplo abaixo:

# id administrator
uid=1829600500(administrator) gid=1829600513(domain users) groups=1829600513(domain users),1829600512(domain admins),1829600572(denied rodc password replication group),1829600520(group policy creator owners),1829600519(enterprise admins),1829600518(schema admins)

Se ainda assim não funcionar você deve tentar limpar o cache do sssd (link).

Configurando SSH e acesso sudo

Agora que ingressamos o CentOS com sucesso no domínio, nós podemos conectar via SSH com qualquer usuário do domínio Active Directory com as configurações padrão:

# ssh [email protected]
[email protected]’s password:
Creating home directory for user1.

Podemos também restringir acesso SSH modificando o arquivo /etc/ssh/sshd_config. Não esqueça de reiniciar o serviço de SSH se fizer alguma modificação.

Podemos também modificar as configurações de sudo para permitir que nossa conta do domínio tenha o desejado nível de acesso. Podemos criar um grupo no Active Directory chamado “sudoers”, colocar o usuário nele, e então permitir que esse grupo tenha acesso sudo criando o arquivo /etc/sudoers.d/ que permitirá o acesso root ser controlado pelo AD. Abaixo um exemplo, o grupo “sudoers” terá acesso root pleno.

# cat /etc/sudoers.d/sudoers
%sudoers ALL=(ALL) ALL

Este grupo existe apenas no Active Directory. Nosso Linux pode ver que user1 é membro do Active Directory, e de acordo com a configuração acima permitir acesso root a este usuário.

Com isso, nosso user1 estará apto a usar o comando sudo para executar comando com privilégios root.

[[email protected] ~]$ sudo su
[sudo] password for user1:
[[email protected] user1]#
[[email protected] user1]# whoami
root

Deixando o domínio

Podemos fazer o processo inverso e remover a estação do domínio, simplesmente executando “realm leave” seguido do domínio, como mostrado abaixo:

# realm leave example.com

Isso irá deletar o objeto “computador” que foi criado no Active Directory, também removerá o arquivo keytab e voltará as configurações originais de sssd.conf e krb5.conf.

Procurar no blog: