【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Windows TIPS
[User Interface]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

FTPをファイアウォール・フレンドリ・モードに変更する方法

デジタルアドバンテージ
2001/05/15

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

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

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

Webベース表示
\WebブラウザでFTPサイトやWebサイトにアクセスした場合と同様の、シンプルな表示形式。
  コマンドラインでFTPコマンドを使う場合のように、ディレクトリもファイルも同時に並んで表示される。
 
関連記事(Windows Server Insider)
  運用:常時接続時代のパーソナル・セキュリティ対策(第2回)――Routing and Remote Accessサービスのパケット・フィルタリング機能――
  運用:常時接続時代のパーソナル・セキュリティ対策(第2回)   5.パケット・フィルタの設定(1)
     
  関連リンク
  マイクロソフト サポート技術情報(マイクロソフト)
  [IE] FTP サイトへのデータ転送モードについて (マイクロソフト)
     
この記事と関連性の高い別のWindows TIPS
スクリプトで使うftpコマンド
エクスプローラを使ってFTPサーバにアクセスする方法
FTPの標準ポート番号を変更する
IIS 6.0のFTPサーバでユーザー・フォルダを分離する(基本編)
FTPサーバでユーザー・フォルダを設定する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

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

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています