FTP ファイアウォール設定の構成

作成者 : Robert McMurray
発行日 : 2008 年 1 月 15 日 (作業者 : iisteam (英語))
更新日 : 2009 年 3 月 18 日 (作業者 : iisteam (英語))

はじめに

Microsoft は、Windows Server® 2008 用に完全に書き換えられた、新しい FTP サービスを作成しました。この FTP サービスには多くの新機能が組み込まれており、Web 作成者にはコンテンツの発行がしやすくなる環境を、Web 管理者にはより優れたセキュリティおよび展開オプションを提供します。

このドキュメントでは、新しい FTP サーバーのファイアウォール設定を構成する方法について説明します。内容は次のとおりです。

  • 前提条件
  • FTP Site ウィザードを使用した匿名認証の FTP サイトの作成
  • 手順 1 : FTP サービスのパッシブ ポートの範囲の構成
  • 手順 2 : 特定の FTP サイトの外部 IPv4 アドレスの構成
  • (オプション) 手順 3 : Windows ファイアウォール設定の構成
  • ファイアウォールの作業に関する詳細情報

前提条件

この記事の手順を完了するには、次の項目を満たしている必要があります。

  1. Windows Server 2008 に IIS 7 がインストールされ、インターネット インフォメーション サービス マネージャーがインストールされている必要があります。
  2. 新しい FTP サービスがインストールされている必要があります。この FTP サービスは、https://www.iis.net/(英語) の Web サイトから次のリンクのいずれかを使用してダウンロードし、インストールできます。
  3. FTP 発行用のルート フォルダーを作成する必要があります。
    • %SystemDrive%\inetpub\ftproot フォルダーを作成します。
    • 次の手順で匿名アクセスを許可するための設定を行ないます。
      • コマンド プロンプトを開きます。
      • 次のコマンドを入力します。
        CACLS "%SystemDrive%\inetpub\ftproot" /G IUSR:R /T /E
      • コマンド プロンプトを閉じます。

重要 :

  • このチュートリアルで紹介している設定では、FTP サイトのパスとして "%SystemDrive%\inetpub\ftproot" を指定しています。このパス以外のパスを使用することもできます。ただし、サイトの場所を変更する場合は、このチュートリアルで使用する一連のサイト関連パスを変更する必要があります。
  • FTP サービスのファイアウォール設定を構成したら、ファイアウォール ソフトウェアまたはハードウェアを構成して、ファイアウォール経由で FTP サーバーに接続できるようにする必要があります。
    • 組み込みの Windows ファイアウォールを使用する場合は、このチュートリアルの「(オプション) 手順 3 : Windows ファイアウォール設定の構成」セクションを参照してください。
    • 別のファイアウォールを使用する場合は、そのファイアウォール ソフトウェアまたはハードウェアに付属しているドキュメントを参照してください。

FTP Site ウィザードを使用した匿名認証の FTP サイトの作成

ここでは、匿名ユーザーが読み取り専用アクセスで開くことができる、新しい FTP サイトを作成します。それには、次の手順を実行します。

  1. IIS 7.0 マネージャーに移動します。[接続] ウィンドウで、ツリー内の [サイト] ノードをクリックします。

  2. ツリー内の [サイト] ノードを右クリックして [Add FTP Site] をクリックするか、または [操作] ウィンドウで [Add FTP Site] をクリックします。

    Dd939055.Configuring FTP Firewall - Figure 1(ja-jp,TechNet.10).jpg

  3. Add FTP Site ウィザードが表示されたら、次の手順を実行します。

    • [FTP site name] ボックスに「My New FTP Site」と入力し、「前提条件」セクションで作成した %SystemDrive%\inetpub\ftproot フォルダーを指定します。 : コンテンツ フォルダーへのパスを直接入力する場合、パスに環境変数を使用することができます。
    • [次へ] をクリックします。

    Dd939055.Configuring FTP Firewall - Figure 2(ja-jp,TechNet.10).jpg

  4. ウィザードの次のページで、下記の手順を実行します。

    • [IP Address] ボックスで FTP サイトの IP アドレスを選択します。または、既定で選択されている [All Unassigned] をそのまま使用することもできます。この FTP サイトにはリモートからアクセスするため、ローカル サーバーのみのアクセス制限を設定しません。[IP Address] ボックスに、コンピューターのローカル ループバック IP アドレスである「127.0.0.1」を入力してください。
    • 通常は、[Port] ボックスに FTP サイトの TCP/IP ポートを入力します。このチュートリアルでは、既定のポート 21 をそのまま使用します。
    • このチュートリアルではホスト名は使用しないので、[Virtual Host] ボックスは空白のままにします。
    • [SSL Certificate] ボックスで [Not Selected] が選択され、[Allow SSL] オプションがオンになっていることを確認します。
    • [次へ] をクリックします。

    Dd939055.Configuring FTP Firewall - Figure 3(ja-jp,TechNet.10).jpg

  5. ウィザードの次のページで、下記の手順を実行します。

    • [Authentication] の設定で、[Anonymous] を選択します。
    • [Authorization] の設定の [Allow access to] ボックスで [Anonymous users] を選択します。[Permissions] オプションの [Read] をオンにします。
    • [終了] をクリックします。

    Dd939055.Configuring FTP Firewall - Figure 4(ja-jp,TechNet.10).jpg

  6. IIS 7.0 マネージャーに移動します。作成した FTP サイトのノードをクリックします。すべての FTP 機能のアイコンが表示されます。

    Dd939055.Configuring FTP Firewall - Figure 5(ja-jp,TechNet.10).jpg

まとめ

この手順で完了した項目を以下にまとめます。

  1. "My New FTP Site" という名前を付けて新しい FTP サイトを作成し、サイトのコンテンツ ルートを %SystemDrive%\inetpub\ftproot に設定しました。
  2. 作成した FTP サイトを、コンピューターのローカル ループバック アドレスのポート 21 にバインドしました。また、FTP サイトで SSL (Secure Sockets Layer) を使用しないように選択しました。
  3. FTP サイトの既定の規則を作成して、匿名ユーザーによるファイルへの "読み取り" アクセス権を設定しました。

手順 1 : FTP サービスのパッシブ ポートの範囲の構成

ここでは、FTP サービスに対するパッシブ接続のサーバーレベルでのポート範囲を構成します。手順は次のとおりです。

  1. IIS 7.0 マネージャーに移動します。[接続] ウィンドウで、ツリー内のサーバーレベルのノードをクリックします。

    Dd939055.Configuring FTP Firewall - Figure 6(ja-jp,TechNet.10).jpg

  2. 機能の一覧で [FTP Firewall Support] アイコンをダブルクリックします。

    Dd939055.Configuring FTP Firewall - Figure 7(ja-jp,TechNet.10).jpg

  3. [Data Channel Port Range] に値の範囲を入力します。

    Dd939055.Configuring FTP Firewall - Figure 8(ja-jp,TechNet.10).jpg

  4. FTP サービスのポート範囲を入力したら、[操作] ウィンドウの [適用] をクリックして構成設定を保存します。

:

  1. 有効なポートの範囲は、1024 ~ 65535 です (ポート 1 ~ 1023 はシステム サービス用に予約されています)。
  2. 「0-0」という特殊なポート範囲を入力することによって、Windows TCP/IP の動的ポート範囲を使用するように FTP サーバーを構成することができます。
  3. 詳細については、次の Microsoft サポート技術情報を参照してください。
  4. このポート範囲は、ファイアウォール サーバーの許可設定に追加する必要があります。

手順 2 : 特定の FTP サイトの外部 IPv4 アドレスの構成

ここでは、前の手順で作成した FTP サイトの外部 IPv4 アドレスを構成します。手順は次のとおりです。

  1. IIS 7.0 マネージャーに移動します。[接続] ウィンドウのツリー内で、作成した FTP サイトをクリックし、機能の一覧の中の [FTP Firewall Support] アイコンをダブルクリックします。

    Dd939055.Configuring FTP Firewall - Figure 9(ja-jp,TechNet.10).jpg

  2. [External IP Address of Firewall] の設定で、ファイアウォール サーバーの外部側の IPv4 アドレスを入力します。

    Dd939055.Configuring FTP Firewall - Figure 10(ja-jp,TechNet.10).jpg

  3. ファイアウォール サーバーの外部側の IPv4 アドレスを入力したら、[操作] ウィンドウの [適用] をクリックして構成設定を保存します。

まとめ

この手順で完了した項目を以下にまとめます。

  1. FTP サービスのパッシブ ポートの範囲を構成しました。
  2. 特定の FTP サイトの外部 IPv4 アドレスを構成しました。

(オプション) 手順 3 : Windows ファイアウォール設定の構成

