Linux 身份验证流程(NSS -> PAM -> AD)

Linux 身份验证流程(NSS -> PAM -> AD)

我是一家组织的新系统管理员,希望了解有关 NSS、PAM 和 WINBIND 如何协同工作的身份验证流程。我们一直遇到与 winbind 相关的问题,我想尝试改进我们的配置。

下面是一些关键的配置文件。请注意,为了简洁起见,我只复制了一小部分。

/etc/ssh/sshd_config

UsePAM yes

/etc/nsswitch.conf

passwd: files ldap winbind
shadow: files ldap winbind
group: files ldap winbind
services: files ldap

/etc/pam.d/ssh

auth required pam_env.so
auth sufficient pam_winbind.so
auth sufficient pam_krb5.so
auth sufficient pam_unix.so nullok
auth required pam_deny.so

举个例子,假设我尝试使用 AD 域中的帐户通过 SSH 访问 Linux 系统。 Linux系统使用winbind与AD交互。

下面是流程如何我认为这会起作用:

  1. SSH 服务收到通过端口 22 访问它的请求。用户输入其凭据。
  2. 由于 SSH 服务配置为使用 PAM 进行身份验证,因此它将引用“/etc/pam.d/ssh”来查看要使用哪些 PAM 模块。
  3. 在 PAM 中,SSH 配置为首先尝试“pam_winbind.so”模块。该模块的功能是查询AD进行认证。如果成功,则足以满足 PAM 的要求,因此它会授予用户访问权限。否则,它将继续沿着列表向下移动。

NSS 在这个过程中扮演什么角色?我很难理解 NSS 的实际用途。我认为这是一个告诉操作系统利用寻找某些“名称”的系统。例如,如果查找用户帐户(使用上面的 nsswitch.conf 文件),它将首先查看本地“文件”。如果在那里找不到帐户信息,它将查找“ldap”服务器,最后查找“winbind”。

但这不是 PAM 正在做的事情吗?

PAM 利用“pam_winbind.so”库对域控制器 winbind 配置的内容进行身份验证。为什么我们需要在 NSS 中列出“winbind”?也许这适用于不使用 PAM 的服务?通常是其中之一还是另一个?

在这里任何知识转移将不胜感激!

相关内容