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 เป็นอย่างมาก
  • ตั้ง crypt = 2
  • ถามเพื่อน
  • ใช้ SHA (ใช้งานไม่ได้)
  • อัปเดต htpasswd และ vsftpd

ฉันดิ้นรนกับสิ่งนี้มาเป็นเวลาหนึ่งสัปดาห์แล้วฉันหวังว่าพวกคุณจะช่วยฉันได้มากขึ้น


1
คุณใช้ระบบปฏิบัติการใดอยู่ บน Linux ค่าดีฟอลต์ควรเป็น crypt ซึ่งเหมือนกับการใช้ -d
user9517

เพื่อความสมบูรณ์-mจะสร้างแฮชแบบ apache-MD5 ( $apr1$salt$hash)
bonsaiviking

คำตอบ:


13

htpasswdสร้าง MD5 hash ในรูปแบบ Apache ซึ่งคุณสามารถตรวจสอบได้โดยเห็นว่าเริ่มต้นด้วย$apr1$แต่ PAM รองรับเฉพาะรูปแบบที่การใช้งานแพลตฟอร์มของcrypt(3)คุณ สำหรับ Glibc เทียบเท่า (MD5-based) $1$จะเป็น คุณเพียงแค่ต้องสร้างรหัสผ่านด้วยเครื่องมืออื่น นี่คือตัวอย่าง:

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

คุณสามารถคัดลอกแฮชนี้ไปยังftpd.passwdไฟล์ของคุณในusername:hashรูปแบบและควรใช้งานได้


ขอบคุณมากที่ช่วยฉันด้วยสิ่งนี้! มันได้ผล! ฉันจะทำให้ pam รองรับเวอร์ชัน md5 ของ apache ได้ไหม?
Marco

ดูที่รหัส pam_pwdfile ดูเหมือนว่าคุณจะต้องเขียนการสนับสนุนและคอมไพล์ใหม่ มันยังมีการใช้$1$แฮชรหัสผ่าน MD5 ทั้งหมดไปจนถึง MD5 ดั้งเดิมดังนั้นจึงไม่cryptรู้จักอย่างสมบูรณ์
bonsaiviking

6

การขยายคำตอบของ @ bonsaiviking คุณสามารถสร้างรหัสผ่าน openssl md5 และเพิ่มลงในไฟล์ ftpd.passwd ในหนึ่งบรรทัดโดยใช้โหมดแบตช์ของ htpasswd -b และ plaintext -p ตัวเลือกดังนี้:

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

ตัวอย่างด้านบน (Ubuntu) ยังสร้างไฟล์ ftpd.passwd ใหม่หากไม่มีอยู่ใน -c


htpasswd เอาต์พุต: "คำเตือน: การเก็บรหัสผ่านเป็นข้อความธรรมดาอาจใช้ไม่ได้บนแพลตฟอร์มนี้" ฉันเดาว่าเพราะมันคิดว่ามันเป็นข้อความแผน แต่อันที่จริงแล้วมันเป็นแฮชที่สร้างโดย openssl ใช้วิธีการนี้เพื่อสร้างรหัสผ่านที่ทำงานกับ vsftp
Svetoslav Marinov

ขวา htpasswd อาจสร้างคำเตือนว่า b / c ของคุณผ่านการแฮช MD5 เป็นสตริงข้อความธรรมดา
jnolan517

ทำสคริปต์ให้ทำตามนี้ - คว้าที่นี่gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea

1

คำสั่งสองคำสั่งที่คุณแสดงนั้นเทียบเท่ากันเนื่องจาก-dตัวเลือกนี้บอกให้htpasswdใช้ crypt ซึ่งเป็นค่าเริ่มต้นสำหรับระบบปฏิบัติการส่วนใหญ่

หากคุณต้องการรหัสผ่านที่แฮชด้วย 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เพราะเขาได้รับผลที่แตกต่างกันมีและไม่มี
bonsaiviking

ดังที่กล่าวมานี้ใช้ไม่ได้กับ vsftp - มันสร้างสไตล์ apache md5 ต่อไปนี้ ^ serverfault.com/a/450220/92023
bshea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.