linux之SSSD

来自ubuntu官网,比网上杂七杂八互抄的来的好。链接https://ubuntu.com/server/docs/service-sssd或者前往SSSD开发者的官网https://sssd.io/docs/introduction.html查看

SSSD

SSSD代表SystemSecurityServicesDaemon,它实际上是一组守护进程,用于处理来自各种网络源的身份验证、授权以及用户和组信息。它的核心是支持:

 

SSSD提供PAM和NSS模块来将这些远程源集成到您的系统中,并允许远程用户登录并被识别为有效用户,包括组成员。为了允许断开连接的操作,SSSD还可以缓存这些信息,以便用户可以在发生网络故障或其他同类问题时继续登录。

本指南将重点介绍部署SSSD的最常见场景。

SSSD和ActiveDirectory

本节描述使用sssd通过使用sssd的“ad”提供程序来验证针对ActiveDirectory的用户登录。最后,Active Directory用户将能够使用他们的AD凭据登录到主机上。还将保持小组成员资格。

先决条件、假设和要求

  • 本指南不解释Active Directory、它是如何工作的、如何设置ActiveDirectory或如何维护它。

  • 本指南假设已经配置了工作ActiveDirectory域,并且您可以访问凭据将计算机连接到该域。

  • 域控制器充当域的权威DNS服务器。

  • 域控制器是主要的dns解析器(请使用systemd-resolve --status)

  • 系统时间是正确的,并且是同步的,通过这样的服务来维护编年史NTP

  • 本例中使用的域是ad1.example.com .

软件安装

安装下列软件包:

sudo apt install sssd-ad sssd-tools realmd adcli

加入域

我们将使用realm命令,从realmd包,以加入域并创建sssd配置。

让我们验证通过DNS可以发现域:

$ sudo realm -v discover ad1.example.com
 * Resolving: _ldap._tcp.ad1.example.com
 * Performing LDAP DSE lookup on: 10.51.0.5
 * Successfully discovered: ad1.example.com
ad1.example.com
  type: kerberos
  realm-name: AD1.EXAMPLE.COM
  domain-name: ad1.example.com
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin

这将执行几个检查,并确定与sssd一起使用的最佳软件堆栈。Sssd可以通过包装袋,但我们以前已经安装过了。

现在让我们加入域:

$ sudo realm join ad1.example.com
Password for Administrator: 

那是相当平淡无奇的。如果您想看看它在做什么,请通过-v备选方案:

$ sudo realm join -v ad1.example.com
 * Resolving: _ldap._tcp.ad1.example.com
 * Performing LDAP DSE lookup on: 10.51.0.5
 * Successfully discovered: ad1.example.com
Password for Administrator: 
 * Unconditionally checking packages
 * Resolving required packages
 * LANG=C /usr/sbin/adcli join --verbose --domain ad1.example.com --domain-realm AD1.EXAMPLE.COM --domain-controller 10.51.0.5 --login-type user --login-user Administrator --stdin-password
 * Using domain name: ad1.example.com
 * Calculated computer account name from fqdn: AD-CLIENT
 * Using domain realm: ad1.example.com
 * Sending NetLogon ping to domain controller: 10.51.0.5
 * Received NetLogon info from: SERVER1.ad1.example.com
 * Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-hUfTUg/krb5.d/adcli-krb5-conf-hv2kzi
 * Authenticated as user: Administrator@AD1.EXAMPLE.COM
 * Looked up short domain name: AD1
 * Looked up domain SID: S-1-5-21-2660147319-831819607-3409034899
 * Using fully qualified name: ad-client.ad1.example.com
 * Using domain name: ad1.example.com
 * Using computer account name: AD-CLIENT
 * Using domain realm: ad1.example.com
 * Calculated computer account name from fqdn: AD-CLIENT
 * Generated 120 character computer password
 * Using keytab: FILE:/etc/krb5.keytab
 * Found computer account for AD-CLIENT$ at: CN=AD-CLIENT,CN=Computers,DC=ad1,DC=example,DC=com
 * Sending NetLogon ping to domain controller: 10.51.0.5
 * Received NetLogon info from: SERVER1.ad1.example.com
 * Set computer password
 * Retrieved kvno '3' for computer account in directory: CN=AD-CLIENT,CN=Computers,DC=ad1,DC=example,DC=com
 * Checking RestrictedKrbHost/ad-client.ad1.example.com
 *    Added RestrictedKrbHost/ad-client.ad1.example.com
 * Checking RestrictedKrbHost/AD-CLIENT
 *    Added RestrictedKrbHost/AD-CLIENT
 * Checking host/ad-client.ad1.example.com
 *    Added host/ad-client.ad1.example.com
 * Checking host/AD-CLIENT
 *    Added host/AD-CLIENT
 * Discovered which keytab salt to use
 * Added the entries to the keytab: AD-CLIENT$@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: host/AD-CLIENT@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: host/ad-client.ad1.example.com@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/AD-CLIENT@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/ad-client.ad1.example.com@AD1.EXAMPLE.COM: FILE:/etc/krb5.keytab
 * /usr/sbin/update-rc.d sssd enable
 * /usr/sbin/service sssd restart
 * Successfully enrolled machine in realm

默认情况下,境界将使用管理员请求连接的域帐户。如果您需要使用另一个帐户,请将其传递给工具。-U选择。

另一种常用的加入域的方法是使用OTP,或一次密码、令牌。为此,请使用--one-time-password选择。

SSSD配置

这个境界工具已经负责创建sssd配置,添加PAM和NSS模块,并启动必要的服务。

让我们看看/etc/sssd/sssd.conf:

[sssd]
domains = ad1.example.com
config_file_version = 2
services = nss, pam

[domain/ad1.example.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = AD1.EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli 
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = ad1.example.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

需要记住的是,该文件必须具有权限。0600和所有权根:根否则SSD就不会启动了!

让我们强调一下这个配置中的一些内容:

  • 缓存凭证:这允许在无法访问AD服务器时登录。
  • 主目录:默认情况下/home/<user>@<domain>。例如,AD用户约翰的主目录/home/john@ad1.example.com
  • 使用完全限定的名称*用户将采用表格用户@域,而不仅仅是用户。只有当您确定没有其他域将通过几种可能的信任关系中的一种加入AD林时,才应更改此值。

自动主目录创建

这是什么realm工具没有为我们做的是设置pam_mkhomedir,以便网络用户在登录时可以获得主目录。其余的步骤可以通过运行以下命令来完成:

sudo pam-auth-update --enable mkhomedir

更多内容访问https://ubuntu.com/server/docs/service-sssd
posted @ 2021-12-15 21:52  头发重要  阅读(5391)  评论(0编辑  收藏  举报