安全运维-云计算系统安全

发布于:2025-09-06 ⋅ 阅读:(15) ⋅ 点赞:(0)

PAM介绍

PAM(Pluggable Authentication Modules)即可插拔式认证模块。

它是一种高效且灵活的用户级别的认证方式,广泛应用于当前Linux服务器中作为主要的认证机制。

PAM允许系统管理员通过配置不同的认证模块来实现对用户的网段、时间、用户名、密码等多方面的认证。

使用PAM进行身份认证的服务:

  • 本地登录服务:如logingdm(GNOME显示管理器)、kdm(KDE显示管理器),这些服务用于本地用户登录。

  • 远程登录服务:如sshd(SSH守护进程),用于提供安全的远程登录功能。

  • 文件传输服务:如vsftpd(虚拟安全FTP守护进程),用于文件传输过程中的用户认证。

  • 网络共享服务:如samba,用于Windows与Linux之间的文件和打印机共享。

不使用PAM进行身份认证的服务:

  • 数据库服务:如MySQL-Server,其用户认证通常由自身的权限管理系统处理。

  • 监控服务:如Zabbix,其认证机制独立于PAM,通常依赖于内置的用户管理和认证功能。

可以通过浏览器查看详细的PAM文档:

firefox /usr/share/doc/pam-1.1.8/html/Linux-PAM_SAG.html

PAM认证流程

PAM认证流程通常包括以下几个步骤:

  1. 服务请求:当用户试图访问一个受保护的服务时(如SSH登录),该服务会调用相应的PAM API来启动认证过程。

  2. 加载配置文件:服务程序根据其配置文件中的定义加载对应的PAM模块。

    每个服务都有自己的PAM配置文件,位于/etc/pam.d/目录下。

  3. 执行认证:PAM按照配置文件中指定的顺序依次调用各个模块进行认证。

    这些模块可能涉及密码验证、账户有效期检查、会话设置等多个方面。

  4. 返回结果:所有模块执行完毕后,PAM将最终的认证结果(成功或失败)返回给原始的服务程序。

在 PAM 配置文件中(如 /etc/pam.d/sshd/etc/pam.d/login),规则是按顺序从上到下依次执行的,并且它们的作用是 叠加的,但具体是否继续执行、是否认证成功,取决于每个模块的 控制标志(control flag) 和 返回结果。

认证类型

认证类型 功能描述 作用 操作
auth 验证用户身份,如检查用户名和密码是否正确 确保用户提供的身份信息是正确的 使用pam_unix.so模块进行传统账号密码认证
account 控制用户访问权限,如账户过期、时间限制等 防止过期账户或密码被使用 使用pam_access.so模块基于IP地址限制登录
password 管理密码策略,如复杂度检查、历史密码限制 防止暴力破解攻击,提高密码安全性 使用pam_cracklib.so模块强制设置强密码
session 管理会话,如日志记录、资源限制 监控用户行为,防止滥用系统资源 使用pam_limits.so模块限制最大进程数

流程控制标记

流程控制标记 描述 特点 案例
required 验证失败时仍然继续执行后续模块,但最终返回fail 用户不会知道具体哪个模块失败 在SSH服务中使用pam_access.so限制特定IP登录
requisite 验证失败时立即结束整个验证过程,返回fail 效率高,一旦某个关键模块失败则立即终止 在登录过程中使用pam_nologin.so阻止非root用户登录
sufficient 验证成功则立即返回,不再继续执行后续模块;否则忽略结果并继续 如果某项条件已经足够证明用户身份,则无需再进行其他验证 使用pam_rootok.so允许root用户直接切换到其他用户
optional 无论验证结果如何均不会影响最终结果 常用于session类型,提供额外的信息或功能 使用pam_lastlog.so记录用户的最后登录时间
include 包含另一个配置文件中相同类型的行 用于简化配置,避免重复编写相同的模块配置 /etc/pam.d/sshd中包含password-auth配置文件
substack 垂直叠加一个模块栈嵌入到另一个模块栈中 形成更复杂的认证逻辑 在多因素认证中,将多个模块组合在一起进行验证

网站公告

今日签到

点亮在社区的每一天
去签到