设置:

设置:

在彻底检查了整个互联网之后,我希望可以在这里得到帮助。

我正在尝试将 ubuntu 12.04 服务器集成到具有 nfs 和单点登录的 Windows 2012 活动目录中。

设置:

  • srv02 Windows 服务器
  • srv03 Ubuntu 文件服务器
  • srv04 Ubuntu 应用服务器

  • 域名:lettrich.local

  • 领域: LETTRICH.LOCAL

什么有效

  • 使用 dns ntp 和 dhcp 设置 Windows 2012 AD
  • ubuntu 服务器使用 msktutil 在 ad 中注册并获取
    1. 用户的 Kerberos 票证(例如 kinit[电子邮件保护]作品)
    2. 和机器( kinit -k[电子邮件保护]作品),
    3. uids 和 gids 使用 AD 上的 UNIX 身份管理和 gssapi 上的 sssd 进行解析。

无效的方法:

  • 在 srv03 上托管的 srv04 上安装 NFS 共享。
  • 获取服务主体的 Kerberos 票证。

例如。

sudo kdestroy
sudo kinit -k
kinit: Client 'host/[email protected]' not found in Kerberos database while getting initial credentials

srv03 上的 krb5.keytab,与 srv04 类似。

sudo klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
  10 [email protected] (arcfour-hmac) 
  10 [email protected] (aes128-cts-hmac-sha1-96) 
  10 [email protected] (aes256-cts-hmac-sha1-96) 
  10 nfs/[email protected] (arcfour-hmac) 
  10 nfs/[email protected] (aes128-cts-hmac-sha1-96) 
  10 nfs/[email protected] (aes256-cts-hmac-sha1-96) 
  10 host/[email protected] (arcfour-hmac) 
  10 host/[email protected] (aes128-cts-hmac-sha1-96) 
  10 host/[email protected] (aes256-cts-hmac-sha1-96)

nfs 导出:

cat /etc/exports
/export               gss/krb5(rw,fsid=0,no_subtree_check,sync,insecure,crossmnt,anonuid=65534,anongid=65534)
/export/users           gss/krb5(rw,no_subtree_check,sync,insecure,nohide,anonuid=65534,anongid=65534)
/export/groups           gss/krb5(rw,no_subtree_check,sync,insecure,nohide,anonuid=65534,anongid=65534)
/export/share           gss/krb5(rw,no_subtree_check,sync,insecure,nohide,anonuid=65534,anongid=65534)
/export/backup           gss/krb5(rw,no_subtree_check,sync,insecure,nohide,anonuid=65534,anongid=65534)

在 srv04 上安装

sudo mount -t nfs4 -o sec=krb5 srv03:/export /mnt

给了我错误

srv04 rpc.gssd[754]: ERROR: No credentials found for connection to server srv03

Active Directory 将 srv03 和 srv04 列为具有正确服务主体名称的域计算机。(名称相应更改)

service principal name = nfs/srv03.lettrich.local; host/srv03.lettrich.local

我的错误在哪里?(是的,时间同步了 ;-))

如果需要的话将提供更多信息。

在此先感谢所有愿意提供帮助的人。

答案1

首先,您应该直接注册并恢复新 Linux 服务器的 DNS 记录。在 Windows 域中注册。

其次,在 Linux 服务器中将 DNS 解析器指向 Windows,并修改 Linux 中的 /etc/hosts 以获取正确的字段

第三,必须安装 Kerberos5 和 winbind apps/modules/libraries

第四,配置 /etc/krb5.conf:

[libdefaults]
    default_realm = YOUR.FULL.DOMAIN.WITH.UPPER.CHARS

[realms]
    YOUR.FULL.DOMAIN.WITH.UPPER.CHARS = {
            kdc = list of IPs windows domain servers
            admin_server = one ip for master domain server
    }

[domain_realm]
    your.full.comain.with.lover.chars = YOUR.FULL.DOMAIN.WITH.UPPER.CHARS

[logging]
#example logging
    kdc = FILE:/var/log/kerberos/krb5kdc.log
    admin_server = FILE:/var/log/kerberos/kadmin.log
    default = FILE:/var/log/kerberos/krb5lib.log

五、配置/etc/samba/smb.conf:

[global]
workgroup = YOUR.SHORT.DOMAIN.WITH.UPPER.CASE
netbios name = YOUR.SERVER.NAME.WITH.UPPER.CASE.WITHOUT.DOMAIN
realm = YOUR.FULL.DOMAIN.WITH.UPPER.CHARS
security = ads
password server = windows.ip.server.what.allows.password.change
wins server = as.above.supports.wins.messages
wins proxy = no
kerberos method = system keytab
dedicated keytab file = /etc/krb5.keytab
server string = write what you want using %h as host name
dns proxy = no
idmap config * : backend = rid
idmap config * : range = 10000-20000
winbind use default domain = Yes
winbind enum users = Yes
winbind enum groups = Yes
winbind nested groups = Yes
winbind separator = +
winbind refresh tickets = yes
template shell = /bin/bash
template homedir = /home/%D/%U
preferred master = no
inherit acls = Yes
map acl inherit = Yes
acl group control

第六,验证您是否能够使用临时任何用户进行连接:

wbinfo -t   #test only
net getdomainsid  #should print local and domain identifier
wbinfo -u   #domain user list, may take long time for many users
wbinfo -g   #domain group list

第七,创建密码永不过期且无法更改的技术用户帐户。其他用户保留默认设置。将该用户收集到单独的 AD 目录中 :)

八、生成keytab:

net ads keytab 创建-U[电子邮件保护]

然后检查 /etc/krb5.keytab 是否存在

现在您可以配置其他服务,特别是使用 ntlm 助手。您可以使用以下方法测试连接:

ntlm_auth --username UPPER.CASE.SHORTNAME.DOMAIN+your.technical.username

输入密码,你就会看到状态:

NT_STATUS_OK: Success (0x0)

现在您可以配置 PAM 来验证许多服务,但我没有这样做。我成功地将该配置与 apache2.2 ntlm 身份验证结合使用。我看到了 ssh 和 Xsession 的 pam 配置。

主要思想是,只有 winbind 才能向 Active Directory 进行身份验证。所有其他服务都以任何方式在本地向 winbind 进行身份验证。Winbind 是 samba 的一部分。如果您不需要 samba,则只安装 winbind,这会安装一些 samba 库。

有时当您配置连接时,wbinfo 会连接失败。然后您必须等待片刻,5 分钟或更长时间才能传播域信息。

当然,所有机器上的时间都应该同步。为此配置 NTP。我使用的是 debian,但 ubuntu 使一切都与 debian 相似 :) 祝你好运。

答案2

您如何为客户端创建 SPN?

我使用 Samba 来做这件事并取得了良好的效果(网络广告加入)。

答案3

我必须承认,随着时间的推移,我忘记回答并关闭此帖子。遵循这些说明以及创建正确的 SSSD 配置解决了我的问题: http://ubuntuforums.org/showthread.php?t=1924660

相关内容