
現在、Ubuntu 16.04 サーバーに VSFTPD をセットアップしようとしており、FTPS を使用したいと考えています (理想的には SFTP を使用したいのですが、残念ながらレガシー システムに制約されています)
デフォルトの設定と TLS なしでセットアップすることができ、FileZilla 経由で問題なく接続できます。ただし、過去 2 日間、TLS を有効にしようとしましたが、SE やその他の場所でいくら質問しても良い結果は得られませんでした。
vsftpd.conf ファイル内の証明書の詳細は次のとおりです。
rsa_cert_file=/path/to/fullchain.pem
rsa_private_key_file=/path/to/privkey.pem
allow_anon_ssl=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
しかし、FileZilla コンソールに次のように表示され、接続できなくなりました。
Status: Verifying certificate...
Status: TLS connection established.
Status: Server does not support non-ASCII characters.
Status: Logged in
Status: Retrieving directory listing...
Status: Server sent passive reply with unroutable address. Using server address instead.
Command: LIST
Error: Connection timed out after 20 seconds of inactivity
Error: Failed to retrieve directory listing
VSFTPD を設定するのは今回が初めてなので、オンラインのチュートリアルをいくつか参照しました。チュートリアルでは UFW も取り上げられており、図のようにポートを開きました。
また、vsftpd.confファイルに次の行を追加してみました。
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_addressオプションについて言及している他の投稿を見ました
そこで、サーバーの外部 IP を使用してこれを構成に追加してみました。これは Google Compute Engine でホストされており、チュートリアルで指定されたのと同じポートなどを許可するように Compute のファイアウォール ルールも更新したことに注意してください。ただし、これも機能しません。
これはポート/ファイアウォールまたはその他の TLS オプションに関係しているとしか思えませんが、まったくわかりません。Google Cloud ネットワーク ファイアウォールと ufw を使用していることは役に立たないようです (ufw を無効にしても効果はありません)
私の ufw ルールは次のようになります。
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
990/tcp ALLOW Anywhere
40000:50000/tcp ALLOW Anywhere
さらに詳しく知りたい人のために、私が参考にしたチュートリアルはここにあります:FTP アクセスの設定
vsftpd.log には問題を示すログはないようですが、FileZilla で詳細ログをオンにすると次のようになります。
データ接続元 IP を制御接続元 IP 192.168.1.100 にバインドします
これはローカル IP のように見えるので、問題である可能性があります。ただし、vsftpd.conf ファイルに次の内容も含まれているため、これを修正する方法がわかりません。
pasv_address=(外部 Google コンピューティング IP)
私の Google Cloud ファイアウォール ルールは次のとおりです。
IP ranges: 0.0.0.0/0
tcp:20-21
Allow
1000
default
pass-ports
sftp
IP ranges: 0.0.0.0/0
tcp:40000-50000
(これらは最終的には IP 的にロックダウンされますが、すべてテストしても動作しません)
また、vsftpd.conf ファイルでは、次のポートを使用するポートとして追加したと思います。
port_enable=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
アップデート
lftpと以下の引数を使用して、ボックス自体からこれに接続できるようになりました。
ftp:ssl-force を true に設定する
証明書はドメインにマップされているため、IP ではなくドメイン名で接続します。IP では機能しません。
その後、コマンドラインから新しいディレクトリなどを作成できます。しかし、実行しようとするとls
、エラーが発生し、そこで停止します。また、FileZillaなどの外部FTPクライアント経由でもエラーが発生します。これは、コマンドls at 0 [Making data connection...]
でタイムアウトします。LIST
Command: LIST
Error: The data connection could not be established: ETIMEDOUT - Connection attempt timed out
Response: 425 Failed to establish connection.
Error: Failed to retrieve directory listing
Error: GnuTLS error -15: An unexpected TLS packet was received.
Status: Disconnected from server: ECONNABORTED - Connection aborted
関連があると思われる唯一の他の情報は、ドメインが NGINX によってノード アプリにポート転送されることです。ただし、これはポート 80 と 443 に対してのみ実行されるはずなので、ポート 21 には影響しないはずです。
誰か何かアイデアはありますか?