web-dev-qa-db-ja.com

アクティブFTPとパッシブFTPの違いは何ですか?

アクティブFTPとパッシブFTPの違いを教えてください。どちらが望ましいですか?

293
karthik

FTPが実行できる2つのモードはアクティブとパッシブです。

背景として、FTPは実際にはクライアントとサーバーの間にtwoチャネル、コマンドとデータチャネルを使用します。これらは実際にはseparateです。/TCP接続.

コマンドチャネルはコマンドと応答用で、データチャネルは実際にファイルを転送するためのものです。

このようにコマンド情報とデータを別々のチャネルに分離することで、現在のデータ転送が完了するのを待たずにサーバにコマンドを送信できるようになります。 RFCによると、これは終了、現在の転送の中止、ステータスの取得などのコマンドのサブセットに対してのみ義務付けられています。


activeモードでは、クライアントはコマンドチャネルを確立しますが、serverはデータチャネルの確立を担当します。たとえば、クライアントマシンがファイアウォールで保護されており、外部からの不正なセッション要求を許可しない場合、これは実際には問題になる可能性があります。

passiveモードでは、クライアントはbothチャンネルを確立します。私たちはすでにそれがアクティブモードでコマンドチャンネルを確立することを知っています、そしてそれはここでも同じことをします。

ただし、クライアントへの接続確立を試みるのではなく、(コマンドチャネルで)ポートにlisteningを(サーバーの判断で)開始するようにサーバーに要求します。 。

この一部として、サーバーは、listenするために選択したポート番号もクライアントに返すので、クライアントは接続方法を認識します。

クライアントがそれを知ったら、それはそれからデータチャンネルを首尾よく作成し続けることができます。

詳細については、RFCで入手可能です。 https://www.ietf.org/rfc/rfc959.txt

456
paxdiablo

私は最近私の職場でこの質問に出くわしたので、もっとここで何かを言うべきだと思います。前回の回答の追加情報として、FTPがどのように機能するのかを説明するために、imageを使用します。

アクティブモード:

active mode


パッシブモード:

enter image description here


アクティブモード設定では、サーバーはランダムなクライアント側ポートへの接続を試みます。そのため、そのポートがそれらの事前定義済みポートの1つにならない可能性があります。その結果、それへの接続の試みはファイアウォールによってブロックされ、接続は確立されません。

enter image description here


クライアントが接続を開始するものになるため、パッシブ構成ではこの問題は発生しません。もちろん、サーバー側にもファイアウォールがある可能性があります。ただし、サーバーはクライアントに比べて多数の接続要求を受信することが予想されるため、パッシブモード構成を満たすためにサーバー管理者が状況に適応し、選択したポートを開くことは論理的です。

したがって、パッシブモードのFTPをサポートするようにサーバーを構成するのが最善です。ただし、クライアントはランダムなサーバーポートに接続することになっているため、パッシブモードではシステムが攻撃に対して脆弱になります。したがって、このモードをサポートするためには、サーバが利用可能な複数のポートを持つ必要があるだけでなく、ファイアウォールはそれらすべてのポートへの接続を通過させることを許可する必要があります。

リスクを軽減するには、サーバー上のポートの範囲を指定してから、ファイアウォール上のその範囲のポートのみを許可することをお勧めします。

詳しくは、 公式文書 をご覧ください。

157
Yuantao

私の記事の編集バージョン FTP接続モード(アクティブとパッシブ)

FTP接続モード(アクティブまたはパッシブ)、データ接続の確立方法を決定します。どちらの場合でも、クライアントはFTPサーバーコマンドポート21へのTCP制御接続を作成します。これは、他のファイル転送プロトコル(SFTP、SCP、WebDAV)または他のTCPクライアントアプリケーション(Webブラウザーなど)。したがって、通常、制御接続を開くときに問題はありません。

FTPプロトコルが他のファイル転送プロトコルと比較してより複雑なのは、ファイル転送です。他のプロトコルはセッション制御とファイル(データ)転送の両方に同じ接続を使用しますが、FTPプロトコルはファイル転送とディレクトリリストに別の接続を使用します。

activeモードでは、クライアントはサーバーからの着信データ接続をランダムポートでリッスンし始めます(クライアントはFTPコマンドPORTを送信しますサーバーがリッスンしているポートを通知するため)。最近では、クライアントはファイアウォール(たとえば、組み込みのWindowsファイアウォール)またはNATルーター(ADSLモデムなど)の背後にあり、着信TCP接続を受け入れることができません。

このため、passiveモードが導入され、最近では主に使用されています。 passiveモードを使用することをお勧めします。これは、ほとんどの複雑な構成が、クライアント側で個別に行うのではなく、経験豊富な管理者によってサーバー側で1回だけ実行されるためです。 、(おそらく)経験の浅いユーザーによる。

passiveモードでは、クライアントは制御接続を使用してPASVコマンドをサーバーに送信し、サーバーのIPアドレスとサーバーを受信しますサーバーからのポート番号。クライアントは、受信したサーバーIPアドレスとサーバーポート番号へのデータ接続を開くために使用します。

パッシブモードのネットワーク構成

passiveモードでは、設定の負荷のほとんどはサーバー側にあります。サーバー管理者は、以下の説明に従ってサーバーをセットアップする必要があります。

FTPサーバー側のファイアウォールとNATは、FTPポート21の着信接続だけでなく、着信データ接続用のポートの範囲を許可/ルーティングするように構成する必要があります。通常、FTPサーバーソフトウェアには、サーバーが使用するポートの範囲を設定するための構成オプションがあります。また、ファイアウォール/ NATで同じ範囲を開いてルーティングする必要があります。

FTPサーバーがNATの背後にある場合、外部IPアドレスを知る必要があるため、PASVコマンドへの応答でクライアントに提供できます。

アクティブモードのネットワーク構成

activeモードでは、設定の負荷のほとんどはクライアント側にあります。

クライアント側のファイアウォール(Windowsファイアウォールなど)およびNAT(ADSLモデムルーティングルールなど)は、着信データ接続用のポート範囲を許可/ルーティングするように構成する必要があります。 Windowsでポートを開くには、[コントロールパネル]> [システムとセキュリティ]> [Windowsファイアウォール]> [詳細設定]> [受信の規則]> [新しい規則]に移動します。 NAT(存在する場合)のポートのルーティングについては、そのドキュメントを参照してください。

ネットワークにNATが存在する場合、FTPクライアントは、PORTコマンドを使用してWinSCPがFTPサーバーに提供する必要がある外部IPアドレスを知る必要があります。サーバーがクライアントに正しく接続してデータ接続を開くことができるようにします。 FTPクライアントには、外部IPアドレスを自動検出できるものと、手動で構成する必要があるものがあります。

スマートファイアウォール/ NAT

一部のファイアウォール/ NATは、FTP制御接続を検査したり、制御接続トラフィックのデータ接続IPアドレスを変換したりして、データポートを自動的に開閉します。

このようなファイアウォール/ NATでは、暗号化されていないプレーンなFTPには上記の構成は必要ありません。ただし、制御接続トラフィックは暗号化され、ファイアウォール/ NATは検査も変更もできないため、これはFTPSでは機能しません。

12
Martin Prikryl

アクティブモード:-serverは接続を開始します。

パッシブモード:-clientは接続を開始します。

9
Saeed Aliakbari

アクティブモード - クライアントはPORTコマンドをサーバに発行し、データ接続を開くためにIPとポート番号を「アクティブに」提供することをクライアントに知らせます。

パッシブモード - クライアントはPASVコマンドを発行して、サーバーがIPとポート番号を提供するのを「受動的に」待機することを示します。その後、クライアントはサーバーへのデータ接続を作成します。

上にはたくさんの良い答えがありますが、このブログ記事には役に立つグラフィックがいくつか含まれていて、かなりしっかりとした説明があります。 https://titanftp.com/2018/08/23/what-is-アクティブとパッシブの違いftp /

0
DaveW2122