Kil*_*ine 6 linux active-directory redhat sssd
各位下午好。我一直在仔细阅读各种关于让 Linux 系统使用 AD 进行身份验证的帖子,但没有看到任何接近我正在打击的东西。
这里有很多设置,所以请耐心等待。
首先,目标是让我们所有的 Linux 和 Unix 系统都针对 AD 进行身份验证。对于数百个系统,这不是可选的;用户帐户管理早已成为问题。
我们有几个 AD 实例:一个是“管理 AD”(“MAD”),所有系统管理员帐户都应该在其中。MAD 不信任其他域。所有其他域(“CAD”、“FAD”、“BAD”)都信任 MAD。大多数系统将与 CAD、FAD 或 BAD 相关联。只有内部系统才会与 MAD 相关联。
主要平台是 RHEL,我有 5、6 和 7 的混合物。5 不会很快消失,尽管它在不到一年的时间里就不再支持 RH,但我仍然需要获得人口共 5 个与 AD 集成。任何解决方案都需要跨 5、6 和 7 工作,因为我们不想支持多种做事方式。
我的主要选项(至少是我正在研究的选项)是 Winbind 和 SSSD。考虑到两者之间的选择,我更喜欢 SSSD,因为 Winbind “相当老”。另一个要求是“groups”和“id”从 AD 中生成信息,因为我们打算使用 openssh 的“AllowGroups”功能来限制对特定 AD 组的登录。
我遵循了每本手册、每一个方法、每一个指南,当它归结起来时,总有一件似乎没有被有用记录的小事情阻碍了我。
总的来说,我对 unix/linux 相当强大,但我对 AD、Kerberos 或 LDAP 不强。
出于实验目的,我从 ISO 的全新 RHEL7 安装开始(使用一些基本配置内容启动),在 KS 中没有设置身份验证位。
第一步:同步时间。完毕。
第 2 步:安装/激活oddjob。完毕。
步骤 3:确保目标系统有正向和反向 DNS 条目。完毕。到目前为止,我不能依靠后面的步骤来手动操作。我会应付的。
步骤 4:配置 Kerberos。/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
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
第 6 步:将系统加入 CAD。“kinit Administrator”后跟“net ads join -k”。工作没有任何问题。
步骤 7:配置 SSSD。清理/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
Run Code Online (Sandbox Code Playgroud)
其次是“systemctl start sssd”。这似乎有效,但没有 AD 登录工作。
浏览/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
Run Code Online (Sandbox Code Playgroud)
后来有条目抱怨 sssd_ad 没有连接到 AD,但考虑到我在这里看到的情况,这并不奇怪。
所以:带有 timesync/krb5.conf/smb.conf 的新镜像全部完成,现在“kinit Administrator”后跟“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]#
Run Code Online (Sandbox Code Playgroud)
我猜这个列表应该更长,但在路缘上不强,我不知道这是否真的正确,如果不是它应该是什么样子,也不知道如何到达那里。
我对这件事束手无策,开始认为制作三明治会是一个不那么烦人的职业选择。
任何来自你们的指导将不胜感激。如果我需要在这里添加更多内容,只需说出这个词,它就会出现。
谢谢,-9
您的 SSSD 配置可能是罪魁祸首:
在密钥表中找不到主体匹配 rhel7lab.CAD.LAB@CAD。
根据 klist 输出,这不应该是 CAD.LAB@CAD.LAB 吗?
你可以试试这个SSSD conf(注意默认后缀):
[sssd]
domains = CAD
default_domain_suffix = CAD.LAB
services = nss, pam
config_file_version = 2
cache_credentials = true
debug_level = 7
Run Code Online (Sandbox Code Playgroud)
重启SSSD,看看是否可以?