次の方法で共有


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

作成者: Robert McMurray

互換性

バージョン メモ
IIS 7.5 FTP 7.5 サービスは、Windows 7 および Windows Server 2008 R2 の IIS 7.5 の機能として付属しています。
IIS 7.0 FTP 7.0 および FTP 7.5 サービスは、IIS 7.0 とは別にリリースされ、https://www.iis.net/download/FTP という URL からサービスをダウンロードしてインストールする必要がありました。

はじめに

Microsoft は、Windows Server® 2008 用に完全に書き換えられた新しい FTP サービスを作成しました。 この FTP サービスには、Web 作成者が以前よりもスマートにコンテンツを公開できる多くの新機能が組み込まれており、Web 管理者がセキュリティと展開に関してより多くの選択肢を利用できるようになりました。

このドキュメントでは、新しい FTP サーバーのファイアウォール設定を構成する手順について説明します。

前提条件

この記事の手順を完了するには、次の項目をインストールする必要があります。

  1. Windows 2008 Server に IIS 7 をインストールし、インターネット インフォメーション サービス (IIS) マネージャーをインストールする必要があります。

  2. 新しい FTP サービス。 次のいずれかのリンクを使用して、Web サイト (https://www.iis.net/) から FTP サービスをダウンロードしてインストールできます。

    • FTP 7.5 for IIS 7 (x64)
    • FTP 7.5 for IIS 7 (x86)
  3. FTP 公開用のルート フォルダーを作成する必要があります。

    • %SystemDrive%\inetpub\ftproot にフォルダーを作成します。

    • 匿名アクセスを許可するようにアクセス許可を設定します。

      • コマンド プロンプトを開きます。

      • 次のコマンドを入力します。

        ICACLS "%SystemDrive%\inetpub\ftproot" /Grant IUSR:R /T
        
      • コマンド プロンプトを閉じます。

重要な注意:

  • このチュートリアルに出現する各設定では、FTP サイトへのパスとして %SystemDrive%\inetpub\ftproot が指定されています。 必ずしもこのパスを使用する必要はありませんが、サイトの場所を変更する場合は、このチュートリアル全体で使用されるサイト関連のパスを変更しなければならなくなります。

  • FTP サービスのファイアウォール設定を構成したら、ファイアウォール経由で FTP サーバーへの接続を許可するようにファイアウォール ソフトウェアまたはハードウェアを構成する必要があります。

    • ビルトインの Windows ファイアウォールを使用している場合は、このチュートリアルの「(省略可能) 手順 3: Windows ファイアウォール 設定を構成する」セクションを参照してください。
    • 別のファイアウォールを使用している場合は、ファイアウォール ソフトウェアまたはハードウェアに付属のドキュメントを参照してください。

FTP サイト ウィザードで匿名認証を使用して FTP サイトを作成する

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

  1. IIS 7 マネージャーに移動します。 [接続] ペインのツリーから [サイト] ノードを開きます。

  2. ツリーの [サイト] ノードを右クリックし、[FTP サイトの追加] をクリックするか、[操作] ペインの [FTP サイトの追加] をクリックします。

    I I S マネージャーのスクリーンショット。[接続] ウィンドウの [サイト] コンテキスト メニューで [F T P サイトの追加] が強調表示されています。

  3. FTP サイトの追加ウィザードが表示されたら次の操作を行います。

    • [FTP サイト名] ボックスに「My New FTP Site」と入力し、「前提条件」セクションで作成した %SystemDrive%\inetpub\ftproot フォルダーに移動します。

      Note

      コンテンツ フォルダーへのパスを入力したい場合は、パス内で環境変数を使用できます。

    • 次へ をクリックします。

      [サイト情報] の [F T P サイトの追加] ダイアログ ボックスを示すスクリーンショット。

  4. 次のウィザード ページで次の操作を行います。

    • [IP アドレス] ボックスの一覧から FTP サイトの IP アドレスを選択するか、または既定値である [すべて未割り当て] を選択します。この FTP サイトにリモートでアクセスすることになるため、ローカル サーバーへのアクセスを制限しないようにし、[IP アドレス] ボックスに「127.0.0.1」と入力して、コンピューターのローカル ループバック IP アドレスを入力します。

    • 通常は、[ポート] ボックスに FTP サイトの TCP/IP ポートを入力します。 このチュートリアルでは、既定のポートである 21 を選択します。

    • このチュートリアルではホスト名を使用しないため、[仮想ホスト] ボックスは必ず空欄にしてください。

    • [証明書] ドロップダウンが [選択されていません] に設定されており、[SSL を許可する] オプションが選択されていることを確認します。

    • 次へ をクリックします。

      [バインド] と [S S L] 設定の [F T P サイトの追加] ダイアログ ボックスを示すスクリーンショット。

  5. 次のウィザード ページで次の操作を行います。

    • [認証] 設定に [匿名] を選びます。

    • [承認] 設定で、[アクセスの許可] ドロップダウンから [匿名ユーザー] を選びます。 [アクセス許可] オプションの [読み取り] をオンにします。

    • [完了] をクリックします。

      [認証] と [承認済み情報] の [F T P サイトの追加] ダイアログ ボックスを示すスクリーンショット。

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

    [My New F T P Site Home]\(新しい F T P サイトのホーム\) ウィンドウを示すスクリーンショット。

まとめ

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

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

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

このセクションでは、FTP サービスへのパッシブ接続用にサーバー レベルのポート範囲を構成します。 次の手順に従います。

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

    [MY Standard Edition RVER ホーム] ウィンドウを示すスクリーンショット。

  2. 機能の一覧で [FTP ファイアウォール サポート] アイコンをダブルクリックします。

    [MY Standard Edition RVER ホーム] ウィンドウを示すスクリーンショット。[F T P ファイアウォールのサポート] が強調表示されています。

  3. [データ チャネルのポート範囲] に値の範囲を入力します。

    [F T P ファイアウォールのサポート] ウィンドウを示すスクリーンショット。

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

メモ

  1. ポートの有効な範囲は 1024 から 65535 です。 (1 から 1023 のポートは、システム サービスで使うために予約されています)。

  2. 特殊なポート範囲 "0-0" を指定して、Windows TCP/IP ダイナミック ポート範囲を使うように FTP サーバーを構成できます。

  3. 詳細については、次のマイクロソフト サポート技術情報の記事を参照してください。

  4. このポート範囲をファイアウォール サーバーの許可された設定に追加する必要があります。

  5. 構成を変更した後、Microsoft FTP サービスを再起動しStart>>Runservices.msc、FTP サービスを見つけます。

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

このセクションでは、前に作成した特定の FTP サイトの外部 IPv4 アドレスを構成します。 次の手順に従います。

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

    [新しい F T P サイトホーム] ウィンドウを示すスクリーンショット。[F T P ファイアウォールのサポート] が強調表示されています。

  2. [ファイアウォールの外部 IP アドレス] 設定に、ファイアウォール サーバーの外部接続アドレスの IPv4 アドレスを入力します。

    [外部 I P アドレス] または [ファイアウォール] フィールドに [I P アドレス] が入力されている [F T P ファイアウォールのサポート] ウィンドウを示すスクリーンショット。

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

まとめ

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

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

(省略可能) 手順 3: Windows ファイアウォール設定を構成する

Windows Server 2008 には、ネットワークの脅威からサーバーをセキュリティで保護するためのビルトインのファイアウォール サービスが含まれています。 ビルトインの Windows ファイアウォールを使用する場合は、FTP トラフィックがファイアウォールを通過できるように設定を構成する必要があります。

Windows ファイアウォールで FTP サービスを使用する場合、いくつかの構成ではいくつかアクティブ FTP 接続とパッシブ FTP 接続のどちらを使用するか、暗号化されていない FTP を使用するか、FTP over SSL (FTPS) を使用するかを考慮する必要があります。 以下に、これらの各構成について説明します。

Note

管理者としてログインしている場合、このセクションのチュートリアルの手順に従っていることを確認する必要があります。 これは、次のいずれかの方法で行うことができます。

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

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

Note

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) はこれらの規則の対象になりません。SSL ネゴシエーションは、ステートフル FTP 検査の Windows ファイアウォール フィルターで暗号化されたデータを解析できないため、失敗する可能性が非常に高くなります。 (一部のサード パーティ製ファイアウォール フィルターは、SSL ネゴシエーションの開始 (AUTH SSL または AUTH TLS コマンドなど) を認識し、SSL ネゴシエーションが開始されないようにエラーを返します。)

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

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

