Зашифрованный пароль в БД Berkeley для vsftpd с использованием pam_userdb.so

Я пытаюсь установить vsftpd с некоторыми виртуальными пользователями, использующими Беркли БД. Я в основном следовал этому руководству: http://www.neant.ro/2012/04/secure-ftp-with-vsftpd/. Все работает нормально, но я хочу, чтобы пароли хешировались внутри базы данных. Я использую CentOS 6.3 с glibc 2.12.

Из man-страницы pam_userdb.so я предполагаю, что могу использовать то, что предоставляет crypt. Если мы взглянем на man-страницу crypt(3), мы можем использовать SHA-256 и SHA-512. Я бы использовал один из них.

Я сомневаюсь, как это реализовать. Из того, что я знаю, мне нужно перейти к моему файлу pam.d, отредактировать и добавить аргумент crypt, но... какое значение мне его дать? 5 для SHA-256? 6 для SHA-512?

auth    sufficient pam_userdb.so db=/path/to/db/virtual-users crypt=?
account sufficient pam_userdb.so db=/path/to/db/virtual-users crypt=?
session sufficient pam_loginuid.so

Теперь мне нужен пароль в SHA-256/SHA-512 внутри базы данных. Какой правильный способ получить хэш? Я полагаю, я должен использовать функцию склепа. Тем не менее, мне нужно получить его с помощью Ruby, есть ли способ?

Заранее спасибо за помощь,

2 ответа

Решение

Выхода нет. Ты должен сказать crypt=crypt (другие варианты отклонены) но mod_userdb по крайней мере, не будет принимать хэши не-DES, пока вы не получите версию PAM, в которой есть это исправление (Ubuntu Saucy, к примеру, нет).

Я, например, собрал свой собственный PAM, чтобы исправить это.

Это исправлено. Версия libpam-модулей Debian Jessie 1.1.8-3 тоже исправлена.

Чтобы вставить строку, используйте db5.3-util или аналогичный:

{ echo user; echo hash; } | db5.3_load -T -t hash /tmp/passwd.db

Чтобы создать сильную крипту hash:

echo pass|mkpasswd -s -m sha-512

Опция "debug" этого модуля pam полезна (проверьте /var/log/auth.log), как и pamtester

Другие вопросы по тегам