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:
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:
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
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
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
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:
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:
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
systemctl enable sssd # Ativa o início automático do serviço após o boot
systemctl start sssd # Inicia o serviço imediatamente
Nenhum comentário