# Cliente: Configuração do SSSD (controlador de domínio Samba4) ### 1. Introdução O System Security Services Daemon é um pacote de software originalmente desenvolvido para o sistema operacional Linux que fornece um conjunto de daemons para gerenciar o acesso a diretórios remotos e mecanismos de autenticação. Funciona como um agregado de daemons que gerenciam mecanismos de autenticação remota, assim como serviços de diretórios que manipula diretamente o PAM e o NSS. ### 2. Obtendo os dados Para que a configuração seja realizada com sucesso, **certifique-se de:** - Ter acesso administrativo ao computador no qual o SSSD será instalado - Saber a distribuição linux utilizada no computador no qual o SSSD será instalado - Saber o nome do domínio - Saber o(s) endereço(s) IP do(s) controlador(es) do domínio - Possuir um arquivo com o certificado da CA utilizada pelo servidor - Possuir os dados de usuário e senha utilizados pelo SSSD ### 3. Executando a configuração Instale os pacotes necessários para o funcionamento do serviço do SSSD. A lista varia conforme a distribuição. ##### 3.1. Instalação dos pacotes **3.1.a. No Debian/Ubuntu:** ```shell apt install -y sudo cracklib-runtime ldap-utils libbasicobjects0 libc-ares2 libcollection4 \ libcrack2 libdhash1 libini-config5 libipa-hbac0 libldap-common libnl-3-200 libnl-route-3-200 \ libldb1 libnspr4 libnss-sss libntdb1 libopts25 libpwquality-common libpwquality1 libpam-pwquality \ libpath-utils1 libpam-sss libsss-sudo libpython2.7 libref-array1 libsasl2-modules-gssapi-mit \ libnss3 libsss-idmap0 libtalloc2 libtdb1 libtevent0 libwbclient0 ntp python-sss python-talloc \ samba-libs sssd sssd-ad sssd-ad-common sssd-common sssd-ipa sssd-krb5 sssd-krb5-common sssd-ldap\ sssd-proxy krb5-config krb5-user libgssrpc4 ``` **3.1.b. No Centos:** ```shell yum install -y sudo sssd ntp openldap sssd-ldap pam_ldap pam_krb5 krb5-workstation ``` ##### 3.2. Configuração do sistema **3.2.1. Configuração do DNS** Para que os servidores utilizados por este serviço sejam resolvidos corretamente, defina as configurações de rede para **utilizar o IP do controlador de domínios como o servidor DNS primário do computador cliente** e o **nome do domínio ao qual o computador será ingressado no domínio a ser utilizado para buscas**. Essa configuração pode ser realizada de formas diferentes. A forma recomendada difere de acordo com o sistemas operacional utilizado. - No Debian/Ubuntu: Edite o arquivo **/etc/network/interfaces** - No Centos: Utilize o comando `nmtui` **3.2.2. Certificado da CA utilizado pelo samba** A comunicação entre o cliente e o servidor samba utiliza TLS para proteger os dados. Utilizando esta técnica, o cliente usa um certificado para se autenticar com o servidor. Crie o arquivo **/etc/ssl/private/sssd-ca.pem** contendo o certificado da CA utilizado pelo samba. **3.2.3. Criação automática da pasta do usuário** Uma vez que o SSSD tenha autenticado os usuários no domínio e tenham acesso ao sistema, a pasta do usuário não será criada automaticamente. Para habilitar a criação automática da pasta do usuário, siga o procedimento: **3.2.3.a. No Debian/Ubuntu** Execute o seguinte comando no shell do computador ```shell nano /etc/pam.d/common-session ``` Insira a linha a seguir após o primeiro bloco de comentários
session required pam\_mkhomedir.so skel=/etc/skel/ umask=0022
**3.2.3.b. No Centos** ```shell authconfig --update --enablesssd --enablesssdauth --enablemkhomedir ``` ##### 3.3. Configuração do sudo Execute o comando a seguir no shell do computador cliente:

Neste exemplo, aos membros do grupo chamado "EXEMPLO\_SUDO", será permitido o uso do sudo. Substitua pelo grupo correto na hora da execução do comando

```shell echo '%EXEMPLO_SUDO ALL=(ALL) ALL' > /etc/sudoers.d/ldap_sudo_group chmod 0600 /etc/sudoers.d/ldap_sudo_group ``` O item iniciado por um símbolo de percentual (%EXEMPLO\_SUDO) indica o nome do grupo que irá receber as permissões do sudo. ##### 3.4. Configuração do kerberos Cabe ao kerberos garantir a troca de chaves, de forma segura, entre os computadores de uma rede que o utilize. Para tal, é necessário configurar o cliente para se comunicar aos provedores deste serviço. Execute o comando a seguir no shell do computador cliente: ```shell nano /etc/krb5.conf ``` Deixe o arquivo conforme mostrado a seguir.

