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

ソースとPHPからapache2.4.3をインストールしました。

私が試したこと:

  • グーグルたくさん
  • crypt = 2を設定
  • 友人に尋ねる
  • SHAを使用(どちらも機能しない)
  • htpasswdとvsftpdを更新

私はこれに1週間も苦労してきました。


1
どのOSを使用していますか?Linuxでは、想定されるデフォルトはcryptで、これは-dを使用する場合と同じです。
user9517 '19

完全を期すために、-mMD5ベースのApacheスタイルのハッシュ($apr1$salt$hash)を生成します
bonsaiviking

回答:


13

htpasswdは、Apache形式でMD5ハッシュを生成します。これは、で始まることで確認できますが$apr1$、PAMは、プラットフォームの実装の実装がサポートする形式のみをサポートしますcrypt(3)。Glibcの場合、同等の(MD5ベース)はになります$1$。別のツールでパスワードを生成する必要があるだけです。次に例を示します。

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

このハッシュを次ftpd.passwdusername:hash形式でファイルにコピーすると、動作するはずです。


これを手伝ってくれてありがとう!出来た!PAMサポートApacheのmd5バージョンを作成できますか?
Marco

pam_pwdfileコードを見ると、サポートを記述して再コンパイルする必要があるようです。さらに、$1$MD5パスワードハッシュの実装全体がMD5プリミティブまで含まれているため、完全にはcrypt認識されていません。
盆栽バイキング、

6

@bonsaivikingの回答を展開すると、openssl md5パスワードを生成し、htpasswdのバッチモード-bおよびプレーンテキスト-pオプションを次のように使用して、ftpd.passwdファイルに1行で追加できます。

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

上記の例(Ubuntu)では、-cを使用して存在しない場合、新しいftpd.passwdファイルも作成されます。


htpasswdの出力:「警告:パスワードをプレーンテキストとして保存すると、このプラットフォームでは機能しない場合があります。」それ確かにそれが計画テキストのものだと思っているからだと思いますが、実際にはそれはopensslによって生成されたハッシュです。このアプローチを使用してパスワードを生成することは、vsftpで機能しました。
Svetoslav Marinov 2015

htpasswdは、MD5ハッシュをプレーンテキスト文字列として渡すことで、警告b / cを生成する場合があります。
jnolan517 2015

これに基づいてこれを行うためのスクリプトを作成しました-ここをつかみますgist.github.com/bmatthewshea/53ed5148f09dfed50cebd10650ca551b
bshea

1

ほとんどのオペレーティングシステムのデフォルトであるcryptを使用する-dようにhtpasswdに指示するため、表示する2つのコマンドは同等です。

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.