ssh跳过一些 PAM鉴权
ssh跳过一些 PAM鉴权
🧩 什么是 PAM?
PAM(Pluggable Authentication Modules)是 Linux 中一个可插拔的认证框架,它允许系统管理员灵活地配置用户认证机制。
在 SSH 登录过程中,PAM 是其中一个可选的认证机制。如果启用了 PAM,SSH 登录时就会调用 /etc/pam.d/sshd
文件中配置的模块进行一系列检查,比如:
- 密码复杂度验证
- 是否允许特定用户或用户组登录
- 是否启用双因子认证
- 登录失败次数限制(如
pam_tally2
或pam_faillock
) - SELinux/安全策略限制等
🛠️ SSH 配置文件中 PAM 相关项
在 /etc/ssh/sshd_config
中有一项:
1 | UsePAM yes |
含义如下:
yes
:SSH 登录会调用 PAM 模块/etc/pam.d/sshd
,应用一系列策略检查。no
:不使用 PAM,跳过这些策略,可能只依赖sshd_config
中的其它登录控制项(如AllowUsers
、PasswordAuthentication
等)来决定是否允许登录。
🧨 注意事项
把 UsePAM
改成 no
虽然能跳过一些 PAM 限制,但也可能造成:
- 绕过安全限制,如密码尝试次数限制、防暴力破解等;
- 某些登录验证机制失效,如使用 LDAP、指纹识别、MFA 等基于 PAM 的认证方法。
✅ 示例场景
你遇到过一些限制登录的问题,可能就是 PAM 模块(比如 pam_access.so
)限制了用户登录。
1 | # /etc/pam.d/sshd 示例片段 |
对应的 /etc/security/access.conf
可能配置了:
1 | -:testuser:ALL |
这样就会拒绝用户 testuser
的 SSH 登录。
若此时你把 UsePAM no
,SSH 就不会再执行上面的 pam_access.so
检查了,用户就能绕过登录限制。
🔐 总结
项 | 含义 |
---|---|
UsePAM yes | 调用/etc/pam.d/sshd 中的模块,执行多种安全检查 |
UsePAM no | 不调用 PAM,简单认证流程,登录限制会变少 |
是否启用 PAM 取决于你对安全性和控制能力的需求。需要安全策略就启用,想简化登录就关闭。
是否需要我帮你审查一下 /etc/pam.d/sshd
里面有哪些模块可能影响登录?
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment