vsftpd не прийме паролі, зашифровані з MD5


10

Я налаштовую сервер з vsftpd, щоб дозволити віртуальним користувачам отримати доступ до свого простору. Тепер він повністю працює, але тільки з паролями CRYPT. Тому

sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin

не дозволить мені увійти, але

sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd phpmyadmin

буде.

/etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/vhosts/$USER.universe.local
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

/etc/pam.d/vsftpd

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd crypt=2
account required pam_permit.so crypt=2

Я встановив apache2.4.3 з джерела, а також PHP.

Те, що я спробував:

  • Google багато
  • Встановити крипту = 2
  • попросіть друзів
  • використовувати SHA (не працює)
  • оновити htpasswd та vsftpd

Я боровся з цим вже тиждень, сподіваюся, що хлопці можуть допомогти мені далі


1
Яку ОС ви використовуєте? В Linux передбачуваний замовчуванням є крипта, яка така сама, як і використання -d.
користувач9517

заради повноти -mстворить хеші на основі апаше-стилю на основі MD5 ( $apr1$salt$hash)
bonsaiviking

Відповіді:


13

htpasswdгенерує хеші MD5 у форматі Apache, що ви можете перевірити, побачивши, що вони починаються $apr1$, але PAM підтримує лише формати, реалізовані на вашій платформі crypt(3). Для Glibc еквівалент (на основі MD5) був би $1$. Вам просто потрібно генерувати паролі за допомогою іншого інструменту. Ось приклад:

sh$ openssl passwd -1
Password: 
Verifying - Password: 
$1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/

Ви можете скопіювати цей хеш у свій ftpd.passwdфайл у username:hashформаті, і він повинен працювати.


Дуже дякую, що допомогли мені у цьому! Це спрацювало! чи можу я зробити підтримку пам’яті пам’яті апачі md5?
Марко

Дивлячись на код pam_pwdfile, схоже, вам потрібно буде написати підтримку і перекомпілювати. Він навіть містить цілу реалізацію $1$хеша для паролів MD5, аж до примітиву MD5, тому він не є повністю cryptобізнаним.
бонсайвінг

6

Розширюючи відповідь на @ bonsaiviking, ви можете створити пароль openssl md5 та додати його до файлу ftpd.passwd в одному рядку, використовуючи пакетний режим htpasswd -b та невиразний -p, як описано нижче:

htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)

Наведений вище приклад (Ubuntu) також створює новий ftpd.passwd файл, якщо він не існує за допомогою -c


Виходи htpasswd: "Попередження: зберігання паролів як звичайного тексту може просто не працювати на цій платформі." Я думаю, це тому, що він думає, що це дійсно план тексту, але насправді це хеш, що генерується openssl. Використовуючи цей підхід для генерації паролів, що працюють з vsftp.
Светослав Маринов

Правильно, htpasswd може генерувати це попередження b / c, передаючи хеш MD5 як звичайний текстовий рядок.
jnolan517

Створений сценарій, щоб зробити це на основі цього - схопіть тут gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea

1

Дві команди, які ви показуєте, еквівалентні, оскільки -dпараметр вказує htpasswd використовувати крипту, яка є типовою для більшості операційних систем.

Якщо ви хочете, щоб хешировані паролі з md5, вам слід скористатися -m

sudo htpasswd -m /etc/vsftpd/vsftpd.passwd test
New password:
Re-type new password:
Adding password for user test
grep test /etc/vsftpd/vsftpd.passwd
test:$apr1$GTYtpKS1$Jyfgu42kDspxdJTPPzSOY.

З чого видно, що пароль тесту був зашифрований за допомогою md5.


Він повинен використовувати іншу версію htpasswd, оскільки він отримує різні результати з і без -d.
бонсайвінг

Як згадувалося, це НЕ працює з vsftp - він генерує апаш-стиль md5. per above ^ serverfault.com/a/450220/92023
bshea
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.