什么是 PAM,为什么 AWS 默认启用它?

mod*_*ooc 4 server ssh cron amazon-ec2 pam

我只希望连接到使用SSH我的EC2实例,但我sshd_configUsePAM yes。这是什么,如果我将它设置为 no,我会被锁定在我的实例之外吗?

我还设置了一个cronjob来检查我的 ZNC 保镖是否已启动并且我的/var/log/auth.log是否充满了这些:

CRON[5216]: pam_unix(cron:session): 用户 znc-admin 的会话已关闭

正如你所看到的,有一pam_unix件事与我的第一个问题有关。

vid*_*rlo 9

Pam 是 Pluggable Authentication Modules。

它是身份验证的后端,处理系统上应用程序的身份验证。顾名思义,它是可插拔的。您可以有多个插件提供来自不同来源的身份验证。一个常见的来源是 /etc/passwd 和 /etc/shadow 的组合。其他可以是 LDAP、Kerberos、NIS 或指纹读取器。

简而言之,它为应用程序(例如登录和 ssh)提供了一致的接口以进行身份​​验证。

它由四部分组成:

  1. 帐户 - 跟踪用户名。
  2. 身份验证 - 检查密码(或指纹……或……)
  3. 会话管理 - 在开始和结束会话时要执行的操作,例如记帐。
  4. 密码更新 - 更新密码,并强制执行密码标准。

如果我们看一看,man sshd_config我们可以阅读以下内容:

UsePAM
启用可插拔认证模块接口。如果设置为“yes”,除了所有身份验证类型的 PAM 帐户和会话模块处理之外,这将启用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份验证。

由于 PAM 质询-响应身份验证通常起到与密码身份验证相同的作用,因此您应该禁用 PasswordAuthentication 或 ChallengeResponseAuthentication。

如果启用了 UsePAM,您将无法以非 root 用户身份运行 sshd(8)。默认值为“否”。

如果您不想使用 PAM,可以将其设置为 no。在单个常设实例上,没有什么重要的理由使用 PAM - 无论如何,您通常只有一个身份验证源 (/etc/passwd / /etc/shadow)。另一方面,在这种环境中也没有什么改变的大理由。

您在日志中看到的是会话模块的一部分:它记录经过身份验证的用户 - 在这种情况下,因为脚本是以该用户身份运行的。这是正常的,不需要担心,甚至不需要关心。

编辑:作为用户惨遭意识到-做将其设置为无,除非你要么有公钥认证工作,或启用其他密码身份验证方案。使用 ssh,还可以更改配置、重新启动 ssh 并从当前 shell 注销之前尝试登录。这样,如果您被锁定,您可以恢复。