ExplorerからFTPサーバに接続する際の転送モードを「PASVモード(パッシブモード)」に変更して、ファイアウォールを超えてFTPサーバに接続できるようにする方法を紹介。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サイトへ接続してログインすることはできるが(ログインは制御用コネクションでやり取りされる)、その後のファイル名の一覧表示やファイルの送信/受信が一切できなくなる(注意:ファイル一覧の表示にも、個別のデータ転送コネクションが必要)。Accessサービスのパケット・フィルタリング機能——」では、世の中のほとんどのFTPクライアントのデフォルトがPORTモードであることに考慮して、ソース・ポート番号として20番を持つ、インターネット側からのTCPの接続要求をわざと通すように設定する方法を紹介した(「5.パケット・フィルタの設定(1)」の設定ポリシーの解説を参照)。この設定方法では、FTP以外でも、「ソースポート番号=20番」のパケットは、パケット・フィルタを通過してしまうという問題点があった。ソース・ポート番号が20番で、宛先ポート番号に特定のサービスのポート番号を持つパケットを作成すれば、このフィルタをすり抜けて、サーバ内部のサービスへアクセスが可能となってしまうのである。実際にはこのタイプのクラッキングは非常にまれであり(手間がかかるので、もっと脆弱なマシンを狙うほうが簡単だから)、実用上はほぼ問題はないのだが、理想的にはこのようなパケットもすべて禁止しておきたいところだ。そのためには、クライアント側でFTPを使うなら、PASVモードだけに限定してもらう必要がある。プロンプトのftp.exe機能、の3つがある。Explorer、もしくはその他の高機能なFTPクライアント・アプリケーションなどを利用するべきだろう。ところで、(1)と(2)は、実体は同じものであり、オプションの設定も共通となっているので、以下でまとめて解説する。SP1も含む)が導入された環境について解説するにとどめる。オプション]−[詳細設定]にある、2つのオプションを設定する必要がある。モードをサポートする]の方が追加されたので、やや面倒になっている。オプション]−[詳細設定]にある2つのオプションを設定する。デフォルトでは、上のオプションだけがオンになっている。(1)FTPのフォルダをツリー状に表示するかどうかを決める。(2)これをチェックすると、常にPASVモードになる。2つのオプションの組み合わせによる効果は以下のとおりである。PORTモードになるかPASVモードになるかは、(2)だけではなく、(1)の設定の影響も受ける。(1)はファイルの表示の方法を変えるだけでなく、転送モードの変更も伴っているのである。5.0以前は、[FTPサイト用の〜]のオプションのみしかなく、PASVモードでファイルを送信(アップロード)することはできなかった。5.5以降では、常にPASVモードを利用するためのオプション[ファイアウォールおよび〜]が用意された。Webベース・ビューの場合は、ファイルの送信はできない。デフォルトでは、前者はオン、後者はオフとなっているので、すべてPORTモードが使われる。「(不可)」は送信できないことを表す。ビューを使用する]というオプションを変更すると、転送モードが変わるだけでなく、表示の方法も変わることになる。このチェックボックスはデフォルトでオンとなっており、FTPの表示は、エクスプローラと同様に、ツリー・ビューとファイルの一覧が表示される。一般的にはこのツリー・ビュー形式で、PASVモードにしておけばよいだろう。FTPサイトのフォルダ・ビュー表示ローカルやネットワーク上のリソースをブラウズする時に使われるエクスプローラのフォルダ・ビュー表示と同じ形式。(1)ここにツリー形式でフォルダのリストが表示される。(2)こちらがファイルの一覧。ビューを使用する]オプションをオフにして、Webベースの表示形式にしたところ。5.0までは、このモードにするとFTPがPASVモードに変更されることになっていた。従来との互換性が高いモードであるが、ファイルの送信(アップロード)はできない。ファイアウォール環境でも利用しやすいモードだが、送信が行えないのでやや用途が限定されることになる。Webベース表示\WebブラウザでFTPサイトやWebサイトにアクセスした場合と同様の、シンプルな表示形式。(1)コマンドラインでFTPコマンドを使う場合のように、ディレクトリもファイルも同時に並んで表示される。【2001/06/22】「■PORTモード/ノーマル・モード/アクティブ・モード」の見出し部分において「データ転送用のTCPコネクションは、FTPサーバの側からFTPクライアントの20番ポートに向けてオープンされる。」としていましたが、正しくは、「データ転送用のTCPコネクションは、FTPサーバの20番ポート(FTPデータ・ポート)からFTPクライアントに向けてオープンされる。お詫びして訂正させていただきます。【2001/05/15】初版公開。メールマガジンをご購読ください。Japanスマートジャパン3Dモデラボキャリア@IT自分戦略研究所エンジニアライフディルバートアプリITmediaねとらぼねこらぼついトピ!ITmediaはアイティメディア株式会社の登録商標です。