SSH - 使用PAM 是还是否?

SSH - 使用PAM 是还是否?

设置基于 SSH 密钥的身份验证后,建议人们禁用 SSH 密码身份验证。

这是通过导航到/etc/ssh/sshd_config并确保以下行没有被注释掉来完成的:

PasswordAuthentication no

一些教程,例如

还建议设置

UsePAM no

执行此操作后,我注意到我不再收到来自主机的会话通知。例如,当我想关闭/重新启动它时,终端会挂起,我不再收到:

Connection to 192.168.0.3 closed by remote host.
Connection to 192.168.0.3 closed.

我读过了这里一个人应该“可能想继续使用它”。此外,它实际上可能有助于您获得更安全。

问题

  1. 它究竟UsePAM no对安全有何贡献?
  2. 如果我禁用,我还能以某种方式获取会话状态吗UsePAM

答案1

我复制了默认配置文件中的注释

将其设置为“yes”以启用 PAM 身份验证、帐户处理和会话处理。如果启用此选项,将允许通过 ChallengeResponseAuthentication 和 PasswordAuthentication 进行 PAM 身份验证。根据您的 PAM 配置,通过 ChallengeResponseAuthentication 进行 PAM 身份验证可能会绕过“PermitRootLogin without-password”的设置。如果您只希望在没有 PAM 身份验证的情况下运行 PAM 帐户和会话检查,请启用此选项,但将 PasswordAuthentication 和 ChallengeResponseAuthentication 设置为“no”。

由于这些原因,仅禁用 PasswordAuthentication 和 ChallengeResponseAuthentication 让 pam 设置为处理帐户和会话人员我复制了这些模块类型的用途

帐户

此模块类型执行非基于身份验证的帐户管理。它通常用于根据一天中的时间、当前可用的系统资源(最大用户数)或申请人的位置来限制/允许对服务的访问——“root”仅在控制台上登录。

会议

此模块类型与在为用户提供服务之前/之后需要为用户做的事情相关。这些事情包括记录与用户打开/关闭某些数据交换、安装目录等有关的信息。

您可以检查 etc/pam.conf 中的 pamd 配置文件 etc/pam.d/*,并仔细检查模块的作用。此外,连接终止消息似乎与 pam 配置无关……它是由 sshd 在 clientloop.c 函数 client_loop 中专门发送的

         /*
          * In interactive mode (with pseudo tty) display a message indicating
          * that the connection has been closed.
          */
         if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) {
                 if ((r = sshbuf_putf(stderr_buffer,
                     "Connection to %.64s closed.\r\n", host)) != 0)
                         fatal("%s: buffer error: %s", __func__, ssh_err(r));
         }

就我而言,无论 UsePAM 的值是什么,它都会打印该消息。

相关内容