vsftpd não aceita senhas criptografadas com MD5

10

Estou configurando um servidor com o vsftpd para permitir que usuários virtuais acessem seu espaço. Agora está funcionando totalmente, mas apenas com senhas CRYPT. Então

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

não permitirá que eu faça login, mas

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

vai.

/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

Eu instalei o apache2.4.3 a partir do código-fonte e também do PHP.

Coisas que eu tentei:

  • Google muito
  • Definir criptografia = 2
  • pergunte aos amigos
  • use SHA (também não funciona)
  • atualize o htpasswd e o vsftpd

Eu tenho lutado com isso por uma semana agora, espero que vocês possam me ajudar ainda mais

    
por Marco 19.11.2012 / 19:26

3 respostas

12

htpasswd gera hashes MD5 no formato Apache, que podem ser verificados quando começam com $apr1$ , mas o PAM oferece suporte apenas a formatos implementados pela plataforma crypt(3) . Para Glibc, o equivalente (baseado em MD5) seria $1$ . Você só precisa gerar as senhas com uma ferramenta diferente. Aqui está um exemplo:

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

Você pode copiar esse hash no seu arquivo ftpd.passwd no formato username:hash e ele deve funcionar.

    
por 19.11.2012 / 19:40
6

Expandindo a resposta do @ bonsaiviking, você pode gerar a senha do openssl md5 e adicioná-la ao arquivo ftpd.passwd em uma linha usando as opções -b do lote em htpasswd e -p de texto sem formatação da seguinte forma:

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

O exemplo acima (Ubuntu) também cria um novo arquivo ftpd.passwd se ele não existir usando -c

    
por 18.10.2014 / 05:51
1

Os dois comandos que você mostra são equivalentes porque a opção -d diz para htpasswd usar a cripta que é o padrão para a maioria dos sistemas operacionais.

Se você quiser senhas com hash md5, então você deve usar -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.

O que mostra que a senha do teste foi criptografada usando o md5.

    
por 19.11.2012 / 19:45

Tags