検索
連載

WindowsのFTPクライアントをファイアウォールフレンドリモードに変更する方法Tech TIPS

WindowsエクスプローラやInternet ExplorerからFTPサーバに接続する際の転送モードを「PASVモード(パッシブモード)」に変更して、ファイアウォールを超えてFTPサーバに接続できるようにする方法を紹介。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000



解説

 Windows 2000では、FTPプロトコルを使ったファイル転送用のプログラムとして、Internet ExplorerやエクスプローラのFTPフォルダ機能が用意されている。現在でもFTPは、ファイル転送のための主要なプロトコルとして活用されている。しかしネットワークやファイアウォールの環境によっては、FTPのデフォルトのままの動作モードではインターネット上のFTPサーバへアクセスすることができない場合がある。ここではFTPプロトコルの仕組みや、その動作モードの設定方法について解説する。

 FTPサービスには、ファイルの転送方法に関して2つの動作モードがあり、その用途に応じて使い分けられている。この違いは、FTPのデータ転送用コネクションの確立方法の違いによる。

 FTPでは、「制御用コネクション」と「データ転送用コネクション」の2つのTCPコネクションを使用しながら動作している。ユーザーがFTPコマンドを起動してFTPサーバに接続するという場合、プロトコル的には、クライアント(の任意のポート番号)側からFTPサーバの21番ポート(FTPサービス・ポート)へ向けて、TCPコネクションをオープンする。これが制御用コネクションであり、ユーザーの認証や各種コマンドのやり取りなどはここで行われる(最後にQUITコマンドを送ると、制御用コネクションがクローズされ、FTPの全セッションが終了する)。これとは別にもう1つ、ファイルの内容をやり取りしたり(putやgetコマンド)、ディレクトリのリストを表示したり(dirコマンド)するたびに、「データ転送用コネクション」のためのTCP接続も新規に作られる。このデータ用のコネクションは、FTPの動作モードによってどちらの方からオープンするかが変わり、これによってファイアウォールの設定などに影響が出てくる。

 FTPの動作モードとしては、以下の2通りがある。

■PORTモード/ノーマル・モード/アクティブ・モード

 呼び方がいくつかあるようだが、こちらはFTPの標準的なデフォルトのファイル転送モードである。もともとデフォルトの動作なので特に決まった呼び方はないのだが、次に述べる「PASVモード」という用語と対比して、PORTモードとかアクティブ・モードなどと呼ばれることがある。「PORT」とは、FTPプロトコルでやり取りされるコマンドの1つで、データ転送用のポートの番号をやり取りするために使われている(注:ユーザーが指定するputやgetコマンドは、これらの低レベルなFTPプロトコルのコマンドを組み合わせて実現されており、プロトコル・レベルではPUTやGETというコマンドがあるわけではない)。

 データ転送用のTCPコネクションは、FTPサーバの20番ポート(FTPデータ・ポート)からFTPクライアントに向けてオープンされる。つまり、FTPのクライアント・プログラムを実行しているほうが、FTPサーバからのTCPコネクションのオープンを待ち受けしているのである。これは、制御用コネクションの向きとは逆であることに注意されたい。この場合、待ち受けするポート番号はランダムだが、サーバ側のポート番号は(一般的なFTPサーバでは)20番を使っている。よって、このようなコネクションがファイアウォールを通過するためには、サーバ側からクライアント側に向けて、「ソースポート番号=20番、宛先ポート番号=任意」という着信パケットが通過するようにパケット・フィルタを開けておく必要がある。

