当前位置: 首页 > news >正文

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

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垂直叠加一个模块栈嵌入到另一个模块栈中形成更复杂的认证逻辑在多因素认证中,将多个模块组合在一起进行验证
http://www.xdnf.cn/news/1461043.html

相关文章:

  • 【1】策略模式 + 模板方法模式的联合应用
  • 具身智能的工程落地:视频-控制闭环的实践路径
  • 手写React状态hook
  • AI测试:自动化测试框架、智能缺陷检测、A/B测试优化
  • 分片上传-
  • Boost搜索引擎 网络库与前端(4)
  • 力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
  • OpenBMC之编译加速篇
  • 三、神经网络
  • VisionPro联合编程相机拍照 九点标定实战
  • pinia状态管理的作用和意义
  • SSD固态硬盘加速优化-明显提高固态硬盘的效率并保持峰值性能-供大家学习研究参考
  • Ubuntu 22.04 网络服务安装配置
  • 硬件开发1-51单片机3-串口
  • 三阶Bezier曲线曲率极值及对应的u的计算方法
  • LeetCode 994 腐烂的橘子
  • 【C语言】深入理解指针(4)
  • 【LeetCode热题100道笔记】旋转图像
  • pycharm解释器使用anaconda建立的虚拟环境里面的python,无需系统里面安装python。
  • MySQL复制技术的发展历程
  • Spring启示录
  • 从传统CNN到残差网络:用PyTorch实现更强大的图像分类模型
  • BenTsao本草-中文医学大模型
  • 【算法--链表】61.旋转链表--通俗讲解
  • 【Day 44】Shell-Git版本控制器
  • 【Python】数据可视化之分类图
  • Day2p2 夏暮客的Python之路
  • 数学建模25c
  • [数据结构] 链表
  • 深度学习之第七课卷积神经网络 (CNN)调整学习率