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

Linux云计算系统安全:PAM

什么是 PAM?

PAM(Pluggable Authentication Modules,可插拔式认证模块)是 Linux 系统中一种灵活且强大的用户认证框架。它允许系统管理员通过配置不同的认证模块来实现对用户的网段、时间、用户名、密码等多方面的认证控制。

PAM 的核心优势

  1. 模块化设计:无需修改应用程序代码,通过配置文件即可改变认证方式

  2. 易于扩展:可以编写新模块支持新的认证机制

  3. 动态加载:运行时按需加载相应模块,减少资源占用

  4. 集中管理:统一的接口和配置文件,实现认证逻辑与应用程序分离


使用 PAM 的服务

  • 本地登录服务:logingdmkdm

  • 远程登录服务:sshd

  • 文件传输服务:vsftpd

  • 网络共享服务:samba

不使用 PAM 的服务

  • 数据库服务:MySQL-Server

  • 监控服务:Zabbix

PAM 认证流程

  1. 服务请求:用户访问受保护服务时触发认证

  2. 加载配置:服务加载对应的 PAM 配置文件

  3. 执行认证:按配置顺序调用各个模块进行认证

  4. 返回结果:将所有模块结果汇总后返回给服务

PAM 认证类型

认证类型功能描述常用模块
auth验证用户身份pam_unix.so
account控制用户访问权限pam_access.so
password管理密码策略pam_cracklib.so
session管理用户会话pam_limits.so

PAM 控制标记

控制标记描述应用场景
required失败仍继续但最终返回失败基础认证
requisite失败立即返回失败关键检查
sufficient成功则立即返回成功特权用户
optional不影响最终结果记录信息
include包含其他配置文件模块复用
substack垂直叠加模块栈复杂认证

常用 PAM 模块详解

1. pam_rootok.so

功能:检查当前用户是否为 root 用户

配置示例

# /etc/pam.d/su
auth sufficient pam_rootok.so

应用场景:允许 root 用户无需密码切换到其他用户

2. pam_access.so

功能:基于用户名、IP 地址等控制访问

配置示例

# /etc/pam.d/sshd
auth required pam_access.so accessfile=/etc/security/access.conf

访问规则示例(/etc/security/access.conf):

# 允许 admin 组从内部网络登录
+ : @admin : 192.168.1.0/24
# 拒绝所有其他访问
- : ALL : ALL

3. pam_listfile.so

功能:基于文件列表控制访问(黑白名单)

配置示例

# 只允许特定用户 SSH 登录
auth required pam_listfile.so \item=user sense=allow file=/etc/ssh/users.allow onerr=fail

4. pam_time.so

功能:基于时间控制访问权限

配置示例

# /etc/pam.d/sshd
auth required pam_time.so

时间规则示例(/etc/security/time.conf):

# 只允许工作时间登录
sshd ; * ; @employees ; Wk0900-1800

5. pam_tally2.so

功能:防止暴力破解,账户锁定

配置示例

# 5次失败后锁定10分钟
auth required pam_tally2.so deny=5 unlock_time=600

管理命令

# 查看失败次数
pam_tally2 --user=username# 重置计数器
pam_tally2 --user=username --reset

6. pam_limits.so

功能:限制用户资源使用

配置示例

# /etc/pam.d/sshd
session required pam_limits.so

资源限制示例(/etc/security/limits.conf):

# 限制用户最多100个进程和1024个文件
* soft nproc 100
* hard nproc 200
* soft nofile 1024
* hard nofile 2048

实战案例

案例1:SSH 安全加固

# /etc/pam.d/sshd
# IP访问控制
auth required pam_access.so accessfile=/etc/security/access.conf# 防止暴力破解
auth required pam_tally2.so deny=5 unlock_time=600# 标准认证
auth include password-auth# 资源限制
session required pam_limits.so

案例2:密码策略强化

# /etc/pam.d/system-auth
# 密码复杂度要求
password required pam_pwquality.so minlen=12 dcredit=-1 ucredit=-1 ocredit=-1# 密码历史记录
password required pam_pwhistory.so remember=5# 密码过期策略
password required pam_unix.so use_authtok sha512 shadow try_first_pass

Cgroups 资源限制

CPU 限制示例

# 创建cgroup
mkdir /sys/fs/cgroup/cpu/myapp# 设置CPU限制(50% CPU)
echo 50000 > /sys/fs/cgroup/cpu/myapp/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/myapp/cpu.cfs_period_us# 添加进程到cgroup
echo $PID > /sys/fs/cgroup/cpu/myapp/tasks

