在我们的组织中,我们正在为许多本地帐户分发预先哈希的密码值。目前,这些帐户的密码使用 Blowfish ( $2a$[...]
) 或 Blowfish-8-bit ( $2y$[...]
) 进行哈希处理。我们使用的其他发行版能够处理这个问题,但 RedHat / CentOS 似乎不能故意在 glibc 中缺乏对 Blowfish 的支持就这样。
有没有什么方法可以让 CentOS/RedHat 系统处理 Blowfish 哈希值,而不会通过标准更新渠道严重破坏其可服务性?
我正在使用简单的启动配置和最少的软件包选择来部署 CentOS 7.2:
%packages --nobase --ignoremissing
@core
kexec-tools
%end
答案1
在 Ulrich Schwarz 在问题的评论中提到自定义 PAM 模块之后,我想我可以去看看 SLES(使 Blowfish 成为默认值)正在使用什么。
结果发现它是一个独立的模块,pam_unix2.so
与 CentOS 系统上的任何内容都不冲突。作为概念验证,我已将/lib64/security/pam_unix2.so
SLES 11 SP4 系统复制到/usr/lib64/security/pam_unix2.so
CentOS 主机上,并下载并安装其依赖项libxcrypt它也是一个 SuSE 软件包,但可以在 CentOS 7 上用于这个狭隘的目的。
添加
auth sufficient pam_unix2.so
允许/etc/pam.d/system-auth
我在控制台上根据 Blowfish 加密的密码进行身份验证。
为了确保authconfig
下次调用时不会破坏配置,/etc/pam.d/system-auth
指向的符号链接/etc/pam.d/system-auth-ac
应替换为/etc/pam.d/system-auth-ac
.
底线:SuSE的pam_unix2模块似乎是让 Blowfish 哈希值被接受的侵入性最小的方法,尽管这也意味着我需要监视安全公告pam_unix2和libxcrypt分别地。