Linux 密码复杂度

 我们在使用linux系统设置密码的时候,经常遇到这样的问题,系统提示:您的密码太简单,或者您的密码是字典的一部分。那么系统是如何实现对用户的密码的复杂度的检查的呢?
  系统对密码的控制是有两部分(我知道的)组成:
  1 cracklib
  2 login.defs
  声明:login.defs主要是控制密码的有效期。对密码进行时间管理。此处不细谈。
  login.defs --shadow password suite configuration

  pam_cracklib.so 才是控制密码复杂度的关键文件。

  redhat公司专门开发了cracklib这个安装包来判断密码的复杂度。

  可以rpm -ql cracklib查看。

密码的复杂度的判断是通过pam模块控制来实现的,具体的模块是pam_cracklibpam_cracklib 的参数介绍:

debug

该选项使用模块将信息写入到日志(3)来指示组件的行为(这个选项不会记录密码信息到日志文件)。

type=XXX

默认的操作是为模块,当请求密码时,该模块默认操作是使用以下提示:“新的UNIX密码:”和“重新输入密码UNIX”。此选项就是替换默认单词的UNIX。

retry=N

提示用户最多N次会返回错误。默认值是1

difok=N

此参数会改变默认新密码中必须有5个字符不同于旧密码中字符,此外,如果新密码中有一半字符不同于旧密码,那么就可以使用新密码。

difignore=N

密码在少于多少个字符时,difok将被忽略,默认是23。

minlen=N
    新密码可接受的最小长度。

dcredit=N

(N < 0) 新密码最小数字长度。

ucredit=N

(N < 0) 新密码最小大写字母长度。

lcredit=N

(N < 0) 新密码最小小写字母长度。

ocredit=N

(N < 0) 新密码最小其他字符长度。

use_authtok

此参数用于强制不提示用户输入新的密码而由以前堆积的密码模块所提供。 

dictpath=/path/to/dict
  Path to the cracklib dictionaries.
  dictpath=/path/to/dict //注:密码字典,这个是验证用户的密码是否是字典一部分的关键。
  Path to the cracklib dictionaries.

例子:
在linux下设置密码复杂度办法:

(1)修改/etc/login.defs文件

PASS_MAX_DAYS   90  #密码最长过期天数
PASS_MIN_DAYS   80  #密码最小过期天数
PASS_MIN_LEN    10  #密码最小长度
PASS_WARN_AGE   7   #密码过期警告天数

(2)修改/etc/pam.d/system-auth文件

找到 password requisite pam_cracklib.so这么一行替换成如下:

password  requisite pam_cracklib.so retry=5  difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict

参数含义:

尝试次数:5  最少不同字符:3 最小密码长度:10  最少大写字母:1 最少小写字母:3 最少数字:3 密码字典:/usr/share/cracklib/pw_dict

注意:以上设置对root用户无效。修改后你可能会立即测试,会发现以上设置无效。你可以新建账户,并进入该账户。
useradd  test
passwd test

su - test
此时你发现设置起作用了。

时间: 2024-11-05 14:45:52

Linux 密码复杂度的相关文章

Linux下pam密码复杂度限制

linux系统是如何实现对用户的密码的复杂度的检查的呢?系统对密码的控制是有两部分组成:1 cracklib2 /etc/login.defs pam_cracklib.so 才是控制密码复杂度的关键文件/lib/security/pam_cracklib.soredhat公司专门开发了cracklib这个安装包来判断密码的复杂度 # rpm -qa | grep cracklibcracklib-2.8.9-3.1 \\检查软件是否安装cracklib-dicts-2.8.9-3.1 \\密码

linux加固安全之密码复杂度

随着linux系统使用的普遍性,对linux用户及系统安全要求也随之提升,单纯从单位制度,用户安全意识上来规范,并不能杜绝弱口令,必须从技术上要求用户定时修改复杂的密码,从而提高用户和系统的安全性. 密码策略的2个基本 一个密码最长使用期限,另一个是密码复杂度:这两个分别是/etc/login.defs 和/etc/pam.d/system-auth来控制. 1. vi /etc/login.defs PASS_MAX_DAYS 90 #密码最长使用期限 PASS_MIN_DAYS 5 #密码最

使用John the ripper工具来尝试破解Linux密码

这篇文章主要介绍了使用John the ripper工具来尝试破解Linux密码的方法,这款工具可能主要被用来破解系统用户的密码以获得文件操作权限,需要的朋友可以参考下 John有别于Hdra之类的工具.Hydra进行盲目的蛮力攻击,其方法是在FTP服务器或Telnet服务器上的服务后台程序上尝试用户名/密码组合.不过,John首先需要散列.所以,对黑客来说更大的挑战是,先搞到需要破解的散列.如今,使用网上随处可得的免费彩虹表(rainbow table),比较容易破解散列.只要进入到其中一个网

js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码

直接上代码 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

密码复杂度检查函数

密码复杂度检测.py 1 import re 2 ''' 3 接口调用示例: 4 import 密码复杂度检测 as pc 5 6 while True: 7 str1 = input("请输入密码> ").strip() 8 if pc.check_password_complexity(str1,2): 9 print("%s复杂度符合要求"%str1) 10 break 11 12 13 密码复杂度检查,包括两种复杂度检查, 14 level=1时, 1

使用单用户模式破解Linux密码

使用单用户模式破解Linux密码 特别说明:在实际工作应用中,安装Linux操作系统必须设置装载口令,否则很容易被破解. 1.使用reboot指令重启Linux操作系统 2.在进入操作系统数秒时,单击Esc按键,进入如下界面 3.按字母小e进入如下编辑模式 4.选择第二个选项,然后再次单击字母小e 更改完成后,单击回车,如下图所示: 5.单击字母小b,重启操作系统,进入如下界面 在#号后面,输入passwd root(重置root管理员密码) 6.设置完成后,使用reboot指令重启操作系统,使

检查密码复杂度的C#正则表达式

原文:检查密码复杂度的C#正则表达式 在用户注册与修改.重置密码时,强制密码达到一定的复杂度,是减少盗号的有效措施之一. 而在代码中检查密码复杂度就需要用到正则表达式,比如要求密码必须包含数字.小写或大写字母.特殊字符.字符数在8-30之间,对应的正则表达式如下: var regex = new Regex(@" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{8

Linux密码更改

Linux密码更改 男孩儿的灰色 QQ:936779899 2014.2.9 1.         进入单用户模式 2.         编辑passwd文件,删除X 3.         然后保存推出并编辑shadow文件 4.         删除标色部分,其他保持不变 5.         最后保存退出 6.         无密码登陆 注解:此操作属于red hat,当然在Unix上雷同.用此操作解决了BT4的root密码清除,背景如下: 在虚拟机上安装好了系统,即BT4,但是安装过程中

无法修改linux密码Authentication token manipulation error 问题解决

无法修改linux密码Authentication token manipulation error 问题解决 注:本人遇到同样问题,采用的7-8步骤OK. 同事修改linux root密码时出现错误passwd: Authentication token manipulation error发生该错误原因是:1.分区没有空间导致.2./etc/passwd 和/etc/shadow不同步但是这次上面两条却行不通,通过df查看根分区还有40%剩余. 1.尝试修改密码,出现错误# passwdCh