Boa tarde pessoal. Eu tenho lido vários posts sobre como fazer com que os sistemas linux sejam autenticados usando o AD, mas não vi nada perto do que eu estou batendo minha cabeça.
Há muita configuração aqui, por favor, tenha paciência comigo.
Em primeiro lugar, o objetivo é ter todos os nossos sistemas Linux e Unix autenticados contra o AD. Isso não é opcional com várias centenas de sistemas; o gerenciamento de contas de usuários já não é mais um problema.
Temos várias instâncias de AD: uma é uma "AD de gerenciamento" ("MAD") onde todas as contas de sysadmin devem residir. MAD não confia em outros domínios. Todos os outros domínios ("CAD", "FAD", "BAD") confiam em MAD. A maioria dos sistemas será associada a CAD, FAD ou BAD. Apenas sistemas internos serão associados ao MAD.
A principal plataforma é RHEL, e eu tenho uma mistura de 5, 6 e 7. 5 não vai desaparecer tão cedo, e apesar de ficar fora de suporte com RH em menos de um ano, eu ainda tenho que obtenha a população de 5 integrada ao AD. Qualquer solução precisa funcionar em 5, 6 e 7, pois não queremos dar suporte a várias maneiras de fazer as coisas.
Minhas opções principais (pelo menos as que estou trabalhando) são Winbind e SSSD. Dada a escolha entre os dois, eu prefiro SSSD como Winbind é "muito velho". Um requisito a mais é que "groups" e "id" produzam informações a partir do AD, já que pretendemos usar o recurso "AllowGroups" do openssh para restringir logins a determinados grupos do AD.
Eu segui todos os manuais, todos os procedimentos, todos os guias e, quando se trata disso, sempre há uma pequena coisa que não parece ser documentada de maneira útil e que me bloqueia.
Eu sou bastante strong com o unix / linux em geral, mas não sou strong com AD, Kerberos ou LDAP.
Para finalidades de laboratório, estou começando com uma nova instalação do RHEL7 fora do ISO (kickstart com algumas coisas básicas de configuração), sem nenhum bit de autenticação configurado dentro do KS.
Etapa 1: hora da sincronização. Feito.
Passo 2: Instale / ative o oddjob. Feito.
Etapa 3: verifique se há entradas DNS para frente e reversa para o sistema de destino. Feito. Manualmente, até agora, não posso depender de etapas posteriores para acertar. Eu vou lidar.
Etapa 4: configurar o Kerberos. Versão sanitizada do /etc/krb5.conf:
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 = CAD.LAB
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
CAD.LAB = {
kdc = cad_dc_01.cad.lab
}
[domain_realm]
.cad.lab = CAD.LAB
cad.lab = CAD.LAB
Passo 5: Configure o samba.conf apenas o suficiente para o SSSD. Seção /etc/samba/smb.conf [globals], sanitizada:
[global]
workgroup = CAD
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
log file = /var/log/samba/%m.log
log level = 0
password server = cad_dc_01.cad.lab
realm = CAD.LAB
security = ads
Passo 6: Junte o sistema ao CAD. "Administrador kinit" seguido de "anúncios líquidos join -k". Funciona sem problemas.
Etapa 7: configurar o SSSD. Sanitized /etc/sss/sssd.conf:
[sssd]
domains = CAD
services = nss, pam
config_file_version = 2
cache_credentials = true
debug_level = 7
[domain/CAD]
enumerate = true
# I know enumerate will cause problems later, I'm only turning it on for lab
debug_level = 7
id_provider = ad
ad_server = cad_dc_01.cad.lab
auth_provider = ad
chpass_provider = ad
access_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%u
[nss]
debug_level = 7
[pam]
debug_level = 7
Seguido por "systemctl start sssd". O que parece funcionar, mas nenhum logins do AD funciona.
Navegando por /var/log/sssd/sssd_CAD.log, eu acho algumas coisas que me dão uma pista de onde as coisas estão estragando, mas eu não fui bem sucedido em encontrar uma maneira de consertá-las: cada O guia que leio dá uma seqüência de etapas e assume que todas as etapas funcionam. Não encontrei nada para me ajudar a descobrir o que há de errado quando uma dessas etapas não funciona.
Eu não vou postar o sssd_CAD.log inteiro a menos que alguém pergunte, mas aqui estão os primeiros indicadores de que algo está errado.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [ad_set_sdap_options] (0x0100): Option krb5_realm set to CAD
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [sdap_set_sasl_options] (0x0100): Will look for rhel7lab.CAD.LAB@CAD in default keytab
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): trying to select the most appropriate principal from keytab
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching rhel7lab.CAD.LAB@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching rhel7lab$@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching host/rhel7lab.CAD.LAB@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching *$@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching host/*@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [match_principal] (0x1000): Principal matched to the sample (host/*@(null)).
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): Selected primary: host/rhel7lab.CAD.LAB
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): Selected realm: CAD.LAB
Existem entradas posteriores que reclamam que o sssd_ad não está conectado ao AD, mas isso não é surpresa, dado o que eu vejo aqui.
Então: nova imagem com o comando timesync / krb5.conf / smb.conf pronto, agora "kinit Administrator" seguido de "klist"
[root@rhel7lab]# kinit Administrator
Password for [email protected]:
[root@rhel7lab]# net ads join -k
Using short domain name -- CAD
Joined 'RHEL7LAB' to dns domain 'CAD.dev'
[root@rhel7lab]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
05/31/2016 12:46:35 05/31/2016 22:46:35 krbtgt/[email protected]
renew until 06/07/2016 12:46:30
05/31/2016 12:46:39 05/31/2016 22:46:35 cifs/[email protected]
renew until 06/07/2016 12:46:30
05/31/2016 12:46:39 05/31/2016 22:46:35 ldap/[email protected]
renew until 06/07/2016 12:46:30
[root@rhel7lab]#
Eu estou supondo que esta lista deve ser muito mais longa, mas não sendo strong no meio-fio, eu não sei se isso realmente está correto, se não como deve ser, nem como chegar lá.
Estou no final da minha corda com essa coisa e começar a pensar em fazer sanduíches seria uma escolha de carreira menos irritante.
Qualquer orientação de vocês seria muito apreciada. Se houver mais coisas que eu preciso adicionar aqui, apenas diga a palavra e ela aparecerá.
Obrigado, -9