/etc/pam.d/system-auth文件
密码设置以及登录控制文件。可以修改密码策略和登录失败重试策略。
[root@02-2C-29-C5-50-1B ~]# cat /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10 account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so
组件名称 | 组件含义 |
auth组件 | 认证接口,要求并验证密码 |
account组件 | 检测是否允许访问。检测账户是否过期或则在末端时间内能否登陆。 |
password组件 | 设置并验证密码 |
session组件 | 配置和管理用户sesison |
处理选项 | 含义 |
required | 模块必须success才能进行继续。即使失败用户也不会立刻获知,直到所有相关模块完成。 |
requisite | 该模块必须success才能使认证继续进行。 |
suffifient | 如果失败则忽略。 |
optinal | 忽略结果,不管是否失败。 |
pam_pwquality.so配置密码复杂度
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
设置项 | 含义 |
minlen=12 | 密码最小长度为12个字符。 |
lcredit=-1 | 密码应包含的小写字母的至少一个 |
ucredit=-1 | 密码应包含的大写字母至少一个 |
dcredit=-1 | 将密码包含的数字至少为一个 |
ocredit=-1 | 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个 |
enforce_for_root | 确保即使是root用户设置密码,也应强制执行复杂性策略 |
pam_tally2.so配置登录失败处理
auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10
连续密码错误3次锁定账户,普通用户5秒后解锁,root用户10秒解锁
补充一:配置用户密码策略
注意:此教程中的密码策略只对非 root 用户有效,对 root 用户无效。
CentOS、Fedora、RHEL 系统:
1.禁止使用旧密码
找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。
代码如下:
$ sudo vi /etc/pam.d/system-auth password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
2.设置最短密码长度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果密码同时用上了这4种类型的符号,并且 minlen 设为10,那么最短的密码长度允许是6个字符。
代码如下:
$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10
3.设置密码复杂度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。
代码如下:
$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
4.设置密码过期限制
编辑 /etc/login.defs 文件,可以设置当前密码的有效期限。
代码如下:
$ sudo vi /etc/login.defs PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7
这些设置要求用户每6个月改变密码,并且会提前7天提醒用户密码快到期了。
如果想为每个用户设置不同的密码期限,使用 chage 命令。下面的命令可以查看某个用户的密码限期:
代码如下:
$ sudo chage -l localhost # sudo chage -l 用户名 Last password change : Aug 29, 2021 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 #最近一次密码修改时间 :8月 29, 2021 #密码过期时间 :从不 #密码失效时间 :从不 #帐户过期时间 :从不 #两次改变密码之间相距的最小天数 :0 #两次改变密码之间相距的最大天数 :99999 #在密码过期之前警告的天数 :7
默认情况下,用户的密码永不过期。
5.使用命令修改localhost用户的密码期限
代码如下:
sudo chage -E 11/30/2021 -m 5 -M 90 -I 30 -W 14 localhost
上面的命令将密码期限设为2021年11月30日。另外,修改密码的最短周期为5天,最长周期为90天。密码过期前14天会发送消息提醒用户,过期后帐号会被锁住30天。
设置完后,验证效果如下:
写在最后
以上就是对system-auth文件的基本介绍了,暂时先写这么多,后面也会进行完善。
你知道的越多,你不知道的越多,人才们的 【三连】 就是我创作的最大动力,我们下期见!
注:如果本篇博客有任何错误和建议,欢迎人才们留言,你快说句话啊!
参考: