2013-04-02 32 views
4

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

从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

有没有办法。你应该说crypt=crypt(其他选项被拒绝),但是mod_userdb不会接受非DES散列,至少,直到你得到一个其中包含this fix的PAM版本(Ubuntu Saucy不适用于其中一个)。作为一个,我编译了自己的PAM来解决这个问题。

+0

谢谢你的回答,你能请与我分享您的编译版本或告诉我如何自己做?再次感谢! – hveiga

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

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