Neste exemplo, o nome do domínio utilizado foi "EXEMPLO.LOCAL". Altere o nome para o domínio correto.

Neste exemplo, o FQDN do servidor controlador de domínio utilizado foi "DC01.EXEMPLO.LOCAL". Altere o nome para o FQDN correto.

\[logging\] default = SYSLOG:NOTICE default = FILE:/var/log/krb5.log \[libdefaults\] default\_realm = DOMINIO.LOCAL \# MIT Kerberos Variables. krb5\_config = /etc/krb.conf krb5\_realms = /etc/krb.realms default\_keytab\_name = /etc/krb5.keytab dns\_lookup\_kdc = no dns\_lookup\_realm = no ticket\_lifetime = 24h kdc\_timesync = 1 ccache\_type = 4 forwardable = true proxiable = true \[realms\] DOMINIO.LOCAL= { kdc = DC01.DOMINIO.LOCAL admin\_server = DC01.DOMINIO.LOCAL default\_domain = DOMINIO.LOCAL } \[domain\_realm\] .ifpe.local = DOMINIO.LOCAL
##### 3.5. Configuração do SSSD O SSSD é o serviço que realiza a autenticação em si, se apoiando na resolução de nomes e nas facilidades oferecidas pelo kerberos. **3.5.1. O arquivo de configuração principal** Execute o comando a seguir no shell do computador cliente: ```shell touch /etc/sssd/sssd.conf chmod 600 /etc/sssd/sssd.conf nano /etc/sssd/sssd.conf ``` Deixe o arquivo conforme mostrado a seguir.

Neste exemplo, o nome do domínio utilizado foi "EXEMPLO.LOCAL". Altere o nome para o domínio correto.

Neste exemplo, o FQDN do servidor controlador de domínio utilizado foi "DC01.EXEMPLO.LOCAL". Altere o nome para o FQDN correto.

Substitua "CN=USUARIO\_SSSD,OU=SUB,DC=DOMINIO,DC=LOCAL" e "XXXXX\_SENHA\_DO\_SSSD\_XXXXX" pelo CN e senha corretos

\[sssd\] debug\_level = 7 reconnection\_retries = 2 config\_file\_version = 2 sbus\_timeout = 10 services = nss,pam domains = DOMINIO.LOCAL \[nss\] debug\_level = 7 reconnection\_retries = 2 filter\_users = root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy override\_homedir = /home/%u.%d fallback\_homedir = /home/%u default\_shell = /bin/bash \[pam\] debug\_level = 7 reconnection\_retries = 2 pam\_verbosity = 2 pam\_id\_timeout = 15 offline\_credentials\_expiration = 2 offline\_failed\_login\_attempts = 2 offline\_failed\_login\_delay = 2 \[domain/DOMINIO.LOCAL\] debug\_level = 7 reconnection\_retries = 2 enumerate = False cache\_credentials = True entry\_cache\_timeout = 600 \# access\_provider = simple access\_provider = ldap auth\_provider = krb5 chpass\_provider = krb5 id\_provider = ldap krb5\_server = DC01.DOMINIO.LOCAL krb5\_realm = DOMINIO.LOCAL krb5\_store\_password\_if\_offline = True krb5\_kpasswd = DC01.DOMINIO.LOCAL krb5\_renew\_interval = 30m krb5\_renewable\_lifetime = 7d ldap\_default\_bind\_dn = CN=USUARIO\_SSSD,OU=SUB,DC=DOMINIO,DC=LOCAL ldap\_default\_authtok = XXXXX\_SENHA\_DO\_SSSD\_XXXXX ldap\_group\_object\_class = group ldap\_id\_mapping = True ldap\_id\_use\_start\_tls = True ldap\_network\_timeout = 5 ldap\_referrals = False ldap\_schema = ad ldap\_search\_base = DC=DOMINIO,DC=LOCAL ldap\_sudo\_search\_base = DC=DOMINIO,DC=LOCAL ldap\_tls\_reqcert = never ldap\_tls\_cacert = /etc/ssl/private/sssd-ca.pem ldap\_uri = ldaps://DC01.DOMINIO.LOCAL ldap\_access\_order = expire ldap\_account\_expire\_policy = ad ldap\_user\_member\_of = memberOf ldap\_user\_object\_class = user ldap\_force\_upper\_case\_realm = True
**3.5.2. Controlando a execução do serviço** ```shell systemctl enable sssd # Ativa o início automático do serviço após o boot systemctl start sssd # Inicia o serviço imediatamente ```