连接到 Active Directory(可能使用 winbind)

连接到 Active Directory(可能使用 winbind)

我试图弄清楚如何将Linux环境身份验证系统集成到Windows server 2012,我找到了一种使用winbind.

我在Google上搜索过,有几个页面介绍了如何做到这一点,从同​​步时间到配置一些配置文件。

我在 Linux 中设置主机名和主机,如下所示。

[/etc/主机]
192.168.XXX.XX1 test1.example.com 示例## Windows IP
192.168.XXX.XX2 test1 ## Linux IP

[/etc/主机名]
测试1

我设置了一个具有以下属性的 Active Directory,并且有两个帐户。

计算机名称:TEST1
域名:example.com
帐户1:管理员
帐户2:测试者1

因此,我将Linux环境的DNS设置为AD的IP地址。可以查看“resolv.conf”中的信息。

[root ~]# nslookup example.com
服务器:192.168.xxx.xx1
地址:192.168.xxx.xx1#53

名称:example.com
地址:192.168.xxx.xxx

在“nsswitch.conf”中,我仅在“文件”旁边添加了“winbind”一词。

passwd:文件 winbind
影子:文件 sss winbind
组: 文件 winbind

在“krb5.conf”中,我更改了查找部分和默认领域。

[库默认值]
dns_lookup_realm = true
dns_lookup_kdc = true
默认领域=EXAMPLE.COM
[领域]
域名.COM = {
  kdc = example.com
  admin_server = example.com
}
[域领域]
.domain.com = 示例.COM
域名.com = 示例.COM

最后,我设置了smb.conf.然而,有很多不同的方法来设置它,所以我不确定。刚刚选择了 Google 页面之一。

当我尝试使用“administrator”id 连接到 Windows Server 时,显示以下错误:

[root ~]# 广告网加入 -U 管理员
gse_get_client_auth_token:gss_init_sec_context 失败,并出现 [未指定的 GSS 故障。次要代码可能提供更多信息:消息流已修改](2529638953)
对于 ldap/test1.example.com,用户 [Administrator] 领域 [EXAMPLE.COM] 的 kinit 成功,但 ads_sasl_spnego_gensec_bind(KRB5) 失败:尝试的登录无效。这可能是由于用户名或身份验证信息错误造成的。
加入域失败:连接 AD 失败:尝试登录无效。这可能是由于用户名或身份验证信息错误造成的。

我就卡在这一步了,谷歌也找不到解决的方法。我需要编辑一些文件吗/etc/pam.d

使用“testparm”工具后smb.conf,最终我找不到任何问题,但现在当我使用“net ads testjoin”时,它显示以下消息。

ads_connect:当前没有可用于服务登录请求的登录服务器。

答案1

撤消所有更改并从 AD 中删除计算机帐户。取出winbind包装。

安装合适的软件包选择。在基于 Debian 的系统上,您可以使用apt-get install samba smbclient sssd realmd dnsutils policykit-1 packagekit sssd-tools sssd libnss-sss libpam-sss adcli.

如果此时sssd无法启动,请不要担心。它需要使用realm命令进行配置,我们稍后将讨论该命令。

确保您的本地基于 Linux 的系统在其 DNS 服务器上有您的 DC。不要添加任何其他 DNS 服务器,除非它是 Active Directory 环境的一部分。如果您只是编辑/etc/resolv.conf并忽略“不要编辑此文件”警告,您的更改可能会被覆盖。此时,您的系统将无法对任何人进行身份验证,甚至可能最终脱离域。 (用户此时往往会感到不高兴。)

确保您的本地时间与 Active Directory 中的时间匹配,因为 Kerberos 无法在偏差大于 5 分钟(300 秒)的情况下工作。

对于您的本地域,contoso.com以 root 身份运行以下三个命令:

domain=contoso.com          # The FQDN itself. Not machine.FQDN
realm discover "$domain"    # If this fails, stop and recheck everything
realm join "$domain"        # [--user <ad_username>] [--computer-ou <ou>]

如果您需要提供 AD 帐户名realm join,请使用realm join --user <ad_username> "$domain",其中<ad_username>代表不合格sAMAccountName。即使您自己的 AD 帐户不是域管理员,也应该为至少 10 个客户端工作,尽管administrator如果您知道其密码,这也是一个有用的选择。该--computer-ou选项允许您指定帐户的初始 OU。将此留空,除非您知道其正确值(不要猜测)。

修复sssd.conf文件。这ad_hostname对于某些版本是必需的解决错误. LDAP 组嵌套级别允许sssd处理嵌套组的成员资格。

sed -i "/^ad_domain /s/$/\nad_hostname = $(hostname).$domain/" /etc/sssd/sssd.conf
( echo; echo 'ldap_group_nesting_level = 5'; echo 'ldap_use_tokengroups = false' ) >>/etc/sssd/sssd.conf
service sssd restart

相关内容