■PASVモード/パッシブ・モード/ファイアウォール(フレンドリ)モード/Proxyモード

 以上の方法とは逆に、FTPのクライアント側からFTPサーバの側へ向けてデータ転送用のTCPコネクションをオープンするのがこのPASVモードである(ポート番号は双方とも任意)。ネットワークの途中にファイアウォールが介在する場合でも、内部のネットワークからインターネット側へ向けたコネクションになるので、通常は(大抵のファイアウォール設定では、この方向は制限をかけていないので)何の制約もなく利用することができるだろう。そのため、「ファイアウォール(フレンドリ)モード」とか「PASVモード」などと呼ばれる。PASV(Passive、受身)もFTPプロトコルのコマンドの1つであるが、PORTが自分の待ち受けしているポート情報を相手に通知するコマンドであるのに対して、PASVでは相手に対して、待ち受けモードになるように指示するためのコマンドである。PASVコマンドを受け取ったFTPサーバは、待ち受けモードでスタンバイして、クライアントからのデータ転送コネクションのオープン要求が届くのを待つことになる。

 もともとPASVコマンドは、2つのFTPサーバ間でファイルを転送する場合に、片方のサーバをPORTでオープンし、もう片方をPASVでオープンするために用意されていた機能であるが(FTPには、1つのFTPクライアントから同時に2つのFTPサーバに接続して、両者の間でファイルを転送するという機能が用意されていたが、一般的にはほとんど使われていない)、現在ではこのように単に転送の向きを反対にするためのコマンドとして利用されている。

 FTPにおける以上2つの転送モードは、たいていの場合は特に意識しなくても問題はないだろうが、ファイアウォールの設定ポリシーによっては、どちらか一方しか使えない場合がある。一般的には、たいていのルータ(ダイヤルアップルータやNATをサポートしたブロードバンドルータなども含む)では(デフォルトでは)どちらのモードでも使えるようになっているが、インターネット側からの不正なアクセスなどを防ぐために、制限をきつく設定したファイアウォール(やルータ)では、インターネット側からのTCPコネクションのオープンを許さないようにすることがあり(内部からインターネット側は許可する)、そのせいでPORTモードを使ったデータ転送ができなくなってしまうのである。つまり、上記の2つの転送方法のうち、PASVモードならばパケットは通過するが、PORTモードのデータ転送ができなくなるのである。データ転送コネクションがオープンできなくなると、FTPサイトへ接続してログインすることはできるが(ログインは制御用コネクションでやり取りされる)、その後のファイル名の一覧表示やファイルの送信/受信が一切できなくなる(注意:ファイル一覧の表示にも、個別のデータ転送コネクションが必要)。

 逆にいうと、FTPをPASVモードでのみ運用するようにすれば、ファイアウォールにおけるパケット・フィルタの制限をより強くすることができ(外部からの接続要求を認める必要がなくなる)、より安全性が増すことになる。別稿「常時接続時代のパーソナル・セキュリティ対策(第2回)――Routing and Remote Accessサービスのパケット・フィルタリング機能――」では、世の中のほとんどのFTPクライアントのデフォルトがPORTモードであることに考慮して、ソース・ポート番号として20番を持つ、インターネット側からのTCPの接続要求をわざと通すように設定する方法を紹介した(「5.パケット・フィルタの設定(1)」の設定ポリシーの解説を参照)。しかしこの設定方法では、FTP以外でも、「ソースポート番号=20番」のパケットは、パケット・フィルタを通過してしまうという問題点があった。つまり、ソース・ポート番号が20番で、宛先ポート番号に特定のサービスのポート番号を持つパケットを作成すれば、このフィルタをすり抜けて、サーバ内部のサービスへアクセスが可能となってしまうのである。実際にはこのタイプのクラッキングは非常にまれであり(手間がかかるので、もっと脆弱なマシンを狙うほうが簡単だから)、実用上はほぼ問題はないのだが、理想的にはこのようなパケットもすべて禁止しておきたいところだ。そのためには、クライアント側でFTPを使うなら、PASVモードだけに限定してもらう必要がある。

 Windows 9x/Me/2000では、FTPクライアントとして、(1)エクスプローラのFTPフォルダ機能、(2)Internet Explorerのftpアクセス機能、(3)コマンド プロンプトのftp.exe機能、の3つがある。しかし最後のftp.exeは残念ながらPASVモードはサポートしていないのでPASVモードが必要な場合は、エクスプローラかInternet Explorer、もしくはその他の高機能なFTPクライアント・アプリケーションなどを利用するべきだろう。

 ところで、(1)と(2)は、実体は同じものであり、オプションの設定も共通となっているので、以下でまとめて解説する。ただし実際にはIEのバージョンによってインプリメント方法が異なっているので、ここではIE 5.5(IE 5.5 SP1も含む)が導入された環境について解説するにとどめる。それ以前のバージョンのIEが導入されているケースについては、マイクロソフトのサポート技術情報にある「[IE] FTP サイトへのデータ転送モードについて」を参照されたい。

