Linux 用户密码的有效期, 是否可以修改密码可以通过 login.defs 文件控制. 对 login.defs 文件修只影响后续建立的用户, 如果要改变以前建立的用户的有效期等可以使用 chage 命令.
Linux 用户密码的复杂度可以通过 pam pam_cracklib module 或 pam_passwdqc module 控制, 两者不能同时使用. 个人感觉 pam_passwdqc 更好用.
/etc/login.defs 密码策略
- PASS_MAX_DAYS 99999 #密码的最大有效期, 99999: 永久有期
- PASS_MIN_DAYS 0 #是否可修改密码, 0 可修改, 非 0 多少天后可修改
- PASS_MIN_LEN 5 #密码最小长度, 使用 pam_cracklib module, 该参数不再有效
- PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码
pam_cracklib 主要参数说明:
tretry=N: 重试多少次后返回密码修改错误
difok=N: 新密码必需与旧密码不同的位数
dcredit=N: N>= 0: 密码中最多有多少个数字; N < 0 密码中最少有多少个数字.
lcredit=N: 小宝字母的个数
ucredit=N 大宝字母的个数
credit=N: 特殊字母的个数
minclass=N: 密码组成 (大 / 小字母, 数字, 特殊字符)
pam_passwdqc 主要参数说明:
mix: 设置口令字最小长度, 默认值是 mix=disabled.
max: 设置口令字的最大长度, 默认值是 max=40.
passphrase: 设置口令短语中单词的最少个数, 默认值是 passphrase=3, 如果为 0 则禁用口令短语.
atch: 设置密码串的常见程序, 默认值是 match=4.
similar: 设置当我们重设口令时, 重新设置的新口令能否与旧口令相似, 它可以是 similar=permit 允许相似或 similar=deny 不允许相似.
random: 设置随机生成口令字的默认长度. 默认值是 random=42. 设为 0 则禁止该功能.
enforce: 设置约束范围, enforce=none 表示只警告弱口令字, 但不禁止它们使用; enforce=users 将对系统上的全体非根用户实行这一限制; enforce=everyone 将对包括根用户在内的全体用户实行这一限制.
non-unix: 它告诉这个模块不要使用传统的 getpwnam 函数调用获得用户信息,
retry: 设置用户输入口令字时允许重试的次数, 默认值是 retry=3
密码复杂度通过 / etc/pam.d/system-auth 实施
如:
要使用 pam_cracklib 将注释去掉, 把 pam_passwdqc.so 注释掉即可.
- #password requisite /lib/security/$ISA/pam_cracklib.so retry=3 difok=1
- password requisite /lib/security/$ISA/pam_passwdqc.so min=disabled,24,12,8,7 passphrase=3
- password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
- #password requisite /lib/security/$ISA/pam_cracklib.so retry=3 difok=1
新密码至少有一位与原来的不同
PASS_MIN_DAYS 参数则设定了在本次密码修改后, 下次允许更改密码之前所需的最少天数. PASS_WARN_AGE 的设定则指明了在口令失效前多少天开始通知用户更改密码 (一般在用户刚刚登陆系统时就会收到警告通知).
你也会编辑 / etc/default/useradd 文件, 寻找 INACTIVE 和 EXPIRE 两个关键词:
- INACTIVE=14
- EXPIRE=
这会指明在口令失效后多久时间内, 如果口令没有进行更改, 则将账户更改为失效状态. 在本例中, 这个时间是 14 天. 而 EXPIRE 的设置则用于为所有新用户设定一个密码失效的明确时间 (具体格式为 "年份 - 月份 - 日期").
显然, 上述这些设定更改之后, 只能影响到新建立的用户. 要想修改目前已存在的用户具体设置, 需要使用 chage 工具.
# chage -M 60 joe
这条命令将设置用户 joe 的 PASS_MAX_DAYS 为 60, 并修改对应的 shadow 文件.
你可以使用 chage -l 的选项, 列出当前的账户时效情况, 而使用 - m 选项是设置 PASS_MIN_DAYS, 用 - W 则是设置 PASS_WARN_AGE, 等等. chage 工具可以让你修改特定账户的所有密码时效状态.
注意, chage 仅仅适用于本地系统的账户, 如果你在使用一个类似 LDAP 这样的认证系统时, 该工具会失效. 如果你在使用 LDAP 作为认证, 而你又打算使用 chage, 那么, 哪怕仅仅是试图列出用户密码的时效信息, 你也会发现 chage 根本不起作用.
制定一项策略, 定义多长时间一个密码必须进行更改, 然后强制执行该策略, 是非常不错的一个做法. 在解雇了某个雇员后, 口令时效策略会保证该雇员不可能在被解雇 3 个月后发现他的口令依然可用. 即使系统管理员忽略了删除他的帐号, 该帐号也会因密码时效策略而被自动锁定. 当然, 这一点并不能成为不及时删除该雇员帐号的理由, 但是这个策略的确提供了一层额外的安全防护, 尤其是在过去常常忽视及时清理帐号的情况下.
来源: http://www.bubuko.com/infodetail-3108583.html