这篇文章介绍怎么限制密码使用的长度、复杂度,过期时间。目的是防止用户使用弱密码,强制用户设置强密码。 Linux的用户密码是一大安全因素。如果你使用弱密码,极有可能会被人暴力破解。很多系统的安全问题都是由于使用弱密码引起的。 做为系统管理员,你应使用复杂的强密码。
相关主题
设置密码长度 默认安装下,所有基于Linux操作系统,要求用户密码至少使用6个字符。我建议密码至少不少于8位。一个强密码还需要混合大小写字母、数字和特殊字符。
基于Debian的系统(Debian Ubuntu Linux Mint) 基于Debian的系统一般把密码验证相关的配置文件放在/etc/pam.d/。 设置最少密码长度限制:至少8个字符。编辑 /etc/pam.d/common-password 文件: $ sudo vim /etc/pam.d/common-password 找到如下一行: password [success=1 default=ignore] pam_unix.so obscure sha512
在上一行后添加 minlen=8,这里我设置密码长度至少8个字符。 password [success=1 default=ignore] pam_unix.so obscure sha512 minlen=8 保存退出。OK,现在用户不能设置少于8个字符的密码。 测试:
如果提供的密码不足8位,密码将设置失败。提示信息:You must choose a longer password(你可以试试自定义提示信息)。
基于RHEL的系统(RHEL CentOS Scientific) RHEL7,CentOS7,Scientific7 执行如下命令设置密码长度,我设置8位: # authconfig --passminlen=8 --update 查看最少密码位数: # grep "^minlen" /etc/security/pwquality.conf 输入如下: minlen = 8
RHEL6,CentOS6,Scientific6 编辑 /etc/pam.d/system-auth 文件: # vim /etc/pam.d/system-auth 修改一行如下,添加minlen=8: password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8
设置密码复杂度 强制用户密码使用更多的字符集-大写字母、小写字母、数字和特殊字符。
基于Debian的系统(Debian Ubuntu Linux Mint) 首先安装密码复杂度检查工具库 libpam-pwquality: $ sudo apt-get install libpam-pwquality 编辑 /etc/pam.d/common-password 文件: $ sudo vim /etc/pam.d/common-password 安装完上面的库,这个配置文件自动添加了一行: password requisite pam_pwquality.so retry=3 我们需要使用pam_pwquality来设置密码复杂度。
如果你要求密码至少需要有一个大写字母,在上面一行后添加 ucredit=-1: password requisite pam_pwquality.so retry=3 ucredit=-1 要求密码至少需要有一个小写字母: password requisite pam_pwquality.so retry=3 lcredit=-1 要求密码至少需要有一个数字: password requisite pam_pwquality.so retry=3 dcredit=-1 要求密码至少需要一个除字母数字以外的其他字符: password requisite pam_pwquality.so retry=3 ocredit=-1 你也可以设置密码最少包含的字符集(minclass): password requisite pam_pwquality.so retry=3 minclass=2 你可以自由组合: password requisite pam_pwquality.so retry=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
基于RHEL的系统(RHEL CentOS Scientific) RHEL7,CentOS7,Scientific7 设置密码中至少包含一个小写字符,执行命令: # authconfig --enablereqlower --update 查看设置: # grep "^lcredit" /etc/security/pwquality.conf 设置密码中至少包含一个大写字符,执行命令: # authconfig --enablerequpper --update 查看设置: # grep "^ucredit" /etc/security/pwquality.conf 设置密码中至少包含一个数字字符,执行命令: # authconfig --enablereqdigit --update 查看设置: # grep "^dcredit" /etc/security/pwquality.conf 设置密码中至少包含一个特殊字符,执行命令: # authconfig --enablereqother --update 查看设置: # grep "^ocredit" /etc/security/pwquality.conf
RHEL6,CentOS6,Scientific6 编辑 /etc/pam.d/system-auth 文件: # vim /etc/pam.d/system-auth 找到如下一行,修改: password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 上面配置了密码至少8个字符长,并且分别包含大小写字母、数字和特殊字符。
设置密码过期时间 我们设置如下策略: 一个密码使用的最长天数 更改密码最少天数间隔,为了不让用户频繁更改密码 在密码过期前多少天提醒用户
基于Debian的系统(Debian Ubuntu Linux Mint) 编辑文件 login.defs: $ sudo vim /etc/login.defs 分别设置如下参数: PASS_MAX_DAYS 100 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
上面的例子,强制用户每100天更改一次密码,提前7天提醒用户。 注意,上面的配置只对系统中的新建用户生效。如果你要指定某个以存在的用户可以使用如下命令: $ sudo chage -M <days> <username> $ sudo chage -m <days> <username> $ sudo chage -W <days> <username> 使用 chage -l username 命令显示用户密码信息,例:
你会发现Password inactive和Account expires并没有生效,执行如下命令: $ sudo chage -E 24/09/2016 -m 0 -M 90 -I 10 -W 7 bibi
用户在密码过期10天后锁定。
基于RHEL的系统(RHEL CentOS Scientific) 和Debian系统一样。
防止用户再次使用以前使用过的密码 一般来说,不建议用户再次使用同一个密码。
基于Debian的系统(Debian Ubuntu Linux Mint) 编辑 /etc/pam.d/common-password: $ sudo vim /etc/pam.d/common-password 在下面一行后添加 remember=10: password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=10 上面设置了不允许再次使用最近的10个密码。
基于RHEL的系统(RHEL CentOS Scientific) 编辑 /etc/pam.d/system-auth: # vim /etc/pam.d/system-auth 在下面一行后添加 remember=10: password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=10
本文完。 |