0


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


文章目录


4Linux中的PAM安全认证

介绍

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

su命令的安全隐患

安全隐患

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

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

解决办法

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

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

PAM认证原理和构成

  • 认证流程流程大致为:Service(服务)→PAM(配置文件)→pam_*.soPAM模块的认证流程一般遵循以下步骤顺序:1. 确定服务程序2. 加载相应的PAM配置文件PAM(位于/etc/pam.d下)3. 调用认证模块(位于/lib64/security下)进行安全认证

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

  • 查看某个程序是否支持PAM认证,可以用ls命令ls /etc/pam.d |grepsu# 检查 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用户4authrequired模块1passfailpasspassauthsubstack模块2passpassfailpassauthrequired模块3passpasspassfail结果passfailpasspass
在上表中,不同用户经过不同模块的认证后,最终结果为

pass

fail

,这取决于每个模块的认证结果和控制标记的作用。



本文转载自: https://blog.csdn.net/qq_44421043/article/details/141141245
版权归原作者 shyuu_ 所有, 如有侵权,请联系我们删除。

“Linux系统安全及应用(二):PAM安全认证”的评论:

还没有评论