使用pam_userdb.so在Berkeley DB中为vsftpd加密密码

时间:2013-04-02 14:52:19

标签: authentication ftp pam vsftpd

我正在尝试使用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来获取它,有什么办法吗?

提前感谢您的帮助,

2 个答案:

答案 0 :(得分:2)

没有办法。您应该说crypt=crypt(其他选项被拒绝),但mod_userdb不会接受非DES哈希,至少,直到您获得其中包含this fix的PAM版本( Ubuntu Saucy没有,一个人。)

我,我编写了自己的PAM来修复它。

答案 1 :(得分:1)

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

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

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

生成加密有效的强hash

echo pass|mkpasswd -s -m sha-512

" debug"这个pam模块的选项很有用(检查/var/log/auth.log)pamtester