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


312

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

回答:


474

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

背景として、FTPは実際にはクライアントとサーバー間で2つのチャネルを使用します。コマンドチャネルとデータチャネルは、実際には個別の TCP接続です。

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

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


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

では、パッシブモードでは、クライアントが確立し、両方のチャネルを。アクティブモードでコマンドチャネルを確立することはすでに知っています。ここでも同じことが行われます。

ただし、その後、クライアントへの接続を確立しようとするのではなく、(コマンドチャネル上で)サーバーに(サーバーの裁量で)ポートのリッスンを開始するように要求します。

この一環として、サーバーは、リッスンするように選択したポート番号もクライアントに返します。これにより、クライアントは、サーバーへの接続方法を認識します。

クライアントはそれを知ると、データチャネルを正常に作成して続行できます。

詳細については、RFCをご覧くださいhttps : //www.ietf.org/rfc/rfc959.txt


1
ポートYの周りのステートメントが正しいとは思わない、アクティブモードでは、クライアントはポートYを決定せず、サーバーはポート#をランダムに選択し、クライアントがその選択したポート経由の通信を許可するかどうかを確認しようとします。 。これが私が言う理由は、これがtrueでない場合(私の議論)、ファイアウォールの背後にあるクライアント側でも、常に2つのファイアウォールルール(送信接続用と受信接続用)を作成できるためです。
arun.raj.mony 2013年

1
@arun、クライアントは必ずしもファイアウォールを制御しているわけではありません。例:企業環境では、通常、会社全体のネットワークと外部の世界の間にファイアウォールがあり、FTPを実行しているクライアントの電力はゼロです。
paxdiablo 2014

パッシブモードで、サーバーがクライアントにランダムなポートを送信するのではなく、クライアントがサーバーポート20に直接接続するのはなぜですか?
チェンボ14

@paxdiabloパッシブモードで、サーバーがランダムなポート番号noを割り当ててデータ接続のためにクライアントに送信するのはなぜですか?クライアントがサーバー側でクライアントポートnoからポートno 20にデータチャネルを直接開くことができないのはなぜですか?
Zephyr

1
私はここで質問しましたnetworkengineering.stackexchange.com/q/43680/37406
Zephyr

166

最近、職場でこの質問に遭遇したので、もう少しここで言いたいと思います。前の回答の追加ソースとしてFTPがどのように機能するかを説明するために画像を使用します。

アクティブモード:

アクティブモード


パッシブモード:

ここに画像の説明を入力してください


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

ここに画像の説明を入力してください


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

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

リスクを軽減するための適切な解決策は、サーバーでポートの範囲を指定し、ファイアウォールでその範囲のポートのみを許可することです。

詳しくは公式ドキュメントをご覧ください。


どちらがセキュリティの問題なのか、私は推測しています。サーバーが同じポート(20)をリッスンしている場合、どのクライアントが話しているかを理解できないため、ランダムなポートを選択してクライアントに送信し、そのポートのリッスンを開始します。クライアントがそのポートに接続すると、サーバーはそれが属するクライアントを認識します。ただし、MITMが同じクライアントに接続するだけで十分です。(まあ、ここでのミット攻撃はとにかくトリッキーです...)
Daniele Cruciani

2
素晴らしい答え、特にファイアウォールの問題に関する情報
Anh Tuan

14

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

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

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

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

このため、パッシブモードが導入され、現在ではほとんどが使用されています。複雑な構成のほとんどは、(おそらく)経験の浅いユーザーがクライアント側で個別に行うのではなく、経験豊富な管理者がサーバー側で一度だけ行うので、パッシブモードを使用することをお勧めします。

では、パッシブモードでは、クライアントが送信する制御接続を使用してPASVサーバーにコマンドをし、その後、クライアントは、サーバのIPアドレスとサーバへのデータ接続を開くために使用するサーバーからサーバーのIPアドレスとサーバーのポート番号を受け取り、受信したポート番号。

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

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

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

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

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

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

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

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

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

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

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



1

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

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

上記の良い答えはたくさんありますが、このブログ投稿にはいくつかの役立つグラフィックが含まれており、かなりしっかりした説明を提供しています。https//titanftp.com/2018/08/23/what-is-the-difference-between-active-and -パッシブftp /

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.