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,具体需要怎么改?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux 为系统用户设置密码复杂度策略

如何去掉Linux的密码复杂度要求

Linux系统中关于/etc/shadow文件权限问题!

Linux账户密码过期安全策略设置

linux 下获取了/etc/passwd 如何破解root密码

Linux密码复杂度及生命周期