vsftpd n'acceptera pas les mots de passe cryptés avec MD5

10

J'installe un serveur avec vsftpd pour permettre aux utilisateurs virtuels d'accéder à leur espace. Maintenant, il fonctionne pleinement mais uniquement avec les mots de passe CRYPT. Donc

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

ne me permettra pas de me connecter, mais

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

volonté.

/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

J'ai installé apache2.4.3 à partir des sources ainsi que de PHP.

Ce que j'ai essayé:

  • Google beaucoup
  • Définir crypt = 2
  • demander à des amis
  • utiliser SHA (ne fonctionne pas non plus)
  • mettre à jour htpasswd et vsftpd

Je me bats avec ça depuis une semaine maintenant, j'espère que vous pouvez m'aider

Marco
la source
1
Quel système d'exploitation utilisez-vous? Sous Linux, la valeur par défaut supposée est crypt, ce qui revient à utiliser -d.
user9517
dans un souci d'exhaustivité, -mgénérera des hachages de type apache basés sur MD5 ( $apr1$salt$hash)
bonsaiviking

Réponses:

13

htpasswdgénère des hachages MD5 au format Apache, que vous pouvez vérifier en voyant qu'ils commencent par $apr1$, mais PAM ne prend en charge que les formats que l'implémentation de votre plate-forme crypt(3)implémente. Pour Glibc, l'équivalent (basé sur MD5) serait $1$. Il vous suffit de générer les mots de passe avec un outil différent. Voici un exemple:

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

Vous pouvez copier ce hachage dans votre ftpd.passwdfichier au username:hashformat, et cela devrait fonctionner.

bonsaiviking
la source
Merci beaucoup de m'avoir aidé avec ça! Ça a marché! puis-je faire en sorte que pam supporte la version md5 d'Apache?
Marco
En regardant le code pam_pwdfile, il semble que vous auriez à écrire le support et à recompiler. Il contient même une implémentation complète du $1$hachage de mot de passe MD5, jusqu'à la primitive MD5, il n'est donc pas pleinement cryptconscient.
bonsaiviking
6

En développant la réponse de @ bonsaiviking, vous pouvez générer le mot de passe openssl md5 et l'ajouter au fichier ftpd.passwd sur une seule ligne en utilisant les options mode batch -b et texte clair -p de htpasswd comme suit:

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

L'exemple ci-dessus (Ubuntu) crée également un nouveau fichier ftpd.passwd s'il n'existe pas en utilisant -c

jnolan517
la source
sorties htpasswd: "Avertissement: le stockage de mots de passe en texte brut peut ne pas fonctionner sur cette plate-forme." Je suppose que c'est parce qu'il pense qu'il s'agit bien d'un texte de plan, mais en fait, c'est le hachage généré par l'openssl. L'utilisation de cette approche pour générer des mots de passe a fonctionné avec vsftp.
Svetoslav Marinov
À droite, htpasswd peut générer cet avertissement b / c lorsque vous passez le hachage MD5 en tant que chaîne de texte brut.
jnolan517
Script créé
bshea
1

Les deux commandes que vous montrez sont équivalentes car l' -doption indique à htpasswd d'utiliser crypt qui est la valeur par défaut pour la plupart des systèmes d'exploitation.

Si vous voulez des mots de passe hachés avec md5, vous devez utiliser -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.

Ce qui montre que le mot de passe du test a été crypté à l'aide de md5.

user9517
la source
Il doit utiliser une version différente de htpasswd, car il obtient des résultats différents avec et sans -d.
bonsaiviking
Comme mentionné, cela ne fonctionne pas avec vsftp - il génère des md5 de style apache. par ci-dessus ^ serverfault.com/a/450220/92023
bshea