以下是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=failecho "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个进程+自动创建家目录:
PAM配置:# /etc/security/limits.d/dev.conf dev hard nproc 50session 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模块连锁失败导致系统锁死。
浙公网安备 33010602011771号