Este documento é dirigido ao pessoal da área de TI, especialmente aos administradores de redes, sistemas e/ou segurança, que são os responsáveis pelo planejamento, implementação ou operação de redes e sistemas. Também podem se beneficiar da sua leitura gerentes com conhecimento técnico de redes ou até mesmo pessoas leigas.
Este documento também tem o objetivo de explicar como instalar e configurar, passo a passo, cada aplicação nele necessária para autenticação dos servidores
Linux com o
Active Directory, permitindo assim centralizar os usuários para acesso dos mesmos.
Eu havia feito um anteriormente utilizando o ADCLI, porém, tive problemas com versões mais recentes da aplicação e resolvi fazer com o
Samba.
Instalação de Pacotes Necessários
Pacote de suporte ao compartilhamento interplataforma com Windows, osX e outro sistemas Unix:
# yum install samba -y
Pacote de suporte que faz a integração do Linux com o Active Directory:
# yum install sssd -y
Esse é o "pam_krb5", um módulo de autenticação conectável que pode ser usado por aplicativos que reconhecem o PAM para verificar senhas e obter tickets de concessão de tickets, usando o Kerberos 5 e para alterar senhas de usuários:
# yum install pam_krb5.x86_64
Ou, instalar todos os pacotes acima de uma vez:
# yum install samba sssd pam_krb5.x86_64 -y
Configurar DNS
Configurar o arquivo hosts para resolver o DNS, digite:
# vi /etc/resolv.conf
Agora, dentro do arquivo, insira as seguintes informações:
search meudominio.local
nameserver 192.168.0.1
Criando arquivo krb5.conf
Embora o Active Directory (AD) possa ser configurado como um provedor de identidade específico, do tipo para o Daemon de Serviços de Segurança do Sistema (SSSD), ele também pode ser configurado como um provedor de identidade LDAP puro com um provedor de autenticação Kerberos.
Recomenda-se que o SSSD conecte ao servidor do AD usando SASL, o que significa que o host local deve ter um keytab de serviço para o domínio do Windows no host do Linux. Este keytab pode ser criado usando o Samba.
Configure o arquivo
/etc/krb5.conf para usar o domínio do Active Directory:
# vi /etc/krb5.conf
Apague todo o conteúdo do arquivo e adicione o conteúdo com as informações do domínio a ser adicionado como mostrado abaixo:
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = MEUDOMINIO.LOCAL
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
MEUDOMINIO.LOCAL = {
kdc = meudominio.local
admin_server = meudominio.local
}
[domain_realm]
meudominio.local = MEUDOMINIO.LOCAL
.meudominio.local = MEUDOMINIO.LOCAL
Configurando o SAMBA
Altere arquivo de configuração do Samba,
/etc/samba/smb.conf, para apontar para a região do Windows Kerberos:
# vi /etc/samba/smb.conf
Apague todo o conteúdo do arquivo e adicione o conteúdo abaixo:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = MEUDOMINIO
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
log file = /var/log/samba/%m.log
password server = MEUDOMINIO.LOCAL
realm = MEUDOMINIO.LOCAL
security = ads
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
Mudar Provedor de Autenticação
Vamos definir em qual
Domain Controller ele irá se autenticar, no caso será o MEUDOMINIO.LOCAL, na linha de comando digite:
# authconfig \
--enablekrb5 \
--krb5kdc=meudominio.local \
--krb5adminserver=meudominio.local \
--krb5realm=MEUDOMINIO.LOCAL \
--enablesssd \
--enablesssdauth \
--enablemkhomedir \
--update
Após executar o comando acima, validar se o servidor está reconhecendo o AD:
# net ads info meudominio.local
Ingressar Máquina no ACTIVE DIRECTORY
Após configurado o servidor de autenticação que o "net ads" irá buscar, deve-se ingressar a máquina no domínio com um usuário administrador da rede.
Digite o comando abaixo:
# net ads join meudominio.local -U Administrador
Digite a senha do usuário e a máquina entrará no domínio. O objeto será adicionado no Active Directory.
Criar Arquivo de Configuração SSSD
Após a máquina estar configurada e dentro do domínio, criar arquivo SSSD (Sistema de Segurança Seviços Daemon).
Ele fornece uma interface NSS e PAM em direção ao sistema e um sistema de back-end pluggable para se conectar às fontes múltiplas contas diferentes. É também a base para a prestação de serviços de auditoria cliente e políticas para projetos como FreeIPA.
Na linha de comando, digite:
# vi /etc/sssd/sssd.conf
Adicionar o conteúdo abaixo no arquivo:
[sssd]
domains = meudominio.local
config_file_version = 2
services = nss, pam
[domain/meudominio.local]
ad_domain = meudominio.local
krb5_realm = MEUDOMINIO.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
Salve e feche o arquivo. Dê permissão 600 para o arquivo que acabou de ser criado:
# chmod 600 /etc/sssd/sssd.conf
Iniciar e Habilitar Automaticamente Serviço SSSD
Inicie o serviço SSSD:
# systemctl start sssd
Agora, habilite o serviço SSSD na máquina, digite:
# systemctl enable sssd
Validar Acesso com Usuário do AD
Para validar se o Linux está trazendo as informações do AD, como os grupos em que o usuário faz parte, digite o comando abaixo:
# id nome_do_usuario
Veja se é possível logar com o usuário de rede no servidor Linux, ele irá criar automaticamente um diretório com o nome do domínio e seu nome de usuário, digite:
# su - nome_do_usuario
Usuário autenticado com sucesso.
Alterar Permissões para Elevação de Privilégios
Após fazer as configurações para que a máquina ingresse no domínio Windows, deve-se habilitar somente um grupo específico para acessar essas máquinas. Foi criado no Active Directory um grupo chamado "LinuxAdmins" e definido os usuários que vão ter permissão para acessar via SSH.
Acessar o arquivo de configuração do SSH:
# vi /etc/ssh/sshd_config
Acrescentar a seguinte linha, para permitir que somente os usuários do grupo "LinuxAdmins" (ou mais grupos) acessem o servidor via SSH. Dentro do arquivo, digite:
AllowGroups linuxadmins
Para permitir que um usuário local também possa logar, adicione ele em AllowGroups. Após isso, reiniciar o serviço do SSHD, digite:
# systemctl restart sshd
Para permitir que os usuários do grupo "LinuxAdmins" possam usar o sudo, caso seja necessário mais de um grupo, adicionar uma linha para cada, edite o arquivo "sudoers":
# vi /etc/sudoers
Ou, digite:
# visudo
Acrescentar a linha abaixo:
%linuxadmins ALL=(ALL) ALL
Agora a autenticação está centralizada.