Windows Server 2008 には、ネットワークの脅威からサーバーを保護するのに役立つファイアウォール サービスが組み込まれています。組み込みの Windows ファイアウォールを使用する場合は、FTP トラフィックがこのファイアウォールを通過できるように設定を構成する必要があります。

Windows ファイアウォールと共に FTP サービスを使用する場合は、検討すべきいくつかの異なる構成があります。アクティブ FTP 接続とパッシブ FTP 接続のいずれを使用するかということ、および非暗号化 FTP と FTP over SSL (FTPS) のいずれを使用するかということです。以下では、これらの構成について説明します。

: このセクションのチュートリアルの手順を実行するには、管理者としてログインする必要があります。そのためには、次のいずれかの方法を使用します。

  • "Administrator"という名前の実際のアカウントを使用してサーバーにログインします。
  • 管理者特権を持つアカウントを使用してログオンし、Windows プログラムの [アクセサリ] メニューにある [コマンド プロンプト] メニュー項目を右クリックし、[管理者として実行] を選択してコマンド プロンプトを開きます。

Windows Vista および Windows Server 2008 オペレーティング システムでは、ユーザー アカウント制御 (UAC) セキュリティ コンポーネントにより、ファイアウォール設定への管理者アクセスが制限されるため、上記のいずれかの手順が必要になります。UAC の詳細については、次のドキュメントを参照してください。

: Windows ファイアウォールは、Windows のコントロール パネルにある [Windows ファイアウォール] アプレットを使用して構成できます。ただし、このユーティリティは FTP のすべての機能を有効にするための機能を備えていません。Windows のコントロール パネルの [管理ツール] の下にある [セキュリティが強化された Windows ファイアウォール] は、FTP 機能を有効にするために必要なすべての機能を備えています。ただしこのチュートリアルでは、説明を簡素化するために、コマンド ライン ユーティリティの Netsh.exe を使用して Windows ファイアウォールを構成する方法について説明します。

セキュリティで保護されていない FTP トラフィックでの Windows ファイアウォールの使用

セキュリティで保護されていない FTP トラフィックを許可するように Windows ファイアウォールを構成するには、次の手順を実行します。

  1. コマンド プロンプトを開きます。.[スタート] ボタン、[すべてのプログラム]、[アクセサリ]、[コマンド プロンプト] の順にクリックします。

  2. ポート 21 を開くには、次の構文を入力して Enter キーを押します。

    netsh advfirewall firewall add rule name="FTP (non-SSL)" action=allow protocol=TCP dir=in localport=21
    
  3. データ接続で動的にポートを開くためのステートフル FTP フィルターを有効にするには、次の構文を入力して Enter キーを押します。

    netsh advfirewall set global StatefulFtp enable
    

重要 :

  • アクティブ FTP 接続については、上記の規則を設定しても正しく動作するとは限りません。サーバー上で、ポート 20 からの発信接続も有効になっている必要があります。また、FTP クライアント コンピューター側で、着信トラフィックに対して独自のファイアウォール例外を設定する必要もあります。
  • FTP over SSL (FTPS) は、これらの規則を設定しても正しく動作しません。Windows ファイアウォールのステートフル FTP 検査フィルターでは非暗号化データを解析できないため、ほとんどの場合、SSL ネゴシエーションは失敗します (一部のサードパーティ製ファイアウォール フィルターでは、AUTH SSL コマンドや AUTH TLS コマンドなどの SSL ネゴシエーションの開始部分を認識して、エラーを返します。これによって、SSL ネゴシエーションが開始できないようになります)。

セキュリティで保護された FTP over SSL (FTPS) トラフィックでの Windows ファイアウォールの使用

Windows ファイアウォールのステートフル FTP パケット検査機能では、ほとんどの場合 SSL は正しく動作しません。これは、Windows ファイアウォールのステートフル FTP 検査フィルターでは、データ接続を確立する際の暗号化トラフィックを解析できないためです。このため、FTP over SSL (FTPS) を使用する予定の場合は、Windows ファイアウォール設定を FTP 向けに個別に構成する必要があります。FTPS トラフィックを許可するように Windows ファイアウォールを構成する最も簡単な方法は、FTP サービスを着信例外一覧に設定することです。このサービスの正式名は "Microsoft FTP Service" で、省略名は "ftpsvc" です (FTP サービスは、汎用サービス プロセス ホスト (Svchost.exe) でホストされるため、プログラム例外による例外一覧に設定することはできません)。

