搬瓦工 VPS PAM 身份认证系统配置教程

PAM(Pluggable Authentication Modules,可插拔认证模块)是 Linux 系统的核心认证框架,几乎所有需要身份验证的服务(SSH、sudo、login 等)都通过 PAM 来实现认证。通过合理配置 PAM,可以实现密码复杂度要求、登录失败锁定、双因素认证等多种安全策略。本文将详细介绍如何在搬瓦工 VPS 上配置 PAM 系统,全面提升身份认证安全性。

一、PAM 体系结构

PAM 采用模块化设计,将认证过程分为四个独立的管理组:

  • auth:验证用户身份,例如检查密码、指纹或令牌。
  • account:检查账户是否可用,例如账户是否过期、是否被锁定。
  • password:管理密码修改,包括密码复杂度检查。
  • session:管理会话的建立和销毁,例如挂载目录、设置环境变量。

每个模块有控制标志:required(必须通过但继续检查后续模块)、requisite(必须通过否则立即失败)、sufficient(通过则跳过后续模块)、optional(可选,通常用于会话管理)。

二、PAM 配置文件结构

2.1 配置文件位置

# 主配置目录
ls /etc/pam.d/

# 常见的配置文件
/etc/pam.d/sshd          # SSH 登录认证
/etc/pam.d/sudo          # sudo 命令认证
/etc/pam.d/login         # 本地登录认证
/etc/pam.d/common-auth   # 通用认证配置(Debian/Ubuntu)
/etc/pam.d/system-auth   # 系统认证配置(CentOS/RHEL)
/etc/pam.d/common-password  # 通用密码策略

2.2 配置文件格式

每行的格式为:类型 控制标志 模块路径 [模块参数]

# 示例:/etc/pam.d/sshd
auth       required     pam_sepermit.so
auth       substack     common-auth
auth       required     pam_env.so
account    required     pam_nologin.so
account    include      common-account
password   include      common-password
session    required     pam_loginuid.so
session    include      common-session

三、密码策略配置

3.1 安装 pam_pwquality 模块

# Ubuntu / Debian
apt install libpam-pwquality -y

# CentOS / RHEL
yum install pam_pwquality -y

3.2 配置密码复杂度

编辑密码质量配置文件:

vi /etc/security/pwquality.conf

添加以下配置:

# 密码最小长度
minlen = 12
# 最少包含大写字母数
ucredit = -1
# 最少包含小写字母数
lcredit = -1
# 最少包含数字数
dcredit = -1
# 最少包含特殊字符数
ocredit = -1
# 新密码与旧密码的最少不同字符数
difok = 5
# 禁止包含用户名
usercheck = 1
# 检测字典词
dictcheck = 1
# 拒绝回文密码
palindrome = 1
# 密码最大连续相同字符数
maxrepeat = 3
# 密码最大连续同类字符数
maxclassrepeat = 4

3.3 密码历史记录

防止用户重复使用旧密码:

# Ubuntu / Debian:编辑 /etc/pam.d/common-password
# 在 pam_unix.so 行添加 remember 参数
password  required  pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12

四、登录失败锁定

4.1 使用 pam_faillock

pam_faillock 是现代 Linux 系统推荐的账户锁定模块,取代了旧的 pam_tally2:

# 编辑 /etc/security/faillock.conf
vi /etc/security/faillock.conf
# 失败次数阈值
deny = 5
# 锁定时间(秒),600 = 10 分钟
unlock_time = 600
# 失败计数窗口(秒)
fail_interval = 900
# 审计模式
audit
# 不锁定 root(生产环境慎用)
# even_deny_root
# root 锁定时间
# root_unlock_time = 60

4.2 配置 PAM 使用 faillock

# 编辑 /etc/pam.d/common-auth(Ubuntu/Debian)
# 在文件开头添加
auth    required    pam_faillock.so preauth
# 在 pam_unix.so 之后添加
auth    [default=die] pam_faillock.so authfail
auth    sufficient  pam_faillock.so authsucc

4.3 管理锁定的账户

# 查看账户失败记录
faillock --user username

# 解锁账户
faillock --user username --reset

# 查看所有用户的锁定状态
faillock

五、配置 Google Authenticator 双因素认证

5.1 安装模块

# Ubuntu / Debian
apt install libpam-google-authenticator -y

# CentOS / RHEL
yum install google-authenticator -y

5.2 为用户初始化

# 以目标用户身份运行
google-authenticator -t -d -f -r 3 -R 30 -w 3

参数说明:-t 使用基于时间的令牌,-d 禁止重用令牌,-f 强制覆盖,-r 3 -R 30 每 30 秒限制 3 次尝试,-w 3 允许前后 3 个时间窗口。

5.3 配置 SSH 使用双因素认证

# 编辑 /etc/pam.d/sshd,添加以下行
auth required pam_google_authenticator.so nullok

# 编辑 /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

# 重启 SSH 服务
systemctl restart sshd

nullok 参数允许未配置 2FA 的用户照常登录,待所有用户都配置后可移除此参数。

六、访问时间限制

# 编辑 /etc/security/time.conf
# 格式:服务;终端;用户;时间
# 仅允许 admin 用户在工作时间通过 SSH 登录
sshd;*;admin;Wk0800-1800

# 编辑 /etc/pam.d/sshd,添加
account required pam_time.so

七、资源限制配置

# 编辑 /etc/security/limits.conf
# 限制用户最大进程数
*    soft    nproc     1024
*    hard    nproc     2048

# 限制最大打开文件数
*    soft    nofile    65535
*    hard    nofile    65535

# 限制 core dump
*    hard    core      0

# 确保 PAM 加载了 limits 模块
# 检查 /etc/pam.d/common-session 中是否包含:
session required pam_limits.so

八、安全审计与排查

# 查看认证日志
# Ubuntu / Debian
tail -f /var/log/auth.log

# CentOS / RHEL
tail -f /var/log/secure

# 测试 PAM 配置
pamtester sshd username authenticate

# 检查 PAM 模块是否可用
find /lib/x86_64-linux-gnu/security/ -name "*.so" | sort

九、最佳实践

  • 备份配置文件:修改 PAM 配置前务必备份,错误的配置可能导致无法登录。
  • 保持 root 会话:在修改 PAM 配置时,始终保持一个 root SSH 会话用于紧急恢复。
  • 逐步测试:每次只修改一项配置,测试确认无误后再继续。
  • 设置合理的密码策略:既要保证安全性又不能过于严格影响使用。
  • 启用双因素认证:为所有可远程登录的账户启用 2FA。

总结

PAM 是 Linux 身份认证的基石,合理配置 PAM 可以从根本上提升搬瓦工 VPS 的安全性。建议至少配置密码复杂度要求和登录失败锁定,有条件的话再加上双因素认证。配合 Authelia 双因素认证网关CrowdSec 安全引擎,可以构建企业级的身份认证安全体系。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。