vsftpd akzeptiert keine mit MD5 verschlüsselten Passwörter

10

Ich richte einen Server mit vsftpd ein, damit virtuelle Benutzer auf ihren Speicherplatz zugreifen können. Jetzt funktioniert es voll, aber nur mit CRYPT-Passwörtern. So

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

erlaubt mir nicht mich einzuloggen, aber

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

werden.

/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

Ich habe Apache2.4.3 sowohl von der Quelle als auch von PHP installiert.

Dinge, die ich versucht habe:

  • Google viel
  • Setze crypt = 2
  • Frag Freunde
  • benutze SHA (funktioniert auch nicht)
  • Aktualisiere htpasswd und vsftpd

Ich habe jetzt seit einer Woche damit zu kämpfen, ich hoffe ihr könnt mir weiter helfen

Marco
quelle
1
Welches Betriebssystem verwenden Sie? Unter Linux ist der vermeintliche Standard die Krypta, die mit der Verwendung von -d identisch ist.
user9517
Der Vollständigkeit halber -mwerden MD5-basierte Hashes im Apache-Stil ( $apr1$salt$hash)
generiert

Antworten:

13

htpasswdgeneriert MD5-Hashes im Apache-Format, die Sie überprüfen können, indem Sie feststellen, dass sie beginnen. $apr1$PAM unterstützt jedoch nur Formate, die von Ihrer Plattform crypt(3)implementiert werden. Für Glibc wäre das Äquivalent (MD5-basiert) $1$. Sie müssen nur die Passwörter mit einem anderen Tool generieren. Hier ist ein Beispiel:

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

Sie können diesen Hash ftpd.passwdim username:hashFormat in Ihre Datei kopieren , und es sollte funktionieren.

Bonsaiviking
quelle
Vielen Dank, dass Sie mir dabei geholfen haben! Es funktionierte! Kann ich dafür sorgen, dass Pam die MD5-Version von Apache unterstützt?
Marco
Wenn Sie sich den Code pam_pwdfile ansehen, müssen Sie die Unterstützung schreiben und neu kompilieren. Es enthält sogar eine vollständige Implementierung des $1$MD5-Kennwort-Hash bis hin zum MD5- cryptGrundelement , sodass es nicht vollständig bekannt ist.
Bonsaiviking
6

Wenn Sie die Antwort von @ bonsaiviking erweitern, können Sie das openssl md5-Kennwort generieren und es in einer Zeile zur ftpd.passwd-Datei hinzufügen, indem Sie die Batch-Modus -b- und Klartext -p-Optionen von htpasswd wie folgt verwenden:

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

Im obigen Beispiel (Ubuntu) wird auch eine neue ftpd.passwd-Datei erstellt, wenn sie mit -c nicht vorhanden ist

jnolan517
quelle
htpasswd gibt aus: "Warnung: Das Speichern von Passwörtern als einfacher Text funktioniert auf dieser Plattform möglicherweise nicht." Ich denke, das liegt daran, dass es denkt, dass es sich tatsächlich um einen Plan-Text handelt, aber tatsächlich ist es der Hash, der vom openssl generiert wird. Verwenden dieses Ansatzes zum Generieren von Passwörtern, die mit vsftp gearbeitet haben.
Svetoslav Marinov
Richtig, htpasswd kann diese Warnung generieren, wenn Sie den MD5-Hash als Nur-Text-Zeichenfolge übergeben.
jnolan517
Skript gemacht, um dies basierend darauf zu tun - greifen Sie hier gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea
1

Die beiden angezeigten Befehle sind äquivalent, da die -dOption htpasswd anweist , Krypta zu verwenden, was für die meisten Betriebssysteme die Standardeinstellung ist.

Wenn Sie mit md5 gehashte Passwörter möchten, sollten Sie diese verwenden -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.

Dies zeigt, dass das Passwort des Tests mit md5 verschlüsselt wurde.

user9517
quelle
Er muss eine andere Version von htpasswd verwenden, da er mit und ohne unterschiedliche Ergebnisse erzielt -d.
Bonsaiviking
Wie bereits erwähnt, funktioniert dies NICHT mit vsftp - es werden MD5s im Apache-Stil generiert. per oben ^ serverfault.com/a/450220/92023
bshea