需修改PAM配置文件以强化登录安全:一、用pam_pwquality.so设密码强度;二、用pam_faillock.so限失败次数并锁定账户;三、禁用空密码及root远程登录;四、设会话超时与登录提醒;五、启用TTY审计日志。
如果您希望在Linux系统中通过PAM(Pluggable Authentication Modules)强化用户登录安全,限制弱密码使用并实施登录策略,则需直接修改PAM配置文件。以下是实现该目标的具体步骤:
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模块可在连续认证失败后临时锁定用户账户,防止暴力破解。其行为分为“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作为备选)。
通过组合基础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会话模块可自动终止闲置登录会话,并在用户登录时提示上次登录信息,提升审计响应能力。
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模块可记录用户会话中的全部键盘输入,适用于高安全等级环境下的操作追溯,但需注意性能开销与隐私合规性。
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条目。