SSL (FTPS) トラフィックを介してセキュリティで保護された FTP を許可するように 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 サーバーのデータ接続はファイアウォールを通過できないためです。

Note

クライアントがサーバーに正常にログインできるように見えますが、サーバーからディレクトリ一覧を取得しようとすると、接続がタイムアウトまたは応答を停止しているように見える場合があるため、FTP クライアントの混乱を招く可能性があります。

FTP とファイアウォールを使用する場合の課題は、セカンダリ データ接続の要件だけではありません。さらに複雑になりますが、データ接続を実際に確立する方法は 2 つあります。

  • アクティブ データ接続: アクティブ データ接続では、FTP クライアントがデータ チャネルリッスン用のポートを設定し、サーバーがポートへの接続を開始します。これは通常、サーバーのポート 20 から行われます。 アクティブ データ接続は、FTPサーバーに接続するためのデフォルトの方法でした。ただし、アクティブ データ接続は、インターネットのシナリオではうまく機能しないため、推奨されなくなりました。
  • パッシブ データ接続: パッシブ データ接続では、FTP サーバーがリッスンするデータ チャネルのポートを設定し、クライアントがポートへの接続を開始します。 パッシブ接続はインターネット シナリオではるかに優れた機能を発揮し、RFC 1579 (ファイアウォールに適した FTP) によって推奨されます。

Note

FTP クライアントによっては、パッシブ接続を有効にするために明示的なアクションが必要な場合があります。パッシブ接続をサポートしていないクライアントもあります。 (そのような例の 1 つは、Windows に付属するコマンドライン Ftp.exe ユーティリティです。)一部のクライアントは、ネットワーク エラーが発生したときに 2 つのモードをインテリジェントに代替しようとするため、混乱が増しますが、残念ながらこれが常に機能するとは限りません。

一部のファイアウォールでは、FTP トラフィックをスキャンし、ファイアウォール経由のデータ接続を動的に許可する組み込みフィルターを使用して、データ接続に関する問題を解決しようとします。 これらのファイアウォール フィルターは、データ転送に使用されるポートを検出し、クライアントがデータ接続を開くことができるようにファイアウォールで一時的に開くことができます。 (一部のファイアウォールでは、既定で FTP トラフィックのフィルター処理が有効になっている場合がありますが、必ずそうなっているとは限りません。)この種類のフィルター処理は、ステートフル パケット 検査 (SPI) またはステートフル 検査の一種と呼ばれます。ファイアウォールはトラフィックの種類をインテリジェントに決定し、応答方法を動的に選択できます。 多くのファイアウォールでは、ビルトインの Windows ファイアウォールを含め、これらの機能が使用されるようになりました。