龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

深入分析PAM在口令保护中的应用

时间:2011-03-20 22:37来源:未知 作者:admin 点击:
分享到:
PAM是pluggable authentication modules系统的一个实现,它最初有sun开发;很快被linux社区的接受,并且开发了更多的模块。其目标是提供一套可用于验证用户身份的函数库,从而将认证从应用程

  PAM是pluggable authentication modules系统的一个实现,它最初有sun开发;很快被linux社区的接受,并且开发了更多的模块。其目标是提供一套可用于验证用户身份的函数库,从而将认证从应用程序开发中独立出来。下面是一些PAM在口令保护中的简单例子。

  使用pam-tally.so

  pam-tally.so是一个PAM模快,用于监视用户登陆失败次数并该值超过特定值时做出反映。例如用户在登陆3次失败后,其帐号会被锁定一段时间,或永久锁定(或到联系到系统管理员)。将下面行添加到/etc/pam.d/login:

  account required /lib/security/pam-tally.so deny=3 no-magic-root

  这行配置pam-tally.so ,使之在用户连续3次登陆失败后锁定其帐号。这样攻击者就只有3次猜测口令的机会,之后就会被剔出。

  pam-cracklib.so 是alec muffett编写的PAM版本的cracklib库,用于检查口令的强度,他首先调用cracklib例程来测试口令是否能被破解。在通过这个测试后再进行如下测试:

  。 口令是否回文?

  。 新口令是不是旧口令的大小写变换版本?

  。 新口令和旧口令是否非常相似?

  。 口令是否太短?

  。 新口令是不是旧口令的移位版本?

  要以此测试每个新口令。只需要在/etc/pam.d/passwd文件中用如下行替换原来pam-unix.so模块;

  password required pam-cracklib.so retry=3

  password required pam-unix.so use-authtok md5

  这样就给用户三个机会来选择合适的健壮口令。也可以强制口令的长度:

  password required pam-cracklib.so retry=3 minlength=10

  password required pam-unix.so use-authtok md5

  强制MD5散列 有些linux发布默认配置下使用DES散列,而非MD5散列。要想强制所有新口令都以MD5散列方式保存,只需直接把md5添加到/etc/pam.d/passwd文件的pam-unix.so 行中:

  password required pam-unix.so use-authtok md5

  下面这段perl代码可用来生成强口令

  #!/usr/bin/perl -w

  #passwd-generator.pl

  use strict;

  my @chars=(33..91,93..126);

  my $num-chars=@chars;

  my $length;

  my $punt='! "#$%&'()*+,-./:;<=>?@[\\]^{|}~ ';

  print "enter number of characters in your passwd:"

  chmop($length=);

  die "length must be greater than 6!" if $length<=5;

  while(1){

  my $password=' ';

  foreach (1..Slength){

  Spassword.=chr(Schars[int(rant(Snum-chars))]);

  }

  if($passwd=~/[a-z]/ and $passwd=~/[A-Z]/ and

  $passwd=~/[0-9]/ and $passwd=~/[$punt]/ {

  print Spassword, "\n" ;

  exit;

  }

  }

精彩图集

赞助商链接