以下是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.sosession optional pam_mkhomedir.so .


️ ​​关键注意事项​

  1. ​控制标记逻辑​​:

    • sufficient:成功则跳过后续同类型模块(如pam_rootok.so需放在pam_unix.so前)。
    • required:失败仍继续执行,最终返回失败(隐藏具体失败点)。
  2. ​安全风险​​:

    • 避免使用nullok(空密码易被爆破)。
    • remember=N需配合/etc/security/opasswd文件权限(chmod 600)。
  3. ​调试工具​​:

    • 查看登录失败计数: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 四大认证模块详解的更多相关文章

  1. Kali linux 2016.2(Rolling)中的payloads模块详解

    不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)中的Exploits模块详解 payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在M ...

  2. Linux文件系统的目录结构详解

    Linux文件系统的目录结构详解   一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...

  3. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

  4. Node入门教程(8)第六章:path 模块详解

    path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...

  5. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  6. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  7. Linux下tomcat的安装详解

    Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...

  8. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

  9. ansible中常用模块详解

    ansible中常用的模块详解: file模块 ansible内置的可以查看模块用法的命令如下: [root@docker5 ~]# ansible-doc -s file - name: Sets ...

  10. 铁乐学python_shelve模块详解

    python序列化模块-shelve模块详解 shelve:vt. 将(书等)放置在架子上:搁置,将某事放到一旁不予考虑:将-搁在一边:装搁架于: 个人感觉有点像字典缓存?暂时搁置到一旁的意思? 研究 ...

随机推荐

  1. Django REST框架中处理JWT令牌的认证的源码解析

    想了解`JWTAuthentication`这个类的源码解析.`JWTAuthentication`是来自`rest_framework_simplejwt.authentication`模块的,它用 ...

  2. java从小白到老白⑤——传智播客27版笔记

    今天主要说些内部类的相关基础知识,如果能做出下面这个小题目,再下面的内容不看也罢(面试题答案在最后) 内部类面试题:补全下列代码,实现目标输出,其中描述阶段的数字只能调用已有变量,不能用其他方式 pu ...

  3. 8086汇编(16位汇编)学习笔记05.asm基础语法和串操作

    https://bpsend.net/thread-121-1-2.html asm基础语法 1. 环境配置 xp环境配置 1.拷贝masm615到指定目录 2.将masm615目录添加进环境变量 3 ...

  4. ActiveMQ消息投递方式之异步投递【转】

    ActiveMQ消息投递方式一共有四种:同步投递.异步投递.延迟投递和定时投递. 同步发送:消息生产者使用持久(Persistent)传递模式发送信息的时候,Producer.send()方法会被阻塞 ...

  5. 阿里云ECS(Ubuntu 22.04 LTS)优化脚本

    #!/bin/bash set -e echo " Updating system..." apt update -y && apt upgrade -y echo ...

  6. 通过chrome插件自动生成博客评论,高效发外链

    最近crazy cattle 3d这个词爆火,很多人都在做,竞争异常激烈,甚至可以说是惨不忍睹. 从最近的数据看,胜出的主要是crazycattle3d.com, crazycattle3d.io, ...

  7. F-47(copy 邓大顾)

    *&---------------------------------------------------------------------* *& F-47过账 *&--- ...

  8. [计算机组成原理] 字符集编码: Unicode 字符集(UTF8/UTF16/UTF32) 和 `BOM`(Byte Order Mark/字节序标记) / UnicodeTextUtils

    Unicode字符集 Unicode 字符集的 BOM := Byte Order Mark := 字符顺序标记 BOM(Byte Order Mark)在分析unicode之前,先把bom(byte ...

  9. 重要通知:spring-ai-hunyuan 已兼容 Spring AI 稳定版!

    最近有小伙伴在使用 mvn 仓库中的 1.0.0-M6 版本时,已经遇到一些兼容性问题和未知异常.本着更好地维护 spring-ai-hunyuan 仓库,我这几天熬夜更新并整理了对 Spring A ...

  10. 利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践

    Kubernetes 是用于编排容器化应用程序的云原生系统.最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新. Kuberne ...