Mysql

使用 crypt sha512 的 pureftpd 身份驗證

  • March 1, 2016

我已經安裝了 pure-ftpd-mysql,它可以與 md5 密碼散列一起正常工作。這不是很安全,所以我想使用 crypt 和鹽漬 sha512,就像我在 dovecot 中使用的那樣。

如何在純 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")

所以我的問題是我需要在配置文件中放入什麼才能使使用上述方法生成的密碼有效。

我認為更改MYSQLCryptcrypt應該足夠了。但這不起作用。

如果任何其他方法不起作用,手冊將描述如何創建身份驗證模組http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules(但如何啟用它?)

pure-ftpd-mysql 支持 sha512 crypt with salt。

這很簡單:

MYSQLCrypt crypt

並確保您的Password專欄足夠長。對於地穴 $ 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;

引用自:https://serverfault.com/questions/630570