В настоящее время я разрабатываю приложение для виртуального хостинга с использованием полной серверной части 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 решения:
SHA512_CTX
структуру и получите свой первый дайджест. Выполните итерации 500 раз с правильными параметрами и выполните кодирование по основанию 64. Вы также можете использовать шестнадцатеричный результат в соответствии с вашими настройками Symfony.crypt(3)
работать с солеными хэшами SHA512 под PureFTPd. Сложная штука, когда начинаешь говорить о 500 итерациях./usr/bin/pureftpd-auth
который просто вызывает /path/to/php /path/to/app/console your:ftp:auth:command
. chmod
это, дайте ему правильный интерпретатор (#!/bin/bash
, ...) и запускаем pure_authd
и pureftpd
на общем сокете, чтобы они могли общаться. Видеть http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules Чтобы получить больше информации.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 для получения дополнительной информации об этом.