Autenticando Linux CentOS em Domínio AD Active Directory


Olá, tudo bem? 😄

Aqui vai uma dica para facilitar o gerenciamento de acessos ao servidores Linux CentOS. Se você possui uma rede corporativa com domínio em base do Active Directory, seja ele Microsoft ou Samba4, esse artigo vai lhe ajudar a centralizar o acesso via SSH aos servidores linux.

Esse tutorial funciona em CentOS 6 e CentOS 7. 😎

Nosso cenário é o seguinte:

Controlador de Domínio: (Samba4) 🐧
Endereço IP: 10.1.0.88/16
Domínio: tidahora.local
OS: CentOS 7.5

Servidor Linux (Cliente) 🐧
Endereço IP: 10.1.1.89/16
Domínio: tidahora.local
OS: CentOS 7.5

Com usuário “root” vamos configurar nosso servidor linux (cliente) para autenticar usuários do AD.

Instale o repositório epel:

yum -y install epel-release

Instale os pacotes abaixo:

yum -y install adcli samba-common oddjob-mkhomedir oddjob samba-winbind-clients samba-winbind sssd pam_krb5 authconfig

Precisamos fazer uma ajuste no arquivo de resolução de nomes do Linux, é necessário para que o servidor faça a busca correta do domínio e não tenha problemas ao fazer a autenticação dos usuários.

vim /etc/resolv.conf

Conteúdo do arquivo:

search tidahora.local
domain tidahora.local
nameserver 10.1.0.88

Salve o arquivo do “resolv.conf’ e em seguida vamos bloquear o arquivo para edição, dessa forma se o servidor for reiniciado ou algum serviço tentar alterar o conteúdo do arquivo não vai ter a permissão.

chatt +i /etc/resolv.conf

Ajustando o ambiente para a autenticação via kerberos no domínio:

authconfig --enablekrb5 --krb5kdc=tidahora.local --krb5adminserver=tidahora.local --krb5realm=TIDAHORA.LOCAL --enablesssd --enablesssdauth --update

Obtendo informações do domínio:

adcli info tidahora.local

Retorno do comando acima, informações sobre o domínio, controlador, etc.

[domain]
domain-name = tidahora.local
domain-short = TIDAHORA
domain-forest = tidahora.local
domain-controller = samba4-dc01.tidahora.local
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = samba4-dc01.tidahora.local
[computer]
computer-site = Default-First-Site-Name

Agora vamos ingressar o host ao domínio “tidahora.local”

adcli join tidahora.local -U administrator
Password for administrator@TIDAHORA.LOCAL: ****** <== Senha do usuário Administrator do domínio.

Precisamos criar o arquivo “sssd.conf”, responsável por fazer a autenticação em domínios com base LDAP/AD.

No arquivo que estamos criando abaixo, também informamos qual o bash dos usuários e o diretório home que os mesmos vão possuir, no meu caso, eu ajustei para criar uma pasta com o nome do domínio dentro do /home, dessa forma consigo gerenciar melhor os usuários locais, e usuários do domínio.

Se você quiser mudar isso, altere a linha onde contém o conteúdo de “fallback_homedir”.

vim /etc/sssd/sssd.conf

Conteúdo do arquivo:

[sssd]
domains = tidahora.local
config_file_version = 2
services = nss, pam

[domain/tidahora.local]
ad_domain = tidahora.local
krb5_realm = TIDAHORA.LOCAL
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
access_provider = ad

Ajustando a permissão ao arquivo:

chmod 600 /etc/sssd/sssd.conf

Na sequência vamos ajustar no PAM, opções de criação de diretórios homes.

Vamos ajustar primeiro o arquivo “/etc/pam.d/system-auth”

vim /etc/pam.d/system-auth

No final do arquivo insira a linha abaixo:

session     optional      pam_mkhomedir.so skel=/etc/skel umask=077

Agora vamos editar o arquivo responsável por criar a sessão (home) dos usuários quando eles conectam-se via SSH.

vim /etc/pam.d/sshd

No final do arquivo insira a linha abaixo:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

Reiniciando e ajustando os serviços para iniciarem junto ao boot do sistema:

Se você estiver utilizando CentOS 6:

service sssd start && chkconfig sssd on && service winbind start && chkconfig winbind on

Se for CentOS 7:

systemctl restart sssd && systemctl enable sssd && systemctl restart winbind.service && systemctl enable winbind.service

Configurando o SSH para permitir grupos a conectarem via SSH:

Nesse caso estarei liberando o grupo “ti” para conexão via SSH ao host.

vim /etc/ssh/sshd_config

No final do arquivo insira a linha abaixo:

AllowGroups ti

Agora vamos ajustar a permissão de sudo para os usuários.

visudo

Na linha de número 93, insira a linha abaixo, salve o arquivo e saia do mesmo

%ti     ALL=(ALL)       ALL

Agora tente se logar com um usuário do seu domínio que pertença ao grupo que ajustamos no sudo e no ssh.

Meu usuário do domínio é “johnny” ele é membro do domínio “ti”, que configuramos acima:

Informe a senha do usuário do domínio:

Veja abaixo o diretório /home do usuário, o mesmo está configurado para /home/tidahora.local.

O mesmo utilizando o comando “sudo” para executar comandos com nível de permissão avançada.

Dúvidas, comentário e sugestões postem nos comentários. 👋🏼 Valeu! e até a próxima!


Johnny Ferreira
johnny.ferreira.santos@gmail.com
http://www.tidahora.com.br


comments powered by Disqus