其他意见

其他意见

在 中/etc/ssh/sshd_config,PAM 在 Debian 10 上默认启用:

UsePAM yes

在我不想允许使用密码或 kerberos 登录,而只想允许 SSH 密钥身份验证的情况下,PAM在 sshd 中启用它还有什么优势吗?或者,如果UsePAM设置为“否”,它会简化流程并可能使其更安全吗?

在 sshd 中禁用 PAM 会产生什么实际影响?我会注意到有什么不同吗?

答案1

与手册页(和另一个答案)声称的相反,UsePAM yes不仅允许您以非 root 用户身份运行 sshd,但也允许以非 root 用户身份运行 sshd 来执行密码认证(对于运行它的同一用户)通过 setuid/sbin/unix_chkpwd程序。

后者是相当出乎意料的。

user$ /usr/sbin/sshd -f /dev/null -p 9009 -h ~/.ssh/id_rsa
user$ /usr/sbin/sshd -f /dev/null -o UsePAM=yes -p 7007 -h ~/.ssh/id_rsa

user$ ssh -p 7007 localhost
The authenticity of host '[localhost]:7007 ([::1]:7007)' can't be established.
...
Password: <correct password>
Linux deb11 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
...
user$  <I'm logged in!>
user$ ^D
Connection to localhost closed.


user$ ssh -p 9009 localhost
The authenticity of host '[localhost]:9009 ([::1]:9009)' can't be established.
...
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
user@localhost: Permission denied (publickey,password,keyboard-interactive).
user$

答案2

联机帮助页解释UsePAM不仅提供身份验证,还提供会话处理。有很多的PAM模块它提供了广泛的功能,包括自动密钥环解锁、安装文件系统、解密私人数据、有选择地允许登录……

在古代,当UsePAM设置为“yes”时,sshd 需要 root 权限。根据用例,以非 root 用户身份运行可能有助于安全或配置。

我可以想象在某些情况下这会派上用场。例如,git 使用 ssh 作为传输协议。我可能想设置一个 git 服务器,但我根本不想通过 PAM 管理 git 用户。

答案3

为此我研究了 OpenSSH 的来源。

auth-pam.c根据我在第 378-382 行中找到的注释,使用 UsePAM 似乎可能会间接或直接泄漏您的环境(链接在这里):

         /*
         * XXX this possibly leaks env because it is not documented
         * what pam_putenv() does with it. Does it copy it? Does it
         * take ownweship? We don't know, so it's safest just to leak.
         */

同样在相同的源代码中我发现了这个有趣的内容:

/*
     * Some silly PAM modules (e.g. pam_time) require a TTY to operate.
     * sshd doesn't set the tty until too late in the auth process and
     * may not even set one (for tty-less connections)
     */

似乎还通过第 1351 行上的 PAM 尝试进行密码身份验证,并且在此代码中使用了反计时攻击缓解措施。

由于它是在 if 子句中定义的,因此所有这些auth-pam.c代码都不会被执行,因此如果您的安全设置允许,我将设置为 no。

所以我认为我宁愿将其设置为“否”,并且不再为此失眠。

其他意见

还有这样的观点:https://askubuntu.com/questions/1259848/

如果您的设置设置不当,SSH 公钥身份验证可能会失败: https://serverfault.com/questions/475880

我还建议阅读本节末尾的结论Configuring accounts

https://arlimus.github.io/articles/usepam/

相关内容