zoukankan      html  css  js  c++  java
  • linux 密码复杂度设置

    /etc/login.defs文件,里面几个选项
    PASS_MAX_DAYS   90  #密码最长过期天数
    PASS_MIN_DAYS   80  #密码最小过期天数
    PASS_MIN_LEN    10  #密码最小长度
    PASS_WARN_AGE   7   #密码过期警告天数
    
    
    
    修改/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
    
    
    
    pam_cracklib.so 才是控制密码复杂度的关键文件
    /lib/security/pam_cracklib.so
    # rpm -qa | grep cracklib
    cracklib-2.8.9-3.1 \检查软件是否安装
    cracklib-dicts-2.8.9-3.1 \密码字典文件
    
    声明:login.defs主要是控制密码的有效期。对密码进行时间管理
    
    密码的复杂度的判断是通过pam模块控制来实现的,具体的模块是pam_cracklibpam_cracklib 的参数介绍:
    # man pam_cracklib \手册分析该模块的作用
    
    可用参数说明
    debug
    此选项使模块的信息写入到syslog(3),显示模块的行为(此选项不写密码信息到日志文件)。
    
    type=XXX
    默认的动作是模块使用以下提示时,要求口令:“新的UNIX密码:“和”重新输入UNIX密码:“。默认的Word UNIX可以被替换为这个选项。
    
    retry=N
    改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来。
    
    difok=N
    默认值为10。这个参数设置允许的新、旧密码相同字符的个数。不过,如果新密码中1/2的字符和旧密码不同,则新密码被接受。
    
    difignore=N
    多少个字符的密码应收到difok将被忽略。默认为23
    
    minlen=N
    新的最低可接受的大小密码(加一个,如果没有禁用学分这是默认值)。除了在新密码的字符数,贷方(在长度+1),给出了各种人物的不同种类(其他,大写,小写,数字)。此参数的默认值是9,它是一个老式的UNIX密码的字符相同类型的所有好,但可能过低,利用一个MD5的系统增加安全性。请注意,有一个在Cracklib本身长度的限制,一“的方式太短“4极限是硬编码和定义的限制(6),将不参考minlen检查对。如果你想允许密码短短5个字符,你不应该使用这个模块。
    
    dcredit=N
    限制新密码中至少有多少个数字。
    
    ucredit=N
    限制新密码中至少有多少个大写字符。
    
    lcredit=N
    限制新密码中至少有多少个小写字符。
    
    ocredit=N
    限制新密码中至少有多少个其它的字符。
    
    此参数用于强制模块不提示用户的新密码,但以前使用的堆叠模块提供的密码之一。
    
    dictpath=/path/to/dict //注:密码字典,这个是验证用户的密码是否是字典一部分的关键
    
    cracklib密码强度检测过程:
    首先检查密码是否是字典的一部分,如果不是,则进行下面的检查
    密码强度检测过程–>
    新密码是否旧密码的回文–>
    新密码是否只是就密码改变了大小写–>
    新密码是否和旧密码很相似–>
    新密码是否太短–>
    新密码的字符是否是旧密码字符的一个循环 例如旧密码:123 新密码:231 –>
    这个密码以前是否使用过
    
    /etc/pam.d/system-auth
    auth required pam_env.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_succeed_if.so uid < 500 quiet
    account required pam_permit.so
    
    password requisite pam_cracklib.so try_first_pass retry=3 \复杂度验证
    password sufficient pam_unix.so md5 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
    
    实例:
    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
    最小长度为8和至少1位数字,1位大写字母,和另外1个字符的密码
    
    注意这个设置对于root没有作用,
    只针对普通用户修改自己密码时起作用
    
    
  • 相关阅读:
    Kafka Streams演示程序
    大全Kafka Streams
    简介Kafka Streams
    初识Kafka
    面试常考各类排序算法总结.(c#)
    php程序员的成长之路
    web前端研发工程师编程能力成长之路
    CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
    【转】OkHttp使用进阶 译自OkHttp Github官方教程
    排序算法一:桶排序
  • 原文地址:https://www.cnblogs.com/xiaogongzi/p/8780765.html
Copyright © 2011-2022 走看看