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

    本文目的是在于限制用户修改自己密码或root修改自己密码时,给出长度,复杂度等等限制,防止弱密码被黑客等不法分子破解

    服务器系统:centos 6.5 centos 6.8

    1.密码有效期

    cp /etc/login.defs /etc/login.defs.bak
    vim /etc/login.defs
    # Password aging controls:
    #
    #    PASS_MAX_DAYS    Maximum number of days a password may be used.
    #    PASS_MIN_DAYS    Minimum number of days allowed between password changes.
    #    PASS_MIN_LEN    Minimum acceptable password length.
    #    PASS_WARN_AGE    Number of days warning given before a password expires.
    #
    PASS_MAX_DAYS    90
    PASS_MIN_DAYS    80
    PASS_MIN_LEN            10
    PASS_WARN_AGE    7

    2.密码复杂度

    之所以选择passwdqc,是因为网上找了一下,发现绝大多数的linux密码强度策略限制都只针对非root用户,而passwdqc可以限定到root用户。

    cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac.bak
    vim /etc/pam.d/system-auth
    
    。。。。。。
    #password    requisite     pam_cracklib.so try_first_pass retry=3 type=             ##注释这一行,添加下一行
    password    requisite     /lib/security/$ISA/pam_passwdqc.so  min=disabled,24,16,12,10  passphrase=3 max=40 enforce=everyone retry=3 similar=deny
    password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
    password    required      pam_deny.so

    也可以使用下面配置:

    password required  pam_passwdqc.so min=disabled,disabled,12,8,8 max=30 passphrase=3 match=4 similar=deny enforce=everyone 
    disable_firstupper_lastdigit_check

    规则解释如下: 
    1)只包含一种字符的密码,拒绝(大小写,数字,特殊字符分别为4种字符) 
    2)只包含两种字符的密码,拒绝 
    3)如果密码中被识别出了常用的单词,那么最小长度就必须为12位。常用单词的最小识别长度为3.(由passphrase=3制定) 
    4)包含三种字符的密码,最小长度为8位 
    5) 包含四种字符的密码,最小长度为8位 
    6)如果发现本次修改的密码跟老密码有4个substring的长度类似,就认为是弱密码。(match=4 similar=deny) 
    7) 这个策略对所有用户都生效。(enforce=everyone ) 
    8)默认情况下,对于输入的密码,如果第一个字母是大写字母,或者最后一个字母为数字,则不会计入密码字符的种类。比如:Fuck1234,由于第一个F是大写字母,所以会被认为,该密码只有小写字母和数字两种字符。这个非常奇怪,我也不知道原因是什么。我们用disable_firstupper_lastdigit_check 禁止了这种识别。 

    3.测试

    echo "mhokwyaofnrd"|passwd --stdin root         ##仅仅小写,不通过
    echo "IEJVRRzfdHPI"|passwd --stdin root         ##大写,小写,不通过
    
    
    echo "cyd******Ab8C"|passwd --stdin root          ##大小写,特殊字符,通过。
    
    echo "Jes&us*****12"|passwd --stdin root          ##通过

    如果出现下面模块不支持的情况

  • 相关阅读:
    asp.net2.0中App_GlobalResources的使用
    KPI(Key Performance Indicators )
    Dictionary集合
    SQL连接查询1 内联接查询
    如何在Web.config中注册用户控件和自定义控件
    JavaScript中【数据类型】和【数组类型】的区别
    递归求斐波拉数列函数
    SQL连接查询2 外连接(左右联接查询)
    启示
    “帽子戏法”从何而来?
  • 原文地址:https://www.cnblogs.com/dadonggg/p/7975710.html
Copyright © 2011-2022 走看看