4

我正在尝试使用 Berkeley DB 与一些虚拟用户一起安装 vsftpd。我主要遵循本指南: http: //www.neant.ro/2012/04/secure-ftp-with-vsftpd/。一切正常,但我想让密码在数据库中散列。我正在使用带有 glibc 2.12 的 CentOS 6.3。

从 pam_userdb.so 的联机帮助页中,我假设我可以使用 crypt 提供的功能。如果我们看一下 crypt(3) 手册页,我们可以使用 SHA-256 和 SHA-512。我会使用其中之一。

我的疑问是如何实现它。据我所知,我需要转到我的 pam.d 文件并编辑并添加参数 crypt 但是......我应该给它哪个值?5 用于 SHA-256?6 用于 SHA-512?

auth    sufficient pam_userdb.so db=/path/to/db/virtual-users crypt=?
account sufficient pam_userdb.so db=/path/to/db/virtual-users crypt=?
session sufficient pam_loginuid.so

现在我需要数据库中 SHA-256/SHA-512 的密码。获取哈希的正确方法是什么?我想我必须使用 crypt 功能。但是,我需要使用 Ruby 来获取它,有什么办法吗?

在此先感谢您的帮助,

4

2 回答 2

2

没有办法。您应该说crypt=crypt(其他选项被拒绝)但至少在您获得包含此修复程序mod_userdb的 PAM 版本之前不会接受非 DES 哈希(例如,Ubuntu Saucy 没有)。

一方面,我编译了我自己的 PAM 来进行修复。

于 2013-10-01T20:51:51.737 回答
1

这是固定的。Debian Jessie 的 libpam-modules 版本 1.1.8-3 似乎也已修复。

要插入一行,请使用 db5.3-util 或类似的:

{ echo user; echo hash; } | db5.3_load -T -t hash /tmp/passwd.db

要生成 crypt-valid strong hash

echo pass|mkpasswd -s -m sha-512

这个 pam 模块的“调试”选项和pamtester一样有用(检查 /var/log/auth.log)

于 2016-03-06T03:36:17.103 回答