セキュリティで保護された FTP over SSL (FTPS) トラフィックを許可するように Windows ファイアウォールを構成するには、次の手順を実行します。

  1. コマンド プロンプトを開きます。.[スタート] ボタン、[すべてのプログラム]、[アクセサリ]、[コマンド プロンプト] の順にクリックします。

  2. FTP サービスが開いたすべてのポートをリッスンできるようにファイアウォールを構成するには、次の構文を入力して Enter キーを押します。

    netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
    
  3. Windows ファイアウォールが FTP トラフィックをブロックしないようにステートフル FTP フィルターを無効にするには、次の構文を入力して Enter キーを押します。

    netsh advfirewall set global StatefulFtp disable
    

ファイアウォールの作業に関する詳細情報

FTP サーバーが正しく動作するようにファイアウォール規則を作成する作業は、たいていの場合困難を伴います。難しさの根本的原因は、FTP プロトコルのアーキテクチャにあります。各 FTP クライアントは、クライアントとサーバー間に 2 つの接続を維持する必要があります。

  • FTP コマンドは、"コントロール チャネル" と呼ばれる一次接続 (通常は既知の FTP ポート 21) を介して転送されます。
  • ディレクトリ リストやファイル アップロード/ダウンロードなどの FTP データ転送では、"データ チャネル" と呼ばれる二次接続を必要とします。

ファイアウォールでポート 21 を開くことは簡単ですが、これでは FTP クライアントはコマンドを送信できるだけで、データは転送できません。つまり、クライアントは、コントロール チャネルを使用してディレクトリの認証、作成、または削除を行うことができますが、ディレクトリ リストを参照したり、ファイルをアップロードまたはダウンロードしたりできません。これは、データ チャネルがファイアウォールの通過を許可されるまで、FTP サーバー向けのデータ接続はファイアウォールを通過できないためです。

: クライアントはサーバーに正常にログインできるように見えますが、サーバーからディレクトリ リストを受信しようとすると接続がタイムアウトしているか応答を停止しているように見えることがあるため、これはクライアントにとっては紛らわしいことです。

FTP に関するファイアウォールの作業を難しくしているのは、二次データ接続が必要であるという点だけではありません。さらに問題を複雑にしているのは、データ接続の確立方法は実際には2 種類あるという点です。

  • アクティブ データ接続 : アクティブ データ接続では、FTP クライアントがデータ チャネル をリッスンするためのポートをセットアップし、サーバーがそのポートへの接続を開始します。これは通常、サーバーのポート 20 からの接続です。かつては、アクティブ データ接続は FTP サーバーに接続する既定の方法でした。しかし、インターネットのさまざまな状況においてはうまく機能しないため、アクティブ データ接続は推奨されなくなりました。
  • パッシブ データ接続 : パッシブデータ接続では、FTP サーバーがデータ チャネルをリッスンするためのポートをセットアップし、クライアントがそのポートへの接続を開始します。パッシブ接続はインターネットのさまざまな状況においてより効果的に機能するため、「RFC 1579 (Firewall-Friendly FTP) (英語)」によって推奨されています。

: 一部の FTP クライアントは、パッシブ接続を有効にするために明示的な操作を必要とします。また、パッシブ接続をサポートしていない FTP クライアントもあります (その一例としては、Windows に付属しているコマンド ライン ユーティリティの Ftp.exe があります)。混乱をさらに増大させるのは、ネットワーク エラーが発生したときに 2 つのモードを自動的に切り替えようとするクライアントがあることです。これが常ににうまくいくとは限りません。

一部のファイアウォールは、組み込みのフィルターによってデータ接続の問題に対処しようとします。このフィルターの仕組みは、FTP トラフィックをスキャンして、データ接続がファイアウォールを通過することを動的に許可するというものです。これらのファイアウォール フィルターは、データ転送に使用されるポートを検出し、クライアントがデータ接続を開始できるようにファイアウォール上でそれらのポートを一時的に開く機能を備えています (ファイアウォールによっては、既定で FTP トラフィックのフィルターが有効になっているものもあれば、そうでないものもあります)。この種のフィルターは、ステートフル パケット検査 (SPI) またはステートフル検査と呼ばれています。これは、ファイアウォールが自動的にトラフィックの種類を特定して、動的に応答方法を選択できるということを意味します。組み込みの Windows ファイアウォールをはじめ、多くのファイアウォールがこれらの機能を導入しています。

Microsoft の Windows ファイアウォール ソフトウェアについては、Microsoft の Web サイトで以下のトピックを参照してください。

関連コンテンツ

記事