Aqui falaremos sobre os procedimentos para configurar o SSSD. Este procedimento foi realizado sobre uma Instalação padrão do CentOS 7 que fazemos de servidores CentOS, caso queira realizar a mesma instalação, consulte aqui, ou nas referências abaixo.

Para executar os passos é necessário que se saiba Como obter o Distinguished Name (DN) no Active Directory, verifique aqui ou nas referências, abaixo.

Em nosso exemplo, configuraremos a pasta home de todos os usuários LDAP como a mesma pasta e deixaremos um script de logon para auditoria de quem logou quando.

Existem algumas formas de realizar esse procedimento, caso queira explorar outras possibilidades consulte neste link, ou nas referências abaixo.

Antes de executar a configuração, verifique suas configurações de rede, de resolução de nomes (incluindo o arquivo /etc/resolv.conf e o arquivo /etc/hosts configurado com o nome e o IP do próprio servidor) e de horário.

Para configurarmos corretamente, usaremos uma conta de serviço para leitura no AD e um grupo de Acesso (para restringirmos quem poderá acessar o servidor).

Criando um usuário para consulta LDAP

Crie uma conta com o padrão de nomes de contas de serviço que sua empresa utiliza, essa conta pode ser membro de um grupo genérico e retirado o grupo Domain Users (defina o grupo novo grupo como padrão primeiro para poder retirar o grupo Domain Users). Desta forma está conta não poderá ser usado para logon em computadores;

Criando um grupo de acesso ao servidor

Crie um grupo e adicione os membros que poderão fazer logon no servidor, sugerimos um grupo para cada servidor linux, pois mesmo que muitos acessos sejam comuns (por exemplo, todos de uma equipe), com o tempo podem surgir necessidades específicas e se for um único grupo essas “exceções” começam a ter acesso a vários sistemas que não deveriam;

Instalando e configurando o SSSD

Para instalar e configurar, execute os comandos abaixo (altere as partes em cinza conforme sua realidade).

yum install autofs krb5-workstation nss-pam-ldapd openldap openldap-clients pam_ldap rpcbind samba-winbind-clients samba-client samba-winbind sssd sssd-ldap sssd-ad sssd-client sssd-krb5 -y

yum install adcli authselect-compat krb5-workstation oddjob oddjob-mkhomedir realmd samba-common samba-common-tools -y

systemctl enable sssd

vim /etc/sssd/sssd.conf

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

[domain/SEUDOMINIO.COM.BR]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
ad_server = servidor_dc.seudominio.com.br
ad_hostname = servidor_dc.seudominio.com.br
ldap_uri = ldap://IP_SEU_DC:3268/
ldap_search_base = dc=seudominio,dc=com,dc=br
ldap_group_search_base = DC=seudominio,DC=com,DC=br
ldap_default_bind_dn = seu_usuario@seudominio.com.br
ldap_default_authtok = senha_dessa_conta
ldap_schema = ad
ldap_user_object_class = person
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_access_order = expire
ldap_account_expire_policy = ad
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_id_mapping = true
fallback_homedir = /home/%u
ldap_id_use_start_tls = False
krb5_realm = SEUDOMINIO.COM.BR
krb5_canonicalize = False
krb5_server = servidor_dc.seudominio.com.br:88
krb5_kpasswd = servidor_dc.seudominio.com.br:88
case_sensitive = True
#Se for CentOS8, descomente a linha abaixo
#ad_gpo_access_control = disabled
#Se tiver problemas, altere o debug_level para 10, reinicie o sssd e verifique os logs (mais detalhados)
debug_level = 1
ad_access_filter = (memberOf=CN=Nome do Grupo,OU=Nome da OU,DC=seudominio,DC=com,DC=br)
ldap_sasl_mech = GSSAPI
ldap_sasl_authid = host/nome_do_servidor.seudominio.com.br@SEUDOMINIO.COM.BR
ldap_sasl_realm = SEUDOMINIO.COM.BR
[sssd]
services = nss, pam, sudo
config_file_version = 2
domains = SEUDOMINIO.COM.BR
[nss]
filter_users = root,named,avahi,nscd
[sudo]

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

chmod 600 /etc/sssd/sssd.conf
vim /etc/krb5.conf

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

includedir /etc/krb5.conf.d/

includedir /var/lib/sss/pubconf/krb5.include.d/

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = SEUDOMINIO.COM.BR
dns_lookup_realm = false
#dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
default_ccache_name = KEYRING:persistent:%{uid}


[realms]
SEUDOMINIO.COM.BR = {
#kdc = servidor_dc.seudominio.com.br:88
#admin_server = servidor_dc.seudominio.com.br:88
}

[domain_realm]
seudominio.com.br = SEUDOMINIO.COM.BR
.seudominio.com.br = SEUDOMINIO.COM.BR

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

vim /etc/samba/smb.conf

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

[global]
workgroup = SEUDOMINIO
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
log file = /var/log/samba/samba.log
realm = SEUDOMINIO.COM.BR
security = ads

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

rm -rf /etc/krb5.keytab
kinit login_admin (SEM o domínio)
net ads join -k
systemctl restart sssd

realm permit --all

authconfig --enablesssd --enablesssdauth --enablemkhomedir --update

authselect select sssd --force
authselect select sssd with-mkhomedir --force

Agora, basta fazer logon com o usuário do AD

Opcional: Definir contas para terem permissões de root

Caso precise definir que alguma conta LDAP deve acessar o linux com permissões de root, execute:

vim /etc/sudoers.d/seu_dominio

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

login_do_ad ALL=(ALL) ALL

Adicione quantas linhas como essa precisar. Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar.

Fontes/Referências

NVLAN – Como obter o Distinguished Name (DN) no Active Directory
NVLAN – Instalação padrão do CentOS7
NVLAN – Métodos para integrar o CentOS com LDAP (Active Directory)

https://computingforgeeks.com/join-centos-rhel-system-to-active-directory-domain
https://serverfault.com/questions/633802/ldap-authentication-on-centos-7
https://serverfault.com/questions/851864/get-sid-by-its-objectsid-using-ldapsearch/852338#852338
https://tylersguides.com/guides/configure-sssd-for-ldap-on-centos-7/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria