#author("2020-10-19T12:04:41+09:00","","")
*** オレオレ証明書の作成 [#k9c0f40b]
- /etc/ssl/unofficial_for_ftp/vsftpd.pem にファイルを作成
- &ref();
*** vfsptd の SSL 接続有効化 [#wec5cebc]
- &ref(vsftpd.conf);
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
#ssl_enable=NO
rsa_cert_file=/etc/ssl/unofficial_for_ftp/vsftpd.pem
rsa_private_key_file=/etc/ssl/unofficial_for_ftp/vsftpd.pem
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
#ssl_ciphers=HIGH
force_local_data_ssl=NO
force_local_logins_ssl=NO
#allow_anon_ssl=NO
#require_ssl_reuse=NO
ssl_ciphers=kEECDH+AESGCM+AES128:kEECDH+AESGCM:kEECDH+AES128:kEECDH+AES:!aNULL:!eNULL:!LOW:!EXP
*** ftp Active mode connection [#rf6c0927]
- &ref(ftp_protocol.jpg);
*** Passive モードの有効化 [#e899f074]
- Passive モードの必要性 = クライアント側の FW を通過させるため
-- パッシブ ftp は、クライアント側ファイアウォールで発生した問題を緩和するためにクライアントが要求できる FTP モード
--- アクティブ ftp は「FTPサーバがFTPソフトに対して接続要求をする」
--- ファイアーウォールは内から外への接続はかなり緩やかに許可するが、外から内への接続は非常に厳しく制限
--- パッシブ ftp はサーバーが利用するポートをクライアントに通知し、改めてクライアントからそのポートにアクセスさせる
-- このプロセスが機能するためには、クライアントとサーバの両方でパッシブ FTP がサポートされている必要があります。
-- パッシブ FTP を使用する場合、クライアントがサーバへの接続を開始します。ほとんどのファイアウォールでは、クライアントが開始したセッションからの着信トラフィックが許可されるためこのプロセスが有効
-- パッシブ FTP 接続プロセスは次のとおり
--- クライアントがポート 21 で FTP サーバに PASV コマンドを送信
--- 送信元ポートは、ランダムな大きな番号のポートです。宛先ポートは 21
--- サーバが PORT コマンドで応答
--- &color(red){PORT コマンドは、クライアントが接続できるランダムな大きな番号の(エフェメラル)ポートを指定};
--- 通常は IANA 登録ポートの範囲外の 1024-65535 を全て開放するようにサーバーを設定するが広すぎる
--- &color(red){今回は 60000-60030 に限定}; する → このポートへのアクセスを許可する
--- クライアントはこのエフェメラル ポートでサーバへの接続を開始します。
--- サーバが ACK で応答します。FTP セッションが確立されます。
- vsftp.conf で passive mode を明示的に有効にする(デフォルトでは設定項目がなかった)
#----------------------------------------------------------------------
# passive mode setting (added Muna) to support SSL connection
#----------------------------------------------------------------------
pasv_enable=YES
pasv_promiscuous=YES
pasv_address=119.245.194.30
pasv_min_port=60000
pasv_max_port=60030
*** ftp Passive mode connection [#e59608dc]
- &ref(ftp_protocol2.jpg);
*** SSL でのセッション確立が成功したが LIST コマンド(=ディレクトリ取得)でエラー [#rf33a831]
状態: kgb.hmuna.com のアドレスを解決中
状態: 119.245.194.30:21 に接続中...
状態: 接続を確立しました, ウェルカム メッセージを待っています...
状態: TLS を初期化しています...
状態: 証明書を検証中...
状態: TLS 接続が確立されました.
状態: ログインしました。
状態: ディレクトリ一覧を取得中...
コマンド: PWD
レスポンス: 257 "/" is the current directory
コマンド: TYPE I
レスポンス: 200 Switching to Binary mode.
コマンド: PASV
レスポンス: 227 Entering Passive Mode (119,245,194,30,234,126).
コマンド: LIST
エラー: Connection timed out after 20 seconds of inactivity
エラー: ディレクトリ一覧表示の取り出しに失敗しました
-- Entering Passive Mode (119,245,194,30,234,126) の意味は
--- FTPサーバ 119.245.194.30 の &color(red){ポート番号 234x256+126(=60,030番)」に対してデータ転送用の接続を行ってください};
--- サーバーは &color(red){接続毎に設定範囲の中でどのポートを利用するかをクライアントに指定する}; ので常に上記と同じとはならない
--- レスポンス: 227 Entering Passive Mode (119,245,194,30,234,120) → この例では 60,024 番ポートが指定された
*** 自宅のルーターでポートマッピングの設定 (= Gateway の設定)を行う必要がある [#z5cf21b4]
*** 参考 URL [#y9bb5124]
- [[FTP サーバー : Vsftpd over SSL/TLS:https://www.server-world.info/query?os=CentOS_8&p=ftp&f=5]]
- [[vsftpd + pasv + SSL(FTPS)でファイル一覧が取得でき無いときに確認すること:https://se.ykysd.com/2017/05/19/vsftpd_pasv_ssl_ftps/]]