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:
1 |
yum -y install epel-release |
Instale os pacotes abaixo:
1 |
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.
1 |
vim /etc/resolv.conf |
Conteúdo do arquivo:
1 2 3 |
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.
1 |
chatt +i /etc/resolv.conf |
Ajustando o ambiente para a autenticação via kerberos no domínio:
1 |
authconfig --enablekrb5 --krb5kdc=tidahora.local --krb5adminserver=tidahora.local --krb5realm=TIDAHORA.LOCAL --enablesssd --enablesssdauth --update |
Obtendo informações do domínio:
1 |
adcli info tidahora.local |
Retorno do comando acima, informações sobre o domínio, controlador, etc.
1 2 3 4 5 6 7 8 9 10 11 |
[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”
1 2 |
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”.
1 |
vim /etc/sssd/sssd.conf |
Conteúdo do arquivo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[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:
1 |
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”
1 |
vim /etc/pam.d/system-auth |
No final do arquivo insira a linha abaixo:
1 |
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.
1 |
vim /etc/pam.d/sshd |
No final do arquivo insira a linha abaixo:
1 |
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:
1 |
service sssd start && chkconfig sssd on && service winbind start && chkconfig winbind on |
Se for CentOS 7:
1 |
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.
1 |
vim /etc/ssh/sshd_config |
No final do arquivo insira a linha abaixo:
1 |
AllowGroups ti |
Agora vamos ajustar a permissão de sudo para os usuários.
1 |
visudo |
Na linha de número 93, insira a linha abaixo, salve o arquivo e saia do mesmo
1 |
%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