vsftpd tidak akan menerima kata sandi yang dienkripsi dengan MD5

10

Saya menyiapkan server dengan vsftpd untuk memungkinkan pengguna virtual mengakses ruang mereka. Sekarang sepenuhnya berfungsi tetapi hanya dengan kata sandi CRYPT. Begitu

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

tidak akan mengizinkan saya masuk, tetapi

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

akan.

/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

Saya menginstal apache2.4.3 dari sumber dan juga PHP.

Hal yang sudah saya coba:

  • Google banyak
  • Set crypt = 2
  • meminta teman-teman
  • gunakan SHA (tidak berfungsi baik)
  • perbarui htpasswd dan vsftpd

Saya telah berjuang dengan ini selama seminggu sekarang, saya harap kalian dapat membantu saya lebih lanjut

Marco
sumber
1
OS apa yang Anda gunakan? Di Linux, default yang seharusnya adalah crypt yang sama dengan menggunakan -d.
user9517
demi kelengkapan, -makan menghasilkan hash ala apache berbasis MD5 ( $apr1$salt$hash)
bonsaiviking

Jawaban:

13

htpasswdmenghasilkan hash MD5 dalam format Apache, yang dapat Anda verifikasi dengan melihatnya $apr1$, tetapi PAM hanya mendukung format yang mengimplementasikan implementasi platform Anda crypt(3). Untuk Glibc, yang setara (berbasis MD5) adalah $1$. Anda hanya perlu membuat kata sandi dengan alat yang berbeda. Ini sebuah contoh:

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

Anda dapat menyalin hash ini ke ftpd.passwdfile Anda dalam username:hashformat, dan itu akan berfungsi.

bonsaiviking
sumber
Terima kasih banyak telah membantu saya dengan ini! Berhasil! dapatkah saya membuat pam mendukung versi md5 apache?
Marco
Melihat kode pam_pwdfile, sepertinya Anda harus menulis dukungan dan mengkompilasi ulang. Bahkan berisi seluruh implementasi $1$hash kata sandi MD5, sampai ke primitif MD5, sehingga tidak sepenuhnya cryptmenyadari.
bonsaiviking
6

Memperluas jawaban @ bonsaiviking, Anda dapat membuat kata sandi openssl md5 dan menambahkannya ke file ftpd.passwd dalam satu baris menggunakan mode batch htpasswd -b, dan plaintext -p opsi sebagai berikut:

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

Contoh di atas (Ubuntu) juga membuat file ftpd.passwd baru jika tidak ada menggunakan -c

jnolan517
sumber
htpasswd menampilkan: "Peringatan: menyimpan kata sandi sebagai teks biasa mungkin tidak berfungsi pada platform ini." Saya kira itu karena ia berpikir bahwa itu memang teks rencana tetapi pada kenyataannya hash yang dihasilkan oleh openssl. Menggunakan pendekatan ini untuk menghasilkan kata sandi yang bekerja dengan vsftp.
Svetoslav Marinov
Benar, htpasswd dapat menghasilkan peringatan itu b / c Anda melewati hash MD5 sebagai string teks biasa.
jnolan517
Membuat skrip untuk melakukan ini berdasarkan ini - ambil di sini gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea
1

Dua perintah yang Anda tampilkan adalah sama karena -dopsi memberitahu htpasswd untuk menggunakan crypt yang merupakan standar untuk sebagian besar sistem operasi.

Jika Anda ingin kata sandi di-hash dengan md5 maka Anda harus menggunakannya -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.

Yang menunjukkan bahwa kata sandi tes telah dienkripsi menggunakan md5.

user9517
sumber
Dia harus menggunakan versi htpasswd yang berbeda, karena dia mendapatkan hasil yang berbeda dengan dan tanpa -d.
bonsaiviking
Seperti disebutkan ini JANGAN bekerja dengan vsftp - itu menghasilkan gaya apache md5's. per di atas ^ serverfault.com/a/450220/92023
bshea