17370845950

Linux如何配置PAM认证模块_Linux系统登录策略与密码强度限制【步骤】
需修改PAM配置文件以强化登录安全:一、用pam_pwquality.so设密码强度;二、用pam_faillock.so限失败次数并锁定账户;三、禁用空密码及root远程登录;四、设会话超时与登录提醒;五、启用TTY审计日志。

如果您希望在Linux系统中通过PAM(Pluggable Authentication Modules)强化用户登录安全,限制弱密码使用并实施登录策略,则需直接修改PAM配置文件。以下是实现该目标的具体步骤:

一、配置密码强度策略(pam_pwquality.so)

pam_pwquality.so模块用于强制执行密码复杂度要求,包括最小长度、大小写字母、数字及特殊字符的组合规则。它替代了旧版pam_cracklib.so,提供更精细的控制能力。

1、编辑系统密码策略配置文件:/etc/pam.d/common-password(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL/CentOS/Fedora)。

2、在文件中找到以password requisite pam_pwquality.so开头的行;若不存在,则在该文件password段顶部插入以下行:

password requisite pam_pwquality.so retry=3 minlen=12 difok=5 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=2 reject_username enforce_for_root

3、创建或编辑/etc/security/pwquality.conf,确保其中无冲突参数覆盖上述命令行设置;如需覆盖,可在此文件中显式定义minlen、dcredit等值。

二、限制登录失败次数与锁定账户(pam_faillock.so)

pam_faillock.so模块可在连续认证失败后临时锁定用户账户,防止暴力破解。其行为分为“preauth”(前置检查)和“authfail”(失败记录)两个阶段,必须成对配置。

1、编辑/etc/pam.d/common-auth(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL系),在auth段添加以下两行:

auth [default=ignore] pam_faillock.so preauth silent deny=5 unlock_time=900 fail_interval=90

auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900 fail_interval=90

2、在同文件的account段末尾添加一行:

account required pam_faillock.so

3、确认失败记录数据库路径存在且可写:/var/run/faillock/(RHEL系)或/var/log/faillog(部分Debian版本依赖faillog机制,需同步启用pam_tally2.so作为备选)。

三、禁用空密码与禁止root远程登录(pam_deny.so与pam_securetty.so)

通过组合基础PAM模块可阻断高危登录路径,例如空密码认证和root用户SSH直连,无需依赖服务级配置即可生效。

1、编辑/etc/pam.d/sshd(仅影响SSH登录),在auth段首行添加:

auth [success=ok default=bad] pam_succeed_if.so user != root

2、在同一文件中,添加禁止空密码的规则:

auth [success=ok default=bad] pam_succeed_if.so user ingroup nopasswdlogin

auth [default=die] pam_deny.so

3、为增强本地控制,在/etc/pam.d/login中启用tty白名单机制:

auth required pam_securetty.so

4、确保/etc/securetty文件仅保留允许root登录的终端名(如tty1、tty2),删除或注释掉pts/*、ttyS*等远程接口行。

四、设置会话超时与强制登出(pam_timeout.so与pam_lastlog.so)

利用PAM会话模块可自动终止闲置登录会话,并在用户登录时提示上次登录信息,提升审计响应能力。

1、编辑/etc/pam.d/common-session(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL系),在session段添加:

session optional pam_timeout.so timeout=600

2、在同一文件中加入登录时间提醒:

session optional pam_lastlog.so showfailed

3、验证/etc/security/time.conf是否存在;若需按时间段限制登录(如仅允许工作时间),可在此文件中定义time_rule,再于system-auth中引用pam_time.so。

五、启用登录失败日志审计(pam_tty_audit.so)

pam_tty_audit.so模块可记录用户会话中的全部键盘输入,适用于高安全等级环境下的操作追溯,但需注意性能开销与隐私合规性。

1、确认内核支持TTY审计功能:zgrep CONFIG_AUDIT_TTY /proc/config.gz或检查/boot/config-$(uname -r)中CONFIG_AUDIT_TTY是否为y。

2、编辑/etc/pam.d/common-session,在session段添加:

session required pam_tty_audit.so enable=* log_passwd

3、重启系统或重新加载auditd服务:systemctl restart auditd,并确认日志路径/var/log/audit/audit.log中出现type=TTY_DATA条目。