Linux PAM 四大认证模块详解
以下是Linux PAM(Pluggable Authentication Modules)四大模块的参数详解及具体配置示例,结合核心参数、功能场景和实际案例说明,帮助您快速掌握配置技巧:
1. 认证管理(auth)模块
功能:验证用户身份(密码、多因素认证等)。
核心参数与示例
| 模块 | 参数 | 作用 | 配置示例 |
|---|---|---|---|
pam_unix.so |
nullok |
允许空密码(高风险,慎用) | auth required pam_unix.so nullok |
try_first_pass |
复用之前模块输入的密码 | auth sufficient pam_unix.so try_first_pass |
|
pam_listfile.so |
item=user sense=deny file=/path |
基于文件限制用户访问 | auth required pam_listfile.so item=user sense=deny file=/etc/ssh_deny |
pam_rootok.so |
无参数 | root用户直接通过认证 | auth sufficient pam_rootok.so # root执行su无需密码 |
场景案例:
- 禁止root通过SSH登录:
# /etc/pam.d/sshd
auth required pam_listfile.so item=user sense=deny file=/etc/ssh_root_deny onerr=fail
创建黑名单文件:
echo "root" > /etc/ssh_root_deny.
2. 账户管理(account)模块
功能:检查账户状态(有效期、登录权限等)。
核心参数与示例
| 模块 | 参数 | 作用 | 配置示例 |
|---|---|---|---|
pam_time.so |
timespec |
按时间规则限制访问 | account required pam_time.so # 依赖/etc/security/time.conf |
pam_access.so |
accessfile |
指定IP/用户访问规则文件 | account required pam_access.so accessfile=/etc/security/access_local.conf |
场景案例:
- 限制用户
user1仅工作日9:00-18:00登录:# /etc/security/time.conf
*;*;user1;!Wk0000-2400 # 禁止周末全天登录
配置文件引用:
account required pam_time.so.
3. 密码管理(password)模块
功能:强制密码策略(复杂度、历史记录等)。
核心参数与示例
| 模块 | 参数 | 作用 | 配置示例 |
|---|---|---|---|
pam_unix.so |
remember=5 |
禁止复用最近5次密码 | password required pam_unix.so remember=5 |
minlen=10 |
密码最小长度10位 | password required pam_unix.so minlen=10 |
|
pam_cracklib.so |
dcredit=-1 ucredit=-1 |
要求至少1数字+1大写字母 | password required pam_cracklib.so dcredit=-1 ucredit=-1 |
场景案例:
- 密码策略:长度≥8,含大小写+数字,禁止最近3次密码:
# /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass remember=3
``` [3,6](@ref).
4. 会话管理(session)模块
功能:会话初始化与资源管理。
核心参数与示例
| 模块 | 参数 | 作用 | 配置示例 |
|---|---|---|---|
pam_limits.so |
conf=/path |
指定资源限制配置文件 | session required pam_limits.so conf=/etc/security/limits.d/user.conf |
pam_mkhomedir.so |
skel=/etc/skel |
登录时自动创建家目录 | session optional pam_mkhomedir.so skel=/etc/skel umask=0022 |
场景案例:
- 限制用户
dev最多50个进程+自动创建家目录:# /etc/security/limits.d/dev.conf
dev hard nproc 50
PAM配置:
session required pam_limits.so和session optional pam_mkhomedir.so.
️ 关键注意事项
控制标记逻辑:
sufficient:成功则跳过后续同类型模块(如pam_rootok.so需放在pam_unix.so前)。required:失败仍继续执行,最终返回失败(隐藏具体失败点)。
安全风险:
- 避免使用
nullok(空密码易被爆破)。 remember=N需配合/etc/security/opasswd文件权限(chmod 600)。
- 避免使用
调试工具:
- 查看登录失败计数:
pam_tally2 --user root - 日志排查:
journalctl -u sshd | grep pam
- 查看登录失败计数:
四大模块功能与场景总结表
| 模块类型 | 核心功能 | 典型应用场景 | 常用模块 |
|---|---|---|---|
auth |
身份验证 | SSH密码校验、sudo提权 | pam_unix, pam_listfile |
account |
账户状态检查 | 登录时间/IP限制、账户过期 | pam_time, pam_access |
password |
密码策略管理 | 密码复杂度、历史记录 | pam_cracklib, pam_unix |
session |
会话资源控制 | 进程数限制、自动创建家目录 | pam_limits, pam_mkhomedir |
配置后需重启服务生效:
systemctl restart sshd。复杂变更建议在测试环境验证,避免因requisite模块连锁失败导致系统锁死。
Linux PAM 四大认证模块详解的更多相关文章
- Kali linux 2016.2(Rolling)中的payloads模块详解
不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)中的Exploits模块详解 payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在M ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- Ansible安装部署及常用模块详解
Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...
- Node入门教程(8)第六章:path 模块详解
path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- Linux下tomcat的安装详解
Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...
- Linux驱动开发必看详解神秘内核(完全转载)
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入L ...
- ansible中常用模块详解
ansible中常用的模块详解: file模块 ansible内置的可以查看模块用法的命令如下: [root@docker5 ~]# ansible-doc -s file - name: Sets ...
- 铁乐学python_shelve模块详解
python序列化模块-shelve模块详解 shelve:vt. 将(书等)放置在架子上:搁置,将某事放到一旁不予考虑:将-搁在一边:装搁架于: 个人感觉有点像字典缓存?暂时搁置到一旁的意思? 研究 ...
随机推荐
- 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
今天在使用国产数据库金仓时,我发现每次遇到问题都习惯性地打开金仓社区进行搜索和查看相关信息.可是每次打开浏览器的操作总让我觉得有些麻烦,于是我决定不再依赖这种繁琐的过程.索性今天我把这个接口提取出来, ...
- JavaScript入门笔记day2
文章目录 常用互动方法 1. document.write() 直接向页面输出内容 2. `alert();`弹出消息对话框 3. confirm消息对话框 4. prompt弹出消息对话框,用于需要 ...
- Win32汇编学习笔记03.RadAsm和补丁
https://bpsend.net/thread-163-1-1.html 补丁 扫雷游戏啊下补丁 在扫雷游戏中,点关闭弹出一个确认框,确认之后再关闭,取消就不关闭 首先第一步就是确认关闭按钮响应的 ...
- 第5讲、Transformer 编码器(Encoder)处理过程详解
Transformer 编码器(Encoder)处理过程详解 Transformer Encoder 是一个由 N 层(一般为 6 层)堆叠而成的模块结构.每一层的本质是两个核心子模块: 多头自注意力 ...
- 在LLVM中的greedy Register Allocation pass代码详解
LLVM 贪婪寄存器分配器(RAGreedy)详细处理流程 日期: 2025年5月29日 摘要 本文深入分析 LLVM 贪婪寄存器分配器(RAGreedy)的处理流程,详细描述从优先级队列获取虚拟寄存 ...
- Spring注解之@Value注解读取配置文件属性和设置默认值
概述 在Spring 组件中,通常使用@Value注解读取 properties 文件的配置值.但如果在配置文件或启动参数中未指定对应的参数值,则项目在启动的时候会抛出异常,导致服务启动失败,异常 ...
- Antd VUE中table子表同时只展开一个子信息的说明
前言 在网上搜索了很久,很多方法都不太好用,不过经过整理发现,有一个方式是最简单的,比网路上那些copy粘贴的千篇一律的错来说,其实真正的使用方式很简单 想必大家要实现的效果都是上图这样的 <t ...
- cookie,session以及application的比较
cookie工作原理: cookie代码: 1 @WebServlet(value = "/cookie",name = "CookieServlet") 2 ...
- [abc302f] Merge Set
F - Merge Set 显然要建图 首先,我们有一个粗略的想法,对于同一集合\(S_i\)内的元素,\(S_{i,j}\)与\(S_{i,j+1}\)间连一条无向的标号为\(i\)的边 那么题目显 ...
- Viual Studio 共享组件、工具和SDK的位置不能更改 解决方案
https://blog.csdn.net/weixin_41923658/article/details/103214742 找到电脑上 VS 的注册表,删除共享组件.工具和 SDK 的注册表: ...