pureftpd 使用 crypt sha512 进行身份验证

pureftpd 使用 crypt sha512 进行身份验证

我已经安装了 pure-ftpd-mysql,它与 md5 密码哈希算法配合得很好。这不是很安全,所以我想使用 crypt 和 salted sha512,就像我在 dovecot 中使用的一样。

如何在 pure-ftpd 中设置它?

使用 sha512 密码创建新用户:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, 
  `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)
   VALUES ('MyUserName',
    '1',
    ENCRYPT('_mypassword_', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))),
    '2001',
    '2001',
    '/var/www/test',
    '100',
    '100',
    '',
    '*',
    '50',
    '0');

配置文件中的值:

MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*"  OR ipaccess LIKE "\R")

所以我的问题是,我需要在配置文件中输入什么才能使使用上述方法生成的密码正常工作。

我以为改成MYSQLCrypt就够crypt了。但是这不管用。

如果其他方法不起作用,手册将介绍如何创建身份验证模块http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules(但我该如何启用它?)

答案1

pure-ftpd-mysql 支持带盐的 sha512 加密。

它非常简单:

MYSQLCrypt crypt

一定要确保你的Password列足够长。对于 crypt $6$ 来说,它是 106 个字符。

因此,与您的查询一起工作的表结构可能是这样的:

CREATE TABLE ftpd (
 User varchar(16) NOT NULL default '',
 status enum('0','1') NOT NULL default '0',
 Password varchar(106) NOT NULL default '',
 Uid varchar(11) NOT NULL default '-1',
 Gid varchar(11) NOT NULL default '-1',
 Dir varchar(128) NOT NULL default '',
 ULBandwidth smallint(5) NOT NULL default '0',
 DLBandwidth smallint(5) NOT NULL default '0',
 comment tinytext NOT NULL,
 ipaccess varchar(15) NOT NULL default '*',
 QuotaSize smallint(5) NOT NULL default '0',
 QuotaFiles int(11) NOT NULL default 0,
 PRIMARY KEY (User),
 UNIQUE KEY User (User)
 ) ENGINE=MyISAM;

相关内容