PAM - Pluggable Authentication Modules
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
PAM (可插拔认证模块) 作为一种安全机制,验证试图访问计算机服务的用户身份,根据各种标准控制他们的访问。它类似于数字门卫,确保只有授权用户可以使用特定服务,同时可能限制他们的使用以防止系统过载。
Solaris 和基于 UNIX 的系统 通常使用位于 /etc/pam.conf
的中央配置文件。
Linux 系统 更倾向于目录方法,将服务特定的配置存储在 /etc/pam.d
中。例如,登录服务的配置文件位于 /etc/pam.d/login
。
登录服务的 PAM 配置示例可能如下所示:
这些领域或管理组包括 auth、account、password 和 session,每个领域负责身份验证和会话管理过程的不同方面:
Auth:验证用户身份,通常通过提示输入密码。
Account:处理账户验证,检查如组成员资格或时间限制等条件。
Password:管理密码更新,包括复杂性检查或字典攻击防护。
Session:管理服务会话开始或结束时的操作,例如挂载目录或设置资源限制。
控制决定模块对成功或失败的响应,影响整体身份验证过程。这些包括:
Required:所需模块的失败最终导致失败,但仅在检查所有后续模块后。
Requisite:失败时立即终止过程。
Sufficient:成功绕过同一领域的其余检查,除非后续模块失败。
Optional:仅在它是堆栈中唯一模块时导致失败。
在多个 auth 模块的设置中,过程遵循严格的顺序。如果 pam_securetty
模块发现登录终端未授权,则阻止 root 登录,但由于其“required”状态,所有模块仍会被处理。pam_env
设置环境变量,可能有助于用户体验。pam_ldap
和 pam_unix
模块协同工作以验证用户,pam_unix
尝试使用先前提供的密码,从而提高身份验证方法的效率和灵活性。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)