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. 将(书等)放置在架子上:搁置,将某事放到一旁不予考虑:将-搁在一边:装搁架于: 个人感觉有点像字典缓存?暂时搁置到一旁的意思? 研究 ...
随机推荐
- Django REST框架中处理JWT令牌的认证的源码解析
想了解`JWTAuthentication`这个类的源码解析.`JWTAuthentication`是来自`rest_framework_simplejwt.authentication`模块的,它用 ...
- java从小白到老白⑤——传智播客27版笔记
今天主要说些内部类的相关基础知识,如果能做出下面这个小题目,再下面的内容不看也罢(面试题答案在最后) 内部类面试题:补全下列代码,实现目标输出,其中描述阶段的数字只能调用已有变量,不能用其他方式 pu ...
- 8086汇编(16位汇编)学习笔记05.asm基础语法和串操作
https://bpsend.net/thread-121-1-2.html asm基础语法 1. 环境配置 xp环境配置 1.拷贝masm615到指定目录 2.将masm615目录添加进环境变量 3 ...
- ActiveMQ消息投递方式之异步投递【转】
ActiveMQ消息投递方式一共有四种:同步投递.异步投递.延迟投递和定时投递. 同步发送:消息生产者使用持久(Persistent)传递模式发送信息的时候,Producer.send()方法会被阻塞 ...
- 阿里云ECS(Ubuntu 22.04 LTS)优化脚本
#!/bin/bash set -e echo " Updating system..." apt update -y && apt upgrade -y echo ...
- 通过chrome插件自动生成博客评论,高效发外链
最近crazy cattle 3d这个词爆火,很多人都在做,竞争异常激烈,甚至可以说是惨不忍睹. 从最近的数据看,胜出的主要是crazycattle3d.com, crazycattle3d.io, ...
- F-47(copy 邓大顾)
*&---------------------------------------------------------------------* *& F-47过账 *&--- ...
- [计算机组成原理] 字符集编码: Unicode 字符集(UTF8/UTF16/UTF32) 和 `BOM`(Byte Order Mark/字节序标记) / UnicodeTextUtils
Unicode字符集 Unicode 字符集的 BOM := Byte Order Mark := 字符顺序标记 BOM(Byte Order Mark)在分析unicode之前,先把bom(byte ...
- 重要通知:spring-ai-hunyuan 已兼容 Spring AI 稳定版!
最近有小伙伴在使用 mvn 仓库中的 1.0.0-M6 版本时,已经遇到一些兼容性问题和未知异常.本着更好地维护 spring-ai-hunyuan 仓库,我这几天熬夜更新并整理了对 Spring A ...
- 利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践
Kubernetes 是用于编排容器化应用程序的云原生系统.最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新. Kuberne ...