潜藏密码作为Linux产品的既定事实标准已经有好多年了,md5密码的运用亦是如此。但是,运用传统的潜藏密码要领也有不足之处,甚至md5也不像以前那么安全了。
潜藏密码文件的一个缺点就是,任意一个须要查询个别潜藏密码(如您的密码)的使用程序也可以看到其他人的潜藏密码,这也就意味着任意一个可以读取潜藏文件的恶意工具都能够获得别人的潜藏密码。
除了潜藏,还有一个叫做tcb的可供选择的办法,它由Openwall Project编写,可以从tcb主页上获取。迁移到tcb虽然须要做一些工作,但是相当直接。因为只有Openwall GNU/*/Linux、ALT Linux、和Annvix 直接支持tcb。要为您选择的流通产品获得tcb支持,您必须重新编辑多个程序,打上补丁。
从tcb站点上,您可以下载tcb程序,并将它和有关的pam_tcb和nss_tcb库一起执行 编辑。您还须要打上支持crypt_blowfish的glibc补丁(像SUSE一样的有些产品可能已经可以支持blowfish密码,就不须要再打补丁了)。
也许您还想为shadow-utils组打上补丁;取决于您的产品所采用的shadow-utils的版本,您可以从Openwall CVS为shadow-utils 4.0.4.1或从Annvix SVN储存库为4.0.12获得所需的补丁。像adduser、chage等这样的工具中的Shadow-utils须要被打上补丁,提供tcb支持。在tcb页面上有可以打glibc补丁的最新crypt_blowfish的链接。一旦这些先决条件都满足了,且tcb编译和安装以后,只需基本地将/etc/pam.d/*文件中的所有调用都替换为pam_unix.so和/或pam_pwdb.so就行了。然后就可以像列表A中那样运用 pam_tcb.so了。
列表Aauth
- required
- pam_env.soauthrequiredpam_tcb.soshadowforknullokprefix=$2a$count=8account
- requiredpam_tcb.soshadowforkpassword
- requiredpam_passwdqc.somin=disabled,12,8,6,5max=40passphrase=3match=4similar=denyrandom=42enforce=everyoneretry=3password
- requiredpam_tcb.souse_authtokshadowwrite_to=tcbforknullokprefix=$2a$count=8session
- requiredpam_limits.sosession
- requiredpam_tcb.so
如果您希望继续运用
md5密码,而不是blowfish密码,将prefix=$2a$ count=8一条从密码行移除,同时,您还须要修改/etc/nsswitch.conf,让潜藏行改读:
shadow: tcb nisplus nis
passwd程序须要sgid潜藏,而不是suid根,并且/etc/login.defs中要包括USE_TCB yes。这些完成以后,您就可以执行/sbin/tcb_convert程序,将潜藏文件转换成为适当的单一用户文件了,这些文件将储存在/etc/tcb/中,做完这些之后,移除/etc/shadow和/etc/shadow-文件,然后您的系统就可以运用 tcb了。
获得tcb支持可能须要花点功夫,但遗憾的是更多的产品没有提供支持,它们既没有本地支持也没有通过插件来支持,运用 tcb,连同blowfish密码一起,会为您的Linux产品提供一个安全得多的密码系统.