如何设置 Linux 系统的密码策略
虽然 Linux 的设计是安全的,但还是存在许多安全漏洞的风险,弱密码就是其中之一。作为系统管理员,你必须为用户提供一个强密码。因为大部分的系统漏洞就是由于弱密码而引发的。本教程描述了在基于 DEB 系统的 Linux,比如 Debian、Ubuntu、Linux Mint 等和基于 RPM 系统的 Linux,比如 RHEL、CentOS、Scientific Linux 等的系统下设置像密码长度、密码复杂度、密码有效期等密码策略。
在基于 DEB 的系统中设置密码长度默认情况下,所有的 Linux 操作系统要求用户密码长度最少 6 个字符。我强烈建议不要低于这个限制。并且不要使用你的真实名称、父母、配偶、孩子的名字,或者你的生日作为密码。即便是一个黑客新手,也可以很快地破解这类密码。一个好的密码必须是至少 6 个字符,并且包含数字、大写字母和特殊符号。
通常地,在基于 DEB 的操作系统中,密码和身份认证相关的配置文件被存储在 /etc/pam.d/ 目录中。
设置最小密码长度,编辑 /etc/pam.d/common-password 文件;
$ sudo nano /etc/pam.d/common-password
找到下面这行:
password [success=2 default=ignore] pam_unix.so obscure sha512
在末尾添加额外的文字:minlen=8。在这里我设置的最小密码长度为 8。
password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=8
保存并关闭该文件。这样一来,用户现在不能设置小于 8 个字符的密码。
在基于 RPM 的系统中设置密码长度在 RHEL、CentOS、Scientific Linux 7.x 系统中, 以 root 身份执行下面的命令来设置密码长度。
# authconfig --passminlen=8 --update
查看最小密码长度,执行:
# grep "^minlen" /etc/security/pwquality.conf
输出样例:
minlen = 8
在 RHEL、CentOS、Scientific Linux 6.x 系统中,编辑 /etc/pam.d/system-auth 文件:
# nano /etc/pam.d/system-auth
找到下面这行并在该行末尾添加:
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8
如上设置中,最小密码长度是 8 个字符。
在基于 DEB 的系统中设置密码复杂度此设置会强制要求密码中应该包含多少类型,比如大写字母、小写字母和其他字符。
首先,用下面命令安装密码质量检测库:
$ sudo apt-get install libpam-pwquality
之后,编辑 /etc/pam.d/common-password 文件:
$ sudo nano /etc/pam.d/common-password
为了设置密码中至少有一个大写字母,则在下面这行的末尾添加文字 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 ocredit=-1
正如你在上面样例中看到的一样,我们设置了密码中至少含有一个大写字母、一个小写字母和一个特殊字符。你可以设置被最大允许的任意数量的大写字母、小写字母和特殊字符。
你还可以设置密码中被允许的字符类的最大或最小数量。
下面的例子展示了设置一个新密码中被要求的字符类的最小数量:
password requisite pam_pwquality.so retry=3 min > 在基于 RPM 的系统中设置密码复杂度在 RHEL 7.x / CentOS 7.x / Scientific Linux 7.x 中:
设置密码中至少有一个小写字母,执行:
# authconfig --enablereqlower --update查看该设置,执行:
# grep "^lcredit" /etc/security/pwquality.conf输出样例:
lcredit = -1类似地,使用以下命令去设置密码中至少有一个大写字母:
# authconfig --enablerequpper --update查看该设置:
# grep "^ucredit" /etc/security/pwquality.conf输出样例:
ucredit = -1设置密码中至少有一个数字,执行:
# authconfig --enablereqdigit --update查看该设置,执行:
# grep "^dcredit" /etc/security/pwquality.conf输出样例:
dcredit = -1设置密码中至少含有一个其他字符,执行:
# authconfig --enablereqother --update查看该设置,执行:
# grep "^ocredit" /etc/security/pwquality.conf输出样例:
ocredit = -1在 RHEL 6.x / CentOS 6.x / Scientific Linux 6.x systems 中,以 root 身份编辑 /etc/pam.d/system-auth 文件:
# nano /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 个字符。另外,密码必须至少包含一个大写字母、一个小写字母、一个数字和一个其他字符。
在基于 DEB 的系统中设置密码有效期现在,我们将要设置下面的策略。
密码被使用的最长天数。 密码更改允许的最小间隔天数。 密码到期之前发出警告的天数。设置这些策略,编辑:
$ sudo nano /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显示已存在用户的密码,执行:
$ sudo chage -l sk这里,sk 是我的用户名。
输出样例:
Last password change : Feb 24, 2017 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正如你在上面看到的输出一样,该密码是无限期的。
修改已存在用户的密码有效期,
$ sudo chage -E 24/06/2018 -m 5 -M 90 -I 10 -W 10 sk上面的命令将会设置用户 sk 的密码期限是 24/06/2018。并且修改密码的最小间隔时间为 5 天,最大间隔时间为 90 天。用户账号将会在 10 天后被自动锁定,而且在到期之前的 10 天前显示警告信息。
在基于 RPM 的系统中设置密码效期这点和基于 DEB 的系统是相同的。
在基于 DEB 的系统中禁止使用近期使用过的密码你可以限制用户去设置一个已经使用过的密码。通俗的讲,就是说用户不能再次使用相同的密码。
为设置这一点,编辑 /etc/pam.d/common-password 文件:
$ sudo nano /etc/pam.d/common-password找到下面这行并且在末尾添加文字 remember=5:
password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5上面的策略将会阻止用户去使用最近使用过的 5 个密码。
在基于 RPM 的系统中禁止使用近期使用过的密码这点对于 RHEL 6.x 和 RHEL 7.x 和它们的衍生系统 CentOS、Scientific Linux 是相同的。
以 root 身份编辑 /etc/pam.d/system-auth 文件,
# vi /etc/pam.d/system-auth找到下面这行,并且在末尾添加文字 remember=5。
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5现在你了解了 Linux 中的密码策略,以及如何在基于 DEB 和 RPM 的系统中设置不同的密码策略。
就这样,我很快会在这里发表另外一天有趣而且有用的文章。在此之前请保持关注。如果您觉得本教程对你有帮助,请在您的社交,专业网络上分享并支持我们。
via: https://www.ostechnix.com/how-to-set-password-policies-in-linux/
作者:SK 选题:lujun9972 译者:liujing97 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/48053.html
centoslinuxUbuntu
相关文章
- 怎么办Linux密码忘记:如何解决(linux密码忘记了)
- 箱Linux系统 U盘写入:一次性解决工具箱(linux写入u盘工具)
- Linux快速改变登录密码(linux修改登录密码)
- 模式探索Linux系统休眠模式的奥秘(linux系统休眠)
- Linux设置密码永久有效(linux设置密码不过期)
- Linux系统下用户修改密码的方法(linux用户改密码)
- Linux内核:构成操作系统的核心(linux的内核是什么)
- 管理Linux 目录权限管理深度剖析(linux的目录权限)
- Linux 中设置指定用户密码的方法(linux指定用户密码)
- Linux用户密码修改:快速完成密码重置(linux用户密码修改)
- 深入研究 Linux 中查看登录密码的方法(linux查看登录密码)
- Linux虚拟机:破解密码技巧(linux虚拟机密码)
- 登陆无密码,Linux轻松登录(linux无密码用户)
- Linux的快速登录指南(linux登陆系统)
- Linux命令行查看用户密码(linux显示用户密码)
- Linux系统强大的密码安全格式(linux密码格式)
- Linux系统程序员高效之道(linux系统程序员)
- 炫酷动画,轻松学习Linux(动画linux)
- 忘记Linux root密码?轻松重置方法分享(linux重置root密码)
- Linux下的DNS客户端使用及配置(linuxdns客户端)
- 权限Linux服务器IP访问控制优化方案(linux服务器ip访问)
- 强大的Linux: 密码加密算法(linux密码加密算法)
- 如何在Linux系统中实现回滚操作?(linux回滚)
- 如何在Linux下修改SVN密码(linux修改svn密码)
- 探秘Linux:隐藏文件的神秘世界(linux隐藏文件)
- Linux内核版本查看技巧:一步到位(linux 内核版本查看)
- Linux 帮助手册:详尽指南,助你解决技术难题(linux帮助手册)
- Linux数据库忘记密码解决方案(linux数据库忘记密码)
- Linux获取文件:轻松拥有想要的内容(linux get 文件)
- Linux系统:选择最优质的操作系统(比较好的linux系统)
- 把CD引入Linux:直观的操作体验(cd linux)