vsftpd non accetterà password crittografate con MD5


10

Sto configurando un server con vsftpd per consentire agli utenti virtuali di accedere al loro spazio. Ora funziona completamente ma solo con le password CRYPT. Così

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

non mi permetterà di accedere, ma

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

Ho installato apache2.4.3 sia dalla fonte che da PHP.

Cose che ho provato:

  • Google molto
  • Imposta cripta = 2
  • chiedi agli amici
  • usa SHA (non funziona neanche)
  • aggiorna htpasswd e vsftpd

Ho avuto problemi con questo per una settimana, spero che voi ragazzi mi potete aiutare ulteriormente


1
Quale sistema operativo stai usando? Su Linux il presunto valore predefinito è crypt, che equivale a usare -d.
utente9517

per completezza, -mgenererà hash stile apache basati su MD5 ( $apr1$salt$hash)
bonsaiviking

Risposte:


13

htpasswdgenera hash MD5 nel formato Apache, che puoi verificare vedendo che iniziano con $apr1$, ma PAM supporta solo formati implementati dalla tua piattaforma crypt(3). Per Glibc, l'equivalente (basato su MD5) sarebbe $1$. Hai solo bisogno di generare le password con uno strumento diverso. Ecco un esempio:

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

Puoi copiare questo hash nel tuo ftpd.passwdfile nel username:hashformato e dovrebbe funzionare.


Grazie mille per avermi aiutato con questo! Ha funzionato! posso fare in modo che pam supporti la versione md5 di apache?
Marco

Guardando il codice pam_pwdfile, sembra che dovresti scrivere il supporto e ricompilare. Contiene anche un'intera implementazione $1$dell'hash della password MD5, fino alla primitiva MD5, quindi non è completamente cryptconsapevole.
bonsaiviking il

6

Espandendo la risposta di @ bonsaiviking è possibile generare la password md5 di openssl e aggiungerla al file ftpd.passwd in una riga usando la modalità batch -b di htpasswd e le opzioni -p in chiaro come segue:

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

L'esempio sopra (Ubuntu) crea anche un nuovo file ftpd.passwd se non esiste usando -c


htpasswd output: "Attenzione: l'archiviazione delle password come testo normale potrebbe non funzionare su questa piattaforma." Immagino che sia perché pensa che sia davvero un piano di testo, ma in realtà è l'hash generato da openssl. L'uso di questo approccio per generare password ha funzionato con vsftp.
Svetoslav Marinov,

Bene, htpasswd può generare quell'avvertimento in b / c passando l'hash MD5 come una stringa di testo semplice.
jnolan517,

Creato script per fare questo in base a questo - prendi qui gist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea

1

I due comandi che mostri sono equivalenti perché l' -dopzione dice a htpasswd di usare crypt che è l'impostazione predefinita per la maggior parte dei sistemi operativi.

Se vuoi le password con hash con md5, allora dovresti usare -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.

Il che mostra che la password del test è stata crittografata usando md5.


Deve utilizzare una versione diversa di htpasswd, poiché ottiene risultati diversi con e senza -d.
bonsaiviking

Come accennato, questo NON funziona con vsftp: genera md5 in stile apache. come sopra ^ serverfault.com/a/450220/92023
bshea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.