在设置新服务器时,我通常希望仅允许通过密钥认证登录,而不允许从 root 用户登录。因此,我像这样编辑 sshd_config:
我将“PermitRootLogin”更改为“no”,并取消注释“PasswordAuthentification”,并将其也设置为“no”。虽然这种方法效果很好,而且我检查过,没有找到仅通过密码登录的方法,但我想知道为什么有些指南建议将“UsePAM”设置为“no”,而其他指南根本没有提到它(因此将其保留为“yes”)。似乎没有明确的意见,即在切换到仅密钥身份验证时是否应该更改 UsePAM 设置。
如果有的话,保留 UsePAM 原样(“是”)会有什么安全隐患?
答案1
您保留UsePAM
为,yes
因为当PasswordAuthentication
设置为no
PAM 时不会调用 PAM 服务的“auth”部分:
UsePAM 启用可插入身份验证模块接口。如果设置为“yes”,则除了所有身份验证类型的 PAM 帐户和会话模块处理外,还将启用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份验证。
由于 PAM 质询-响应身份验证通常起到与密码身份验证相同的作用,因此您应该禁用 PasswordAuthentication 或 ChallengeResponseAuthentication。
如果启用了 UsePAM,您将无法以非 root 用户身份运行 sshd(8)。默认为“否”。
这样,PAM 就可以正确运行account
和session
输入,如果您想要根据 IP、时间或帐户的其他因素限制对服务的访问,这实际上非常重要。此外,如果您想确保用户在登录时继承某些环境变量,或者在 SELinux 禁用时禁止访问服务器。
auth
当启用 PAM 但禁用密码验证时,人们普遍认为它会运行所有模块。