sssd
在 FreeBSD 10.0 中使用Kerberos TGT 工作的 AD 后端从在 Windows Server 2012 R2 上运行的 Active Directory 验证用户需要哪些步骤?
答案1
要使一切开箱即用,需要进行一些巧妙的考虑。FreeBSDsssd
目前仅支持 1.9.6 版。因此不支持企业主体名称。
如果您的域具有不匹配的 UPN,则将无法登录,因为 Kerberos 身份验证将在此过程中失败,即使 FreeBSD 支持使用 Kerberos 的企业主体名称,也无法sssd
处理这种情况。
因此在实际版本中,sssd
您只能拥有同一个域名内的用户主体名称,例如:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
[email protected] sAMAccountName: username
了解了这一点,我们就可以描述在 FreeBSD 中从 AD 成功验证用户的步骤。
1.配置 Kerberos
/etc/krb5.conf
创建包含以下内容的文件:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
2.安装Samba 4.1并配置它加入域
安装 Samba 4.1:
$ pkg install samba41
/usr/local/etc/smb4.conf
创建包含以下内容的文件:
[global]
security = ads
realm = EXAMPLE.COM
workgroup = EXAMPLE
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
log file = /var/log/samba/%m.log
请求管理员 Kerberos 票证:
$ kinit Administrator
然后加入域并创建 keytab
$ net ads join createupn=host/[email protected] -k
$ net ads keytab create -k
3. 安装 sssd 包和支持 Kerberos 的 Cyrus SASL
安装所需的软件包:
$ pkg install sssd cyrus-sasl-gssapi
编辑文件/usr/local/etc/sssd/sssd.conf
以匹配此设置:
[sssd]
config_file_version = 2
services = nss, pam
domains = example.com
[nss]
[pam]
[domain/example.com]
# Uncomment if you need offline logins
#cache_credentials = true
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
# Comment out if the users have the shell and home dir set on the AD side
default_shell = /bin/tcsh
fallback_homedir = /home/%u
# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
#ldap_sasl_mech = GSSAPI
#ldap_sasl_authid = [email protected]
4. 在 nsswitch.conf 中添加 sssd 支持
编辑文件/etc/nsswitch.conf
以匹配此设置:
group: files sss
passwd: files sss
5. 配置 PAM 以允许 sssd 身份验证并处理主目录创建
安装用于创建主目录的可选包:
$ pkg install pam_mkhomedir
修改必要的PAM
领域以匹配此设置:
auth sufficient /usr/local/lib/pam_sss.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
session required /usr/local/lib/pam_mkhomedir.so mode=0700
session optional /usr/local/lib/pam_sss.so
password sufficient /usr/local/lib/pam_sss.so use_authtok
6. 切换到启用 SASL 的 OpenLDAP 客户端
$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client
7. 最后确认一切正常
$ getent passwd <username>
答案2
您在这里使用哪种 Kerberos?内置的还是 MIT 的 security/krb5?
安装 sssd 时,需要安装 security/krb5,而目前 FreeBSD 中仍将其视为实验性的。因此出现了这个问题。
执行“getent”命令时,我无法获取 AD 用户/组。这可能是因为 NETBIOS 名称与域名不同 - 在我的情况下,域名是 dawnsign.com 而 NETBIOS 名称是 DSP。
我只配置了 pam.d 登录模块。为了成功进行身份验证,还需要编辑哪些其他 pam 模块?
任何补充信息都将不胜感激!
答案3
重新编译 samba4 可以从 ports 中使用 winbind 身份验证,就像 linux 一样,即使没有 sssd。只需在启用 sasl ldap 后重新编译 samba4 即可
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
这将重新编译 samba 并添加所需的所有支持(gssapi、ldap、kerberos),然后像这样编辑 nsswitch.conf
passwd: files winbind
group: files winbind
答案4
你好,
这是关于使用 sssd 的一个小更新v1.11.7
如果您使用“id_provider = ad”,并且在 sssd 日志文件中看到以下错误:
/var/log/sssd/sssd_example.com.log
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0020): ldap_sasl_bind failed (-12)[Not Supported]
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0080): Extended failure message: [unknown error]
您可以使用以下步骤解决此问题并使 AD 集成正常工作。现在构建具有 Samba 支持的 sssd v1.11.7,需要从 src sssd 构建,以便它与 libsasl2 链接
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install