Пользовательский алгоритм хеширования паролей с vsftpd

Традиционно, когда клиент входит в систему, он отправляет учетные данные (имя пользователя + пароль) без какой-либо дальнейшей обработки. Затем сервер проверяет, существует ли в его базе данных пользователей запись, которая соответствует предоставленным учетным данным.

Чтобы усложнить восстановление пароля в случае взлома базы данных, пароль сохраняется в хешированной форме. Это означает, что либо клиент, либо сервер хешируют пароль, а затем учетные данные проверяются на соответствие.

Однако, если клиент выполняет хеширование, оно фактически становится бесполезным. Почему ? Потому что хешированный пароль теперь используется в качестве пароля. Можно было украсть базу данных, прочтите хэш и отправьте его вместе с именем пользователя, но при этом получите доступ.

Вот почему хеширование должно выполняться на сервере, чтобы без предварительного знания пароля невозможно было войти в систему.

Однако , Я не могу найти способ добиться этого с помощью модуля PAM, чтобы vsftpd использовал его для входа в систему. Обратите внимание, что я не хочу использовать обычную хеш-функцию, поскольку она не подходит для пароля. Мне нужно использовать KDF, например scrypt или bcrypt.

Нужно ли мне кодировать свой собственный модуль PAM или мне нужно генерировать хэши htpasswd по запросу?

tl; dr Обратите внимание, что я не хочу использовать обычную хеш-функцию, поскольку она не подходит для пароля. Мне нужно использовать KDF, например scrypt или bcrypt.

Должен ли я кодировать свой собственный модуль PAM или генерировать хэши htpasswd по запросу?

tl; dr Обратите внимание, что я не хочу использовать обычную хеш-функцию, поскольку она не подходит для пароля. Мне нужно использовать KDF, например scrypt или bcrypt.

Нужно ли мне кодировать свой собственный модуль PAM или мне нужно генерировать хэши htpasswd по запросу?

tl; dr Как выполнить аутентификацию пользователя с помощью хеша пароля на стороне сервера для vsftpd?

0
задан 5 April 2016 в 23:48
1 ответ

crypt(), используемый PAM, может поддерживать только BCRYPT, а не SCRYPT (или ни один из них). Во всех случаях нужно задавать метод только при кодировании пароля, а не при его проверке.

Так как vsftp использует файл системных паролей, необходимо перенастроить PAM для использования BCRYPT. Это зависит от фактического использования unix/linux. Как только ваш файл паролей будет содержать $2y$ хэши префиксов паролей (вы можете сгенерировать их с помощью недавнего htpasswd -B).

Некоторые Linux поддерживают authconfig --passalgo=blowfish --update, другим нужно найти нужный PAM-конфигурационный файл и добавить blowfish в строку пароля:

password sufficient /lib/security/pam_unix.so nullok use_authok blowfish shadow
0
ответ дан 5 December 2019 в 10:36

Теги

Похожие вопросы