如何使用 security/sssd 将 Active Directory 与 FreeBSD 10.0 集成?

Vin*_*rão 10 freebsd active-directory kerberos sssd windows-server-2012-r2

使用sssdAD 后端和 Kerberos TGT 工作,从在 FreeBSD 10.0 中的 Windows Server 2012 R2 上运行的 Active Directory 对用户进行身份验证需要哪些步骤?

Vin*_*rão 15

有一些棘手的考虑可以让一切都开箱即用。FreeBSD 目前仅支持sssd1.9.6 版本。因此不支持企业主体名称。

如果您的域具有不匹配的 UPN,它将无法登录,因为在此过程中 Kerberos 身份验证将失败,即使 FreeBSD 支持使用 Kerberos 的企业主体名称,sssd也无法处理这种情况。

因此,在实际版本中,sssd您仅限于在同一域名中拥有用户主体名称,例如:

Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Run Code Online (Sandbox Code Playgroud)

知道了这一点,我们可以描述在 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
Run Code Online (Sandbox Code Playgroud)

2.安装Samba 4.1并配置加入域

安装 Samba 4.1:

$ pkg install samba41
Run Code Online (Sandbox Code Playgroud)

创建/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
Run Code Online (Sandbox Code Playgroud)

索取管理员 Kerberos 票证:

$ kinit Administrator
Run Code Online (Sandbox Code Playgroud)

然后加入域并创建一个keytab

$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Run Code Online (Sandbox Code Playgroud)

3. 安装支持 Kerberos 的 sssd 包和 Cyrus SASL

安装所需的软件包:

$ pkg install sssd cyrus-sasl-gssapi
Run Code Online (Sandbox Code Playgroud)

编辑文件/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 = SERVER-HOSTNAME$@EXAMPLE.COM
Run Code Online (Sandbox Code Playgroud)

4.在nsswitch.conf中添加sssd支持

编辑文件/etc/nsswitch.conf以匹配此设置:

group: files sss
passwd: files sss
Run Code Online (Sandbox Code Playgroud)

5. 配置 PAM 以允许 sssd 身份验证并处理主目录创建

安装用于创建主目录的可选包:

$ pkg install pam_mkhomedir
Run Code Online (Sandbox Code Playgroud)

修改必要的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
Run Code Online (Sandbox Code Playgroud)

6. 切换到启用 SASL 的 OpenLDAP 客户端

$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client
Run Code Online (Sandbox Code Playgroud)

7. 最后确认一切正常

$ getent passwd <username>
Run Code Online (Sandbox Code Playgroud)