Назад | Перейти на главную страницу

pureftpd auth с использованием крипты sha512

Я установил pure-ftpd-mysql, и он отлично работает с хешированием паролей md5. Это не очень безопасно, поэтому я хотел бы использовать crypt с солёным 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 (но как мне его включить?)

pure-ftpd-mysql поддерживает крипту sha512 с солью.

Это так просто, как:

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;