以下是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模块连锁失败导致系统锁死。

posted on 2025-06-26 10:05  LeeHang  阅读(268)  评论(0)    收藏  举报