问:RHEL,SSSD,Active Directory

下午好。 我已经仔细阅读了各种关于让Linux系统使用AD进行身份validation的文章,但是还没有看到什么东西逼近我打我的头。

这里有很多设置,请耐心等待。

首先,我们的目标是让我们所有的Linux和Unix系统对AD进行身份validation。 这在数百个系统中不是可选的; 用户账户pipe理早已成为一个问题。

我们有几个AD实例:一个是所有系统pipe理员帐户应该存在的“pipe理AD”(“MAD”)。 MAD不相信其他域名。 所有其他域(“CAD”,“FAD”,“坏”)都相信MAD。 大多数系统将与CAD,FAD或BAD相关联。 只有内部系统将与MAD相关联。

主要的平台是RHEL,我有5,6,7的混合物.5不会很快消失,尽pipe在不到一年的时间里它会退出RH的支持,但是我仍然得到人口5与AD集成在一起。 任何解决scheme都需要在5,6和7的工作,因为我们不想支持多种方式的做事。

我的主要select(至less是我正在工作的)是Winbind和SSSD。 鉴于两者之间的select,我宁愿SSSD Winbind是“相当古老”。 还有一个要求是“组”和“id”产生的AD信息,因为我们打算使用openssh的“AllowGroups”function来限制login到特定的AD组。

我遵循每一个手册,每一个指导,每一个指导,当它归结于它时,总有一件似乎没有被有效logging的东西阻挡了我。

一般来说,我对unix / linux相当强大,但是我对AD,Kerberos或LDAP不够强大。

出于实验目的,我将从全新安装的ISO(kickstart,一些基本的configuration)开始,在KS中没有设置validation位。

第1步:同步时间。 完成。

第2步:安装/激活oddjob。 完成。

步骤3:确保目标系统有正向和反向DNS条目。 完成。 手动到目前为止,我不能依靠后面的步骤来解决问题。 我会应付的。

步骤4:configurationKerberos。 /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 

第5步:为SSSD设置足够的samba.conf。 /etc/samba/smb.conf [globals]部分,已过滤:

 [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 

第6步:将系统joinCAD。 “kinit Administrator”后跟“net ads join -k”。 工作没有任何问题。

步骤7:configurationSSSD。 清除/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 

紧接着是“systemctl start sssd”。 这似乎工作,但没有ADlogin工作。

通过浏览/var/log/sssd/sssd_CAD.log,我发现一些事情给我提供了一些线索,让我知道在哪里搞砸了,但是我找不到解决这些问题的方法:我阅读的每个指南给出一系列的步骤,并假设每一步工作。 如果其中一个步骤不起作用,我找不出什么来帮助我找出问题所在。

除非有人提出要求,否则我不会发布整个sssd_CAD.log,但是这里有第一个指标是错误的。

 (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 

后来有一些抱怨sssd_ad没有连接到AD的条目,但根据我在这里看到的,这并不奇怪。

所以:使用timesync / krb5.conf / smb.conf全部完成,现在“kinitpipe理员”,然后是“klist”

 [root@rhel7lab]# kinit Administrator Password for Administrator@CAD.LAB: [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: Administrator@CAD.LAB Valid starting Expires Service principal 05/31/2016 12:46:35 05/31/2016 22:46:35 krbtgt/CAD.LAB@CAD.LAB renew until 06/07/2016 12:46:30 05/31/2016 12:46:39 05/31/2016 22:46:35 cifs/CADDC01.CAD.LAB@CAD.LAB renew until 06/07/2016 12:46:30 05/31/2016 12:46:39 05/31/2016 22:46:35 ldap/cad_dc_01.cad.lab@CAD.LAB renew until 06/07/2016 12:46:30 [root@rhel7lab]# 

我猜这个清单应该长得多,但是在路边还不够强,我不知道这个清单是否正确,如果不是清楚的话,也不知道怎么清楚。

我在这件事情的最后,开始认为制作三明治将是一个不那么烦人的职业select。

任何人的指导,将不胜感激。 如果还有更多的东西需要添加,只要说出来就可以了。

谢谢,-9

你的SSSDconfiguration可能是罪魁祸首:

没有在keytab中find匹配的主要rhel7lab.CAD.LAB@CAD。

不应该是CAD.LAB@CAD.LAB,根据klist输出?

你可以试试这个SSSD conf(注意默认的后缀):

 [sssd] domains = CAD default_domain_suffix = CAD.LAB services = nss, pam config_file_version = 2 cache_credentials = true debug_level = 7 

重新启动SSSD,看看它是否工作?

我不确定它直接解决你的问题,但你试过realmd? 它自动处理很多conf文件的设置。 这往往会产生更可预测的错误与消息更容易谷歌search。

在你的情况下,混合大小写keytabsearch看起来是错误的:

 rhel7lab.CAD.LAB 

您的hostnamehosts条目是否大写? Kerberos领域应该是全部大写,但我不相信这适用于其他任何东西。 以下是testing台“领域连接”中生成的列表示例:

 LIN3$@LDAP.<REALM>.COM host/LIN3@LDAP.<REALM>.COM host/lin3.ldap.<domain>.com@LDAP.<REALM>.COM