我有一个大约有 1000 台 SuSE 机器的网络,每台机器上有 20-200 个用户。使用的密码哈希算法是默认的,即 blowfish。为了检查用户是否使用字典单词作为密码,我编写了一个使用 crypt 系统调用的小实用程序。blowfish 的 crypt 系统调用运行 10 个周期,并且执行速度非常慢。这使得使用 10 次迭代的 blowfish 作为密码哈希算法不可行。因此,想将所有机器上所有用户的哈希算法更改为 MD5。有人可以建议一种对用户来说工作量最少或根本不需要工作的方法吗?
答案1
您问的其实是这个问题:
至少在将 /etc/shadow 从一个哈希值更改为另一个哈希值方面。最省力的方法是,在设置好 MD5 后,强制每个人都更改密码(不过,我想,使用 SHA 之类的东西也不错)。
关于如何防止用户根据字典单词重新输入密码,请查看运行 cracklib当他们输入密码时,不会追溯。这应该通过 PAM 完成(例如,调用 pam_cracklib.so 来更改密码)这是 cracklib 的 CentOS 软件包信息:
Name : cracklib Arch : i386 Version : 2.8.9 Release : 3.3 Size : 140 k Repo : installed Summary : A password-checking library. URL : http://sourceforge.net/projects/cracklib/ License : Artistic Description: CrackLib tests passwords to determine whether they match certain : security-oriented characteristics, with the purpose of stopping users : from choosing passwords that are easy to guess. CrackLib performs : several tests on passwords: it tries to generate words from a username : and gecos entry and checks those words against the password; it checks : for simplistic patterns in passwords; and it checks for the password : in a dictionary.
SuSE 应该有一个类似的包或库。
答案2
这就是重点。如果您担心有人获取您的密码哈希并破解它们(就像您尝试做的那样),则应使用更强的哈希来使破解变得更加困难。
如果您不担心别人获取您的密码哈希值,那么您就不应该浪费时间对其进行哈希处理,而只需将其以纯文本形式存储即可。
如果你想阻止用户选择不安全的密码,最好使用类似以下方法阻止他们选择不安全的密码密码而不是和饼干赛跑,事后再抓住它们。