操作方法

●動作モードの設定

 FTPの転送モードを設定するには、Internet Explorerの[ツール]−[インターネット オプション]−[詳細設定]にある、2つのオプションを設定する必要がある。IE 5.0までは[FTP サイト用のフォルダ ビューを使用する]の方しかなく、IE 5.5になって新しく[ファイアウォールおよび DSL モデムとの互換性を保つために PASV モードをサポートする]の方が追加されたので、やや面倒になっている。

FTPの転送モード切り替えのためのオプション
FTPの転送モード切り替えのためのオプション
FTPの転送モードを変更するには、Internet Explorerの[ツール]−[インターネット オプション]−[詳細設定]にある2つのオプションを設定する。デフォルトでは、上のオプションだけがオンになっている。
  (1)FTPのフォルダをツリー状に表示するかどうかを決める。
  (2)これをチェックすると、常にPASVモードになる。

 2つのオプションの組み合わせによる効果は以下のとおりである。PORTモードになるかPASVモードになるかは、(2)だけではなく、(1)の設定の影響も受ける。(1)はファイルの表示の方法を変えるだけでなく、転送モードの変更も伴っているのである。

  表示 受信 送信
[ファイアウォールおよびDSLモデムとの互換性を〜]が オフ の場合
[FTPサイト用のフォルダ ビューを使用する] オン PORT PORT PORT
オフ PASV PASV (不可)
[ファイアウォールおよびDSLモデムとの互換性を〜]が オン の場合
[FTPサイト用のフォルダ ビューを使用する] オン PASV PASV PASV
オフ PASV PASV (不可)
オプションによる転送モードの違い
IE 5.0以前は、[FTPサイト用の〜]のオプションのみしかなく、PASVモードでファイルを送信(アップロード)することはできなかった。IE 5.5以降では、常にPASVモードを利用するためのオプション[ファイアウォールおよび〜]が用意された。Webベース・ビューの場合は、ファイルの送信はできない。デフォルトでは、前者はオン、後者はオフとなっているので、すべてPORTモードが使われる。「(不可)」は送信できないことを表す。

●オプションによる表示方法の違い

 [FTPサイト用のフォルダ ビューを使用する]というオプションを変更すると、転送モードが変わるだけでなく、表示の方法も変わることになる。

 このチェックボックスはデフォルトでオンとなっており、FTPの表示は、エクスプローラと同様に、ツリー・ビューとファイルの一覧が表示される。一般的にはこのツリー・ビュー形式で、PASVモードにしておけばよいだろう。

FTPサイトのフォルダ・ビュー表示
FTPサイトのフォルダ・ビュー表示
ローカルやネットワーク上のリソースをブラウズする時に使われるエクスプローラのフォルダ・ビュー表示と同じ形式。
  (1)ここにツリー形式でフォルダのリストが表示される。
  (2)こちらがファイルの一覧。

 次の画面は、[FTPサイト用のフォルダ ビューを使用する]オプションをオフにして、Webベースの表示形式にしたところ。従来のIE 5.0までは、このモードにするとFTPがPASVモードに変更されることになっていた。従来との互換性が高いモードであるが、ファイルの送信(アップロード)はできない。ファイアウォール環境でも利用しやすいモードだが、送信が行えないのでやや用途が限定されることになる。

Webベース表示
Webベース表示
\WebブラウザでFTPサイトやWebサイトにアクセスした場合と同様の、シンプルな表示形式。
  (1)コマンドラインでFTPコマンドを使う場合のように、ディレクトリもファイルも同時に並んで表示される。

■関連リンク


■更新履歴

【2001/06/22】■PORTモード/ノーマル・モード/アクティブ・モード」の見出し部分において「データ転送用のTCPコネクションは、FTPサーバの側からFTPクライアントの20番ポートに向けてオープンされる。」としていましたが、正しくは、「データ転送用のTCPコネクションは、FTPサーバの20番ポート(FTPデータ・ポート)からFTPクライアントに向けてオープンされる。」の誤りでした。お詫びして訂正させていただきます。

【2001/05/15】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る