関連する質問を見ましたが、どちらも私の問題を解決できませんでした。
私はカールを使ってvsftpdを実行しているEC2サーバーのFTPSサーバーから私のdmzのサーバーにftpを介してファイルを転送しようとしています。
$ curl ftps://ec2-myserver.compute.amazonaws.com --verbose --tlsv1.1
* Rebuilt URL to: ftps://ec2-myserver.us-east-2.compute.amazonaws.com/
* Trying ip_addr...
* TCP_NODELAY set
* Connected to ec2-myserver.us-east-2.compute.amazonaws.com (ip_addr) port ---- (#0)
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.1 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0
Windows サーバーの Filezilla からファイル接続 FTPS を取得できます。
すべてのTLSバージョンで同じエラーが発生します。
vsfpdサーバーでSSL3を有効にしようとしましたが、問題は解決されませんでした。
答え1
chroot設定でvsftpdを実行しましたが、静かに失敗しました。 (/dev/log
chrootからアクセスできないためですか?)
chroot_local_user=YES
local_root=public_html
私はOK LOGIN
それを見ることができますが、vsftpd.log
クライアントのパスワードにユーザー名を送信した後、次のエラーで失敗します。
client% openssl s_client -connect testftps.example.org:21 --tls1_2 --starttls ftp -quiet
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = testftps.example.org
verify return:1
220 Welcome to TEST vsftpd FTPS service.
user ftptest
331 Please specify the password.
pass xxxxxxxx
140419419894912:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:308:
vsftpdを追跡した結果にのみ問題が明らかになりました。
server# strace -tt -ff -s500 -p `pidof vsftpd`
[...]
[pid 27164] 18:31:56.249184 access("/", W_OK) = 0
[pid 27164] 18:31:56.249386 fcntl(0, F_GETFL) = 0x2 (flags O_RDWR)
[pid 27164] 18:31:56.249599 fcntl(0, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid 27164] 18:31:56.249763 write(0, "500 OOPS: ", 10) = 10
[pid 27164] 18:31:56.250118 write(0, "vsftpd: refusing to run with writable root inside chroot()", 58) = 58
[pid 27164] 18:31:56.250436 write(0, "\r\n", 2) = 2
[pid 27164] 18:31:56.250758 exit_group(2) = ?
したがって、修正はありますが、実際の問題を見つけることもchmod 500 ~ftptest/public_html
できます。strace