LINUX设置密码复杂度的文件/etc/pam.d/system-auth,具体需要怎么改?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX设置密码复杂度的文件/etc/pam.d/system-auth,具体需要怎么改?相关的知识,希望对你有一定的参考价值。
网上说,密码复杂度在
[root@localhost ~]# vim /etc/pam.d/system-auth里
找到password requisite pam_cracklib.so在后面可以加 difok=x(要x个不同字符) minlen=x(最小密码长度) ucredit=-x(最少x个大写字母) lcredit=-x(最少x个小写字母) dcredit=-x (最少x个数字)dictpath=/usr/share/cracklib/pw_dict
但是我看了这些还是不太清楚
我看了我的机器上的/etc/pam.d/system-auth文件内容,是这样:
[root@admin1 ~]# 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 sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 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 [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
我要改成:要a个不同字符,最小密码长度b,最少c个大写字母,最少d个小写字母,最少e个数字
应该把那行改成什么样?
一、准备工作:
安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力。
二、具体操作:
Debian、Ubuntu 或 Linux Mint 系统上:
代码如下:
$ sudo apt-get install libpam-cracklib
CentOS、Fedora、RHEL 系统已经默认安装了 cracklib PAM 模块,所以在这些系统上无需执行上面的操作。
为了强制实施密码策略,需要修改 /etc/pam.d 目录下的 PAM 配置文件。一旦修改,策略会马上生效。
注意:此教程中的密码策略只对非 root 用户有效,对 root 用户无效。
策略设置:
1、禁止使用旧密码
找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。
Debian、Ubuntu 或 Linux Mint 系统上:
代码如下:
$ sudo vi /etc/pam.d/common-password
password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5
CentOS、Fedora、RHEL 系统上:
代码如下:
$ sudo vi /etc/pam.d/system-auth
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
二、设置最短密码长度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果密码同时用上了这4种类型的符号,并且 minlen 设为10,那么最短的密码长度允许是6个字符。
Debian、Ubuntu 或 Linux Mint 系统上:
代码如下:
$ sudo vi /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 difok=3
CentOS、Fedora、RHEL 系统上:
代码如下:
$ sudo vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
三、设置密码复杂度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。
Debian、Ubuntu 或 Linux Mint 系统上:
代码如下:
$ sudo vi /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
CentOS、Fedora、RHEL 系统上:
代码如下:
$ 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
四、设置密码过期期限
编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示:
代码如下:
$ sudo vi /etc/login.defs
PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7
这些设置要求用户每6个月改变密码,并且会提前7天提醒用户密码快到期了。
如果想为每个用户设置不同的密码期限,使用 chage 命令。下面的命令可以查看某个用户的密码限期:
代码如下:
$ sudo chage -l xmodulo
Last password change : Dec 30, 2013 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
默认情况下,用户的密码永不过期。
五、下面的命令用于修改 xmodulo 用户的密码期限:
代码如下:
$ sudo chage -E 6/30/2014 -m 5 -M 90 -I 30 -W 14 xmodulo
上面的命令将密码期限设为2014年6月3日。另外,修改密码的最短周期为5天,最长周期为90天。密码过期前14天会发送消息提醒用户,过期后帐号会被锁住30天。
设置完后,验证效果如下:
参考技术A提高密码复杂等级的方法:
单纯的数字、字母,甚至重复使用一个字符,这样虽然密码位数比较长,好像很难被破解出来。其实不然,单纯的数字和字符很容易被破译。因此,我们在设置密码的时候尽包含字母、数字、各种符号,如果区分大小写的话,那么还应交替使用大小写,这样组成的密码将会安全许多。
设置密码时,普通人的习惯都是从顺序较小的a、b、c、d或者1、2、3开始,这一点刚好满足了暴力破解的破解顺序,因为它们就是按照字母和数字的自然排序进行计算。因此,如果我们将密码的第一位设为z等排在后面的内容,这样破解的机率会少了许多。
在使用电脑的过程中,我们无时无刻不在与密码打交道。很多黑客之所以成功盗QQ、破解邮箱,就是因为我们设置的密码过于简单。如果自己设置的密码被别人猜到或破译,那么则会重要资料、个人隐私被泄露。因此如何设置一个安全的密码是与每个都相关的一件大事。
参考技术B password requisite pam_cracklib.so retry=3 difok=a minlen=b ucredit=-c lcredit=-d dcredit=-e ocredit=-1为了全面,我把ocredit也加进去了,其中ocredit表示标点符号,我设置-1表示至少要一个追问
try_first_pass retry=3 type=
这段用不用全留下?我看try_first_pass和type=没了,这两个是干什么用的?
保留着
这个是拿前一次密码认证,通过不了再提示用户输入
type还是为空
那加上这些,麻烦给我写一个完整的,谢了,我这方面太棒锤,以防写错了
追答password requisite pam_cracklib.so try_first_pass retry=3 type=
difok=a minlen=b ucredit=-c lcredit=-d dcredit=-e ocredit=-1
Linux-密码复杂度限制
前言
设置一个复杂的密码,可以有效的提升系统的安全性。在Linux上有PAM(Pluggable Authentication Modules)里面有一个pam_cracklib.so来控制密码的复杂度。
配置文件路径
CentOS / RHEL / RedHat / Fedora : /etc/pam.d/system-auth
pam_cracklib.so
pam_cracklib.so中有很多参数可以选择,具体配置如下:
debug : 此选为记录Syslog日志。
type=safe : 输入新密码的时候给予的提示。
retry=N : 改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来。
difok=N : 默认值为8。这个参数设置允许的新、旧密码相同字符的个数。
difignore=N : 多少个字符的密码应收到difok将被忽略。默认为23
minlen=N : 新的最低可接受的大小密码。除了在新密码的字符数。此参数的默认值是9,它是一个老式的UNIX密码的字符相同类型的所有好,但可能过低,利用一个MD5的系统增加安全性。
dcredit=N : 限制新密码中至少有多少个数字。
ucredit=N : 限制新密码中至少有多少个大写字符。
lcredit=N : 限制新密码中至少有多少个小写字符。
ocredit=N : 限制新密码中至少有多少个其它的字符。此参数用于强制模块不提示用户的新密码,但以前使用的堆叠模块提供的密码之一。
dictpath=/data/dict :密码字典,这个是验证用户的密码是否是字典一部分的关键
cracklib密码强度检测过程:
1、首先检查密码是否是字典的一部分,如果不是,则进行下面的检查
2、密码强度检测过程
3、新密码是否旧密码的回文
4、新密码是否只是就密码改变了大小写
5、新密码是否和旧密码很相似
6、新密码是否太短
7、新密码的字符是否是旧密码字符的一个循环 例如旧密码:123 新密码:231
8、这个密码以前是否使用过。
例子
password required pam_cracklib.so difok=3 minlen=15 dcredit=2 ocredit=2
允许有3个新、旧密码相同字符的、最小长度15位 和至少包含2数字、至少包含2个特殊字符数
password required pam_cracklib.so dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8 enforce_for_root
最小长度为8和至少1位数字,1位大写字母,和另外1个字符的密码,此设置对root生效
以上是关于LINUX设置密码复杂度的文件/etc/pam.d/system-auth,具体需要怎么改?的主要内容,如果未能解决你的问题,请参考以下文章