深入分析PAM在口令保护中的应用
作者:拥有一YY_373 | 来源:互联网 | 2017-06-25 18:11
文章标题:深入分析PAM在口令保护中的应用。Linux是中国IT实验室的一个技术频道。包含桌面应用,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;
}
}
推荐阅读
-
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
-
在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ...
[详细]
蜡笔小新 2024-12-27 14:49:56
-
-
在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ...
[详细]
蜡笔小新 2024-12-21 11:21:05
-
HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ...
[详细]
蜡笔小新 2024-12-28 08:22:22
-
本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ...
[详细]
蜡笔小新 2024-12-23 12:43:29
-
本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ...
[详细]
蜡笔小新 2024-12-22 19:07:42
-
2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归的逻辑结构。 ...
[详细]
蜡笔小新 2024-12-20 19:23:54
-
本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ...
[详细]
蜡笔小新 2024-12-19 11:08:57
-
本文探讨了在多种编程语言中实现Hello World输出的方法,从经典的C语言到现代的JavaScript,每种语言都有其独特的表达方式。 ...
[详细]
蜡笔小新 2024-12-18 22:02:27
-
本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ...
[详细]
蜡笔小新 2024-12-17 17:30:12
-
本文介绍了在CentOS 6.4系统中安装MySQL 5.5.37时遇到的启动失败和PID文件问题,并提供了详细的解决方案,包括日志分析、权限检查等步骤。 ...
[详细]
蜡笔小新 2024-12-16 13:56:33
-
本文探讨了如何在TWiki中配置自定义标记,以实现特定字符串(如#12345)自动转换为指向票务系统的超链接。此功能类似于在其他平台上的实现,旨在提高信息检索效率。 ...
[详细]
蜡笔小新 2024-12-16 13:20:46
-