[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. 安装支持 Kerberos 的 sssd 包和 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]
有一些棘手的考虑因素可以使一切开箱即用。FreeBSD 目前只支持
sssd
1.9.6 版本。因此不支持企业主体名称。如果您的域具有不匹配的 UPN,它将无法登录,因为在此过程中 Kerberos 身份验证将失败,即使 FreeBSD 支持带有 Kerberos 的企业主体名称,
sssd
也无法处理这种情况。因此,在您的实际版本中,
sssd
您的用户主体名称仅限于同一域名中,例如:知道了这一点,我们可以描述在 FreeBSD 中从 AD 成功验证用户的步骤。
1. 配置 Kerberos
创建
/etc/krb5.conf
具有以下内容的文件:2.安装Samba 4.1并配置加入域
安装 Samba 4.1:
创建
/usr/local/etc/smb4.conf
具有以下内容的文件:索取管理员 Kerberos 票证:
然后加入域并创建一个keytab
3. 安装支持 Kerberos 的 sssd 包和 Cyrus SASL
安装所需的软件包:
编辑文件
/usr/local/etc/sssd/sssd.conf
以匹配此设置:4. nsswitch.conf 中添加 sssd 支持
编辑文件
/etc/nsswitch.conf
以匹配此设置:5. 配置 PAM 以允许 sssd 身份验证并处理主目录创建
安装用于创建主目录的可选包:
修改必要的
PAM
领域以匹配此设置:6. 切换到启用 SASL 的 OpenLDAP 客户端
7. 最后确认一切正常
您在这里使用的是哪个 Kerberos?麻省理工学院的内置一个还是security/krb5?
安装 sssd 时,需要安装 security/krb5,此时在 FreeBSD 中仍被认为是实验性的。于是这个问题。
执行“getent”命令时,我无法获得 AD 用户/组。这可能是因为 NETBIOS 名称与域名不同 - 即在我的例子中,域名是 Dawnsign.com,而 NETBIOS 名称是 DSP。
我只配置了 pam.d 登录模块。为了成功进行身份验证,还需要编辑哪些其他 pam 模块?
任何额外的信息将不胜感激!
即使没有 sssd,从端口重新编译 samba4 也可以像 linux 一样使用 winbind 身份验证。启用 sasl ldap 后,只需从端口重新编译 samba4
这将使用所有需要的支持(gssapi、ldap、kerberos)重新编译 samba,然后像这样编辑 nsswitch.conf
这是我在撰写本文时通过 SSSD 与这些版本的 FreeBSD 进行 AD 集成的指南 (6/2017)
安装(以及有趣的打包和依赖问题)
/usr/bin
在/usr/local/bin
. 由于似乎没有任何基本系统文件在包中,因此您不能简单地删除 Heimdal KRB 的东西。需要注意的事情。各种包的前向依赖关系(有趣的部门以粗体显示,冲突的部门以粗斜体显示):
net-mgmt/adcli:
net/openldap24-sasl-client
security/cyrus-sasl2-gssapi: security/cyrus-sasl2
net/openldap24-sasl-client: security/cyrus-sasl2
security/sssd: security/nss
security/sssd:
security/krb5
security/sssd: security/cyrus-sasl2
security/sssd:
net/openldap24-client
security/sssd: lang/python27
security/sssd: lang/python2
security/sssd: dns/c-ares
security/sssd: devel/tevent
security/sssd: devel/talloc
security/sssd: devel/popt
security/sssd: devel/pcre
security/sssd: devel/libunistring
security/sssd: devel/libinotify
security/sssd: devel/gettext-runtime
security/sssd: devel/ding-libs
security/sssd: devel/dbus
security/sssd: databases/tdb
security/sssd: databases/ldb
各种包的反向依赖:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
,它本身需要 MIT Kerberos,即使我们将 Heimdal 作为基础包adcli
想要openldap-sasl-client
,但其他包(包括 的子依赖项sssd
)拉进来openldap-client
,这是与 sasl 客户端的互斥锁(无论出于何种愚蠢的原因)。这使得安装有点痛苦,即使使用最少的二进制包。在撰写本文时,FreeBSD 的 SSSD 的二进制 pkg 不包括 SSSD 中的 AD 支持
SMB
adcli
,但在撰写本文时,它不起作用。GSSAPI_MIT
cyrus-sasl-gssapi
是必需的,但 pkg 二进制版本不起作用,并且有奇怪的依赖问题导致它删除 SSSD。GSSAPI_MIT
openldap-sasl-client
功能需要,但 SSSD 想要引入非 SASL 版本的 openldap。openldap-sasl-client
的GSSAPI
选项 ( ) 进行配置。make config
pkg remove –f openldap-client
openldap-client
任何其他包(如 SSSD)的情况下删除,并允许安装 SASL 版本openldap-sasl-client
pkg remove –f sssd
(可选)一旦一切正常工作和验证,您就可以使用
pkg create
启用适当的选项创建四个软件包的二进制软件包,而不是在每个系统上的端口中构建它们。二进制文件的安装遵循与端口构建过程类似的模式:pkg install sssd-1.11.7_8.txz
pkg add
其他包(不安装,添加),最后保存 openldap 包。openldap-sasl-client
做一个pkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
openldap-client
openldap-sasl-client
openldap-client
也会引入,所以你也必须修复这些。Kerberos 配置:
/etc/pam.d
我必须修改以使 SSSD 与 FreeBSD 一起使用的文件列表:/etc/pam.d/sshd:
/etc/pam.d/系统:
/etc/pam.d/su:
(缩进)
system.dist
是股票/etc/pam.d/system
文件的副本。它包含在上面的/etc/pam.d/su
文件中以防止 su 命令出现问题。su
root 身份使用 AD 帐户,因为一旦成为 root,su
就不需要进行身份验证,并且帐户信息是通过名称服务开关通过 SSSD 提取的。sudo
仅出于安全原因使用ksu
and 用于从用户 A 切换到用户 Bksu
(in/usr/bin
) 默认没有设置 SUIDksu
工作,chmod u+s /usr/bin/ksu
krb5
安装包/usr/local/bin
)在安装时是 SUID/usr/local/bin
在之前/usr/bin
等ksu
将提示用户输入目标用户的 AD/Kerberos 密码passwd
即使您添加pam_sss.so
到 passwd PAM 文件,也无法更改您的 AD/Kerberos 密码。该passwd
二进制文件仅支持本地和 NISkpasswd
用于更改 AD/Kerberos 服务器上的密码。名称服务开关:
/etc/nsswitch.conf
文件应配置为将 sss 服务用于 passwd 和组。例子:group: files sss
passwd: files sss
加入域:
adcli
kinit
,它会根据提供的信用为您做。adcli join -D mydomain.net -U Administrator--show-details –v
adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
net
实用程序net
实用程序是 Samba 套件的一部分。smb.conf
,这使得使用起来更加困难和不便,尤其是在非交互的情况下。kinit
. 同样,这更不方便,并且使得在脚本中以非交互方式使用变得更加困难,因为有两个步骤而不是一个。SSHD注意事项:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
在使用此选项时进行配置。/bin/passwd
支持 NIS 和本地 passwd 文件。GSSAPICleanupCredentials yes
kdestroy
在注销时执行GSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
与 KDC 对话,但有时会出错(例如,如果主机名与 SSH 服务器的 DNS 名称不匹配)。此选项允许 SSHD 使用/etc/krb5.keytab
文件中的任何主体,其中包括正确的host/<FQDN>@REALM
ssh -K <ip>
不提示输入密码的情况下工作(假设您已经完成了“kinit”,当然)。你好,
这是使用 sssd v1.11.7的一个小更新
如果您使用“id_provider = ad”并且您在 sssd 日志文件中看到以下错误:
您可以使用以下过程来解决此问题,并使 AD 集成正常工作。现在构建带有 Samba 支持的 sssd v1.11.7,需要从 src sssd 构建,因此它与 libsasl2 链接