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

Чистый FTPd и MySQL, работающий с sha512

В настоящее время я разрабатываю приложение для виртуального хостинга с использованием полной серверной части MySQL для машины. Я настроил все свои службы, и они вполне работоспособны, однако у меня небольшая проблема с pure-ftpd.

Как вы знаете, Pure-FTPd может работать с MySQL благодаря pure-ftpd-mysql. Вот как выглядит базовая конфигурация:

MYSQLServer             127.0.0.1
MYSQLPort               3306
MYSQLSocket             /var/run/mysqld/mysqld.sock
MYSQLUser               myftpdbuser
MYSQLPassword           myftpdbpassword
MYSQLDatabase           myftpdb
MYSQLCrypt              md5
# Here come the selection queries...

Как видите, в качестве алгоритма шифрования я выбрал md5, но это проблема. Я использую Symfony2, и я установил кодировщик на sha512 для своих пользователей, и когда я хочу создать учетную запись FTP с тем же паролем, что и один из моих пользователей, мне нужно скопировать хеш sha512 в учетную запись FTP.

Однако это вполне удовлетворительно, Pure-FTPd настроен для md5, поэтому он не сможет проверить этот пароль. Я хотел бы сохранить sha512 как можно больше, учитывая, что использование md5 потребует некоторых изменений моего кода для повторного шифрования.

Вот что говорит пример конфигурации Pure-FTPd:

# Mandatory : how passwords are stored
# Valid values are : "cleartext", "crypt", "sha1", "md5" and "password"
# ("password" = MySQL password() function)
# You can also use "any" to try "crypt", "sha1", "md5" *and* "password"

Итак, вот мой вопрос: есть ли шанс, что я могу настроить Pure-FTPd для работы с sha512, используя, например, "crypt"? Возможно, я мог бы использовать crypt и настроить его для использования sha512 где-нибудь еще, я не знаю ...

РЕДАКТИРОВАТЬ

Я пробовал работать с запросами, но уловок не нашел. Вот запрос пароля:

MYSQLGetPW              SELECT password FROM ftp_accounts WHERE username='\L'

Решения

После нескольких поисков и полученного ответа я нашел 3 решения:

glibc 2.7 и выше поддерживает sha512, но только в некоторой степени. Если у вас есть соленые SHA512-хэши, использование «crypt» должно немедленно сработать.

Если у вас есть несоленые хэши sha512: пожалуйста, избегайте их - серьезно. Доступны предварительно рассчитанные базы данных, поэтому поиск хеша в этих базах мгновенно даст вам либо открытый текст-пароль, либо, по крайней мере, что-то, что будет работать для успешного входа в систему. Вычисление хэшей с использованием современных графических процессоров также происходит очень быстро, поэтому следует избегать любых несоленых способов.

Например, https://www.crackstation.net/ дает вам удобный веб-интерфейс для поиска миллионов несоленых паролей из их хэшей и некоторое обучение относительно «соленых и несоленых хешей», выбора правильных (случайных) солей и «хороших» хеш-алгоритмов.

В качестве реального примера: миллионы нехешированных хэшей паролей из linkedin и lastfm действительно просочились в Интернет, и потребовалось всего несколько дней, чтобы найти соответствующие пароли в открытом виде для большинства из них с использованием предварительно рассчитанных хеш-баз данных или радужных таблиц. . Используя соленые хэши, более вероятно, что потребуются месяцы или годы, чтобы найти некоторые данные в открытом виде, соответствующие вашим хешам.

Если вы понимаете риски несоленых хэшей и все же абсолютно нуждаетесь в реализации несоленого sha512 через MySQL, вы можете сделать это, предоставив собственный скрипт для pure-authd (это довольно тривиально). Видеть http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules для получения дополнительной информации об этом.