PAM 身份鉴别深度测试

吐槽一下,本身在word上整理的,发现不能直接拷贝到CSDN,有些序号也改变了,很无奈。。

Test1~9,主要针对minlen、ucredit、lcredit、dcredit、ocredit、minclass这几个参数的测试

Test10,主要针对difok参数的设置

Test11~13,主要对minlen测试

Teset1

 

  1. Ab1-kk   √
  2. Ab1-k    ×(score为9,应该是由于字符个数小于6个导致的)

 

Teset2

 

  1. Ab1-kkkk√value=4*2+4=12
  2. Ab1-kkk    ×    value=4*2+3=11
  3. Ab1kkkkkk  ×字符种类不满足

 

Teset3

 

  1. Ab1-kkkk   √    value=4*2+4+1=13,”*2”表示四类字符,额外+1;
  2. Ab1-kkk    √value=4*2+3+1=12,加1原因红色框,当小于等于2个小写时候,有几个就额外加几!!!
  3. Ab1-kk×value=4*2+3+1=11

 

   Ab1kkkkkk  ×

 

Teset4

 

  1. Ab1kkkkkk  ×(虽然score为13,但是缺少特殊字符,minclass其实没用)

 

 

Teset5

Teset6

 

  1. Ab1-kkkk  ×value=8(不会额外加1)

 

  1. Ab1-kkkkkkk   ×    value=11(不会额外加1)

 

  1. Ab1-kkkkkkkk  √value=12

Teset7

 

  1. qwertyuiopas√(不会校验字符类别,但是会校验不同的字符,具体密码允许几个不同字符还未知)
  2. qqqqqqqqqqqq    x(应该有另外一条规则限定密码都是相同字符的情况)

 

  1. q1q1q1q1q1q1 x

 

  1. qwerqwerqwer     x(有4个不同字符失败)
  2. qwertqwertqw√(有5个不同字符成功)

Teset8(验证minclass)

含义是密码所含有字符类型的个数。

  • 如果四种字符都设置为0,且minclass=2,则表示密码至少含有2种字符。
  • 如果四种字符都设置为非0,且minclass=2,四种字符非0要求密码有4种类型,而minclass=2要求至少有2种类型,综合两者,密码需要四种类型。

 

  1. qwertyuiopasx(只有1种类型是失败的,但如果不设置minclass=2,则是成功的)
  2. qwertyuiopaS√(两种字符类型,则成功)

Teset9

 

  1. Ab1-x

 

  1. Ab1-kx

 

  1. abcdef—321    x (三类字符,所以失败)

 

  1. Ab1-kk     √   密码至少包含6个字符,pam默认规则;也必须包含四种字符。

Teset10(difok测试)

 

  1. 初始密码qazwsxeedcRFV
  2. 改为qazwsxedcRGB,x(2个字符不同)

 

  1. 改为qazwsxedcTGB,  √(3个字符不同)

Teset11

 

  1. 设置密码qazwsxEDx(有点奇怪,score8为啥失败了??
  2. 设置密码qazwsxedcR√(score得分为10才可以,感觉minlen8失效了)

Teset12

 

  1. qazwsxedcx(score为9)
  2. qazwsxedcr√(score为10)

如果ucredit、lcredit、dcredit、ocredit都为0,貌似pam要求score得分至少为10,这有待确认。如果是这样的话,minlen小于10无效。

Teset13

 

  1. qazwsxedcrfvtgx(score为14)
  2. qazwsxedcrfvtgb√(score为15)

与test12比较,如果ucredit、lcredit、dcredit、ocredit都设置为0,minlen大于10是可以的生效的,测试的是15

总结:

  1. 密码总共有四种字符
  2. 不具体设置ucredit、lcredit、dcredit、ocredit四种字符的个数,则默认为1
  3. minlen不是所设置密码的最小位数,实际是最小scores,pam会根据规则计算所设置密码的“得分”情况;
  4. ucredit、lcredit、dcredit、ocredit的个数N,可见test3。
  • 如果大于0,说明会存在extra add 1的情况,举例

若ucredit=2lcredit=2dcredit=2ocredit=2,密码为”aaBB11-cD”,得分为:

Value=密码个数(9) +ucredit(2)+ lcredit(2)+dcredit (2)+ocredit(1) = 16

注1网上各种博客所说的“N>0表示最多出现的次数”是不恰当的,实际表示的意思为最多额外加的score,比如上述的的例子ucredit=2,所设置密码有3个大写字母,那么score最多额外加2,这才是“最多”的真正含义,当然ocredit=1,实际密码出现了一个特殊字符,那么也就额外加1了。

  • 如果小于0,表示所设置的密码至少存在N个,没有额外加1的动作;
  1. Pam_cracklib.so还有隐含规则
  • 密码最小个数为6
  • 将四种字符个数都设置为0的情况下,经过测试,密码设置需要有至少5个不同字符。
  1. Minclass是要求最小类别的数量,如果ucredit、lcredit、dcredit、ocredit都非0,则该参数设置与否是失效的,因为密码要求四种字符。
  2. 参考文档

http://www.linux-pam.org/Linux-PAM-html/sag-pam_cracklib.html

http://www.deer-run.com/~hal/sysadmin/pam_cracklib.html

你可能感兴趣的:(pam)