内存限制示例

# 创建cgroup
mkdir /sys/fs/cgroup/memory/myapp# 设置内存限制(512MB)
echo 512M > /sys/fs/cgroup/memory/myapp/memory.limit_in_bytes# 添加进程到cgroup
echo $PID > /sys/fs/cgroup/memory/myapp/tasks

最佳实践与注意事项

  1. 测试配置:修改 PAM 配置前先测试,避免被锁 outside

  2. 备份配置:重要修改前备份原始配置文件

  3. 日志监控:定期检查 /var/log/secure 和 /var/log/auth.log

  4. 最小权限:遵循最小权限原则配置访问控制

  5. 定期审查:定期审查 PAM 配置和访问规则

故障排除

  1. 认证失败:检查 PAM 配置语法和模块路径

  2. 性能问题:优化模块加载顺序,减少不必要的模块

  3. 权限问题:确保配置文件权限正确(通常为 644)

通过合理配置 PAM 和 Cgroups,可以显著提升 Linux 系统的安全性和稳定性,实现细粒度的访问控制和资源管理


文章转载自:

http://aKcouFr4.mxhcf.cn
http://7bRS1DJ4.mxhcf.cn
http://44bjKIHF.mxhcf.cn
http://b2A6ifgW.mxhcf.cn
http://IrYIWCyy.mxhcf.cn
http://tln1OfeY.mxhcf.cn
http://FqJRraYY.mxhcf.cn
http://nmtH9Spn.mxhcf.cn
http://yagxrnvS.mxhcf.cn
http://MW9b5Pmw.mxhcf.cn
http://a7hBYEdA.mxhcf.cn
http://DQEHMTti.mxhcf.cn
http://T4m5j4FI.mxhcf.cn
http://w7pYCxqG.mxhcf.cn
http://wyblAygI.mxhcf.cn
http://daYlXOCg.mxhcf.cn
http://hvshYpW7.mxhcf.cn
http://wOK04zai.mxhcf.cn
http://Enq8fpkx.mxhcf.cn
http://HsyeRBpr.mxhcf.cn
http://HeB6wZeG.mxhcf.cn
http://9nYYH5bD.mxhcf.cn
http://jotf497s.mxhcf.cn
http://l5coccXL.mxhcf.cn
http://1j5AzC49.mxhcf.cn
http://71t8o0uG.mxhcf.cn
http://gTCoPA5j.mxhcf.cn
http://JL04ZN1A.mxhcf.cn
http://tG3veKh6.mxhcf.cn
http://c8xzSBoT.mxhcf.cn
http://www.dtcms.com/a/378321.html

相关文章:

  • DenseNet详解与实现
  • 计算机毕业设计 基于Hadoop豆瓣电影数据可视化分析设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试
  • 25.9.11 QTday1作业
  • unity 陶艺制作模拟
  • Unity 三维数学方法
  • 【氮化镓】GaN基半导体器件电离辐射损伤基可靠性综述
  • 音视频demo
  • 相机Camera日志分析之三十六:相机Camera常见日志注释
  • 250911算法练习:递归
  • 双目相机原理
  • AI教育白皮书解读 | 医学教育数智化转型新机遇,“人工智能+”行动实践正当时
  • vue3自定义无缝轮播组件
  • 【每日算法】合并两个有序链表 LeetCode
  • 瑞萨RA家族新成员RA4C1,符合DLMS SUITE2表计安全规范、超低功耗、支持段码显示,专为智能表计应用开发
  • 【maxscript】矩阵对齐-武器残影
  • Java 黑马程序员学习笔记(进阶篇4)
  • XR 和 AI 在 Siggraph 2025 上主导图形的未来,获取gltf/glb格式
  • TikTok矩阵有哪些运营支撑方案?
  • 《基于深度学习的近红外条纹投影三维测量》-论文总结
  • 优选算法 100 题 —— 2 滑动窗口
  • MongoDB 在线安装-一键安装脚本(CentOS 7.9)
  • DeepSeek辅助编写的利用quick_xml把xml转为csv的rust程序
  • Rider中的Run/Debug配置对应的本地文件
  • 综合项目实践:基于基础语法核心的Python项目
  • 开始 ComfyUI 的 AI 绘图之旅-Flux.1图生图(八)
  • 供应商管理系统包含哪些模块?
  • MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
  • Apache服务——搭建实验
  • “一半是火焰,一半是海水”,金融大模型的爆发与困局
  • 开源 C++ QT Widget 开发(十六)程序发布