隐藏密码作为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了。
列表A
|
如果您希望继续使用md5密码,而不是blowfish密码,将prefix=$2a$ count=8一条从密码行移除,同时,您还需要修改/etc/nsswitch.conf,让隐藏行改读:
shadow: tcb nisplus nispasswd程序需要sgid隐藏,而不是suid根,并且/etc/login.defs中要包括USE_TCB yes。这些完成以后,您就可以执行/sbin/tcb_convert程序,将隐藏文件转换成为适当的单一用户文件了,这些文件将储存在/etc/tcb/中。做完这些之后,移除/etc/shadow和/etc/shadow-文件,然后您的系统就可以使用tcb了。
获得tcb支持可能需要花点功夫,但遗憾的是更多的产品没有提供支持,它们既没有本地支持也没有通过插件来支持。使用tcb,连同blowfish密码一起,会为您的Linux产品提供一个安全得多的密码系统。