欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Linux系统安全及应用(二):PAM安全认证

Linux系统安全及应用(二):PAM安全认证

2025/8/24 2:05:14 来源:https://blog.csdn.net/qq_44421043/article/details/141141245  浏览:    关键词:Linux系统安全及应用(二):PAM安全认证

文章目录

  • 4Linux中的PAM安全认证
    • 介绍
    • su命令的安全隐患
    • PAM认证原理和构成
    • PAM安全认证流程
    • PAM 配置文件结构说明
    • PAM 控制标记的补充说明
    • PAM 实例


4Linux中的PAM安全认证

介绍

  • PAM(Pluggable Authentication Modules),可插拔式认证模块
  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式
  • 配置文件每一行配置定义了一个认证过程,这些认证过程按照从上往下的顺序依次执行
  • PAM 通过模块化的设计,使得系统管理员可以灵活地配置和定制认证过程,以满足不同的安全需求

su命令的安全隐患

安全隐患

默认情况下,任何用户都允许使用 su 命令

其他用户有机会反复尝试其他用户(如root) 的登录密码,带来安全风险

解决办法

使用 PAM 认证模块限制 su 命令的使用

为了加强 su 命令的使用控制,借助于PAM认证模块,只允许极个别用户使用 su 命令切换用户身份,减少安全风险

PAM认证原理和构成

  • 认证流程

    流程大致为:

    Service(服务)→PAM(配置文件)→pam_*.so

    PAM模块的认证流程一般遵循以下步骤顺序:

    1. 确定服务程序
    2. 加载相应的PAM配置文件PAM(位于/etc/pam.d下)
    3. 调用认证模块(位于/lib64/security下)进行安全认证

用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应不同的PAM模块。

  • 查看某个程序是否支持PAM认证,可以用ls命令

    ls /etc/pam.d | grep su  # 检查 su 是否支持 PAM 认证
    
  • 查看su的PAM配置文件

    可以通过查看 /etc/pam.d/su 文件了解具体的 PAM 认证过程。文件中的每一行代表一个独立的认证过程,通常分为以下三个字段:

    • 认证类型(auth, account, password, session)
    • 控制类型(required, requisite, sufficient, optional)
    • PAM 模块及其参数(如 pam_wheel.so)

PAM安全认证流程

控制类型(Control Flags)

用于指定PAM验证模块的返回结果出来方式:

  1. required:验证失败时仍然继续,但返回 Fail 。
  2. requisite:验证失败则立即结束整个验证过程,返回 Fail 。
  3. sufficient:验证成功则立即返回,不再继续,否则继续执行其他认证。
  4. optional:用于会话控制(session),不直接用于验证,只显示信息。

在这里插入图片描述

PAM 配置文件结构说明

  1. 第一列:PAM 模块类型
    • auth:用于用户身份验证,比如输入密码并验证是否是 root 用户。
    • account:检查用户账号的属性,例如是否允许登录、账号是否过期、用户数量是否达到上限等。
    • password:处理用户密码的更新,例如修改密码。
    • session:管理用户会话,例如记录登录信息、挂载文件系统等。
  2. 第二列:PAM 控制标记
    • required:该标记的模块必须成功才能继续认证。如果失败,认证过程不会立刻停止,而是执行该类型的所有模块后返回失败信息。这种方式隐藏了哪个模块失败,以增强安全性。
    • requisite:类似 required,但如果此模块失败,认证过程立即停止并返回失败信息。
    • sufficient:如果此模块成功,立即返回成功,不再执行后续的相同类型的模块。如果失败,不影响最终结果。
    • optional:无论此模块成功与否,认证过程都将继续。通常用于非关键的认证操作。
    • include:在当前配置文件中包含其他 PAM 配置文件的内容。例如,可以调用 /etc/pam.d/system-auth 来处理系统认证。
  3. 第三列:PAM 模块
    • 指定使用的 PAM 模块。通常位于 /lib64/security/ 目录下,如果在其他路径,需要提供绝对路径。
    • 同一个模块可以出现在不同类型中,每个类型调用该模块时的行为可能不同。
  4. 第四列:PAM 模块的参数
    • 传递给模块的参数,可以根据所使用的模块配置多个参数,参数之间用空格分隔。

PAM 控制标记的补充说明

  • required:该标记的模块必须成功才能通过认证,即所有带 required 标记的模块都必须成功,否则认证失败。但错误信息会在所有此类型模块执行完成后返回。
  • requisite:如果此模块失败,认证过程立即停止并返回错误信息,不再执行后续模块。
  • sufficient:只要此模块成功,认证立即返回成功结果,并跳过后续模块。如果失败,认证过程继续但不影响最终结果。
  • optional:无论此模块成功与否,认证过程都将继续,因此不影响最终认证结果。

PAM 实例

以下是 PAM 认证过程中,使用不同控制标记对用户进行身份验证的示例:

模块类型控制标记模块用户1用户2用户3用户4
authrequired模块1passfailpasspass
authsubstack模块2passpassfailpass
authrequired模块3passpasspassfail
结果passfailpasspass

在上表中,不同用户经过不同模块的认证后,最终结果为 passfail,这取决于每个模块的认证结果和控制标记的作用。


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词