次の方法で共有


FTP ファイアウォールサポート <firewallSupport>

概要

<system.ftpServer/firewallSupport> 要素は、FTP PASV コマンドを使ってパッシブ接続をネゴシエートするときに、FTP サービスがデータ チャネル アクティビティに使うポート範囲を構成するために使われます。これには、サーバーの IP アドレスとポートが含まれます。

FTP PASV コマンドを使ってパッシブ接続がネゴシエートされると、FTP サーバーはサーバーの IP アドレスとポートを含む応答を送信します。 lowDataChannelPort 属性と highDataChannelPort 属性を指定すると、FTP クライアントがファイアウォールと通信するように指示でき、クライアント トラフィックが FTP サーバーにルーティングされます。

TCP/IP ポートの有効な範囲は 1025 から 65535 です (1 から 1024 のポートは、システム サービスで使うために予約されています)。特殊なポート範囲 "0-0" を指定して、Windows TCP/IP エフェメラル ポート範囲を使うように FTP サーバーを構成できます。 Windows の初期バージョンでは、TCP/IP エフェメラル ポート範囲はポート 1025 から 5000 を使うように設定されていました。 Windows Vista および Windows Server 2008 以降、TCP/IP エフェメラル ポート範囲は 49152 から 65535 に変更されました。 エフェメラル ポート範囲の詳細については、Microsoft サポート技術情報の次の記事を参照してください。

929851: Windows Vista および Windows Server 2008 では TCP/IP の既定の動的ポート範囲が変更されている

Note

<ftpServer/firewallSupport> を使って、ファイアウォールのサイトごとの外部 IP アドレスを構成できます。これにより、各サイトのファイアウォール トラフィックを異なるファイアウォール経由でルーティングできるようになります。

互換性

バージョン メモ
IIS 10.0 <firewallSupport> 要素は IIS 10.0 では変更されませんでした。
IIS 8.5 <firewallSupport> 要素は IIS 8.5 では変更されませんでした。
IIS 8.0 <firewallSupport> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 <system.ftpServer> 要素の <firewallSupport> 要素は、IIS 7.5 の機能として付属しています。
IIS 7.0 <system.ftpServer> 要素の <firewallSupport> 要素が、IIS 7.0 用の別個のダウンロードとして FTP 7.0 で導入されました。
IIS 6.0 <firewallSupport> 要素は、IIS 6.0 の MSFTPSVC/PassivePortRange メタ ベース プロパティを置き換えます。

Note

FTP 7.0 サービスと FTP 7.5 サービスは IIS 7.0 とは別に出荷され、次の URL からモジュールをダウンロードしてインストールする必要がありました。

https://www.iis.net/expand/FTP

Windows 7 と Windows Server 2008 R2 では、FTP 7.5 サービスは IIS 7.5 の機能として付属しているため、FTP サービスのダウンロードは必要なくなりました。

段取り

Web サーバーの FTP 公開をサポートするには、FTP サービスをインストールする必要があります。 そのためには、次のステップに従います。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。

  2. [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。

  3. [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] をクリックします。

  4. [サーバーの役割] ページで、[Web サーバー (IIS)] を展開して、[FTP サーバー] を選びます。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP Service] に加えて[FTP 拡張] も選択する必要があります。
    展開された Web サーバー (I S) の一覧の [F T P サーバー] で選択されている F T P サービスと F T P 拡張機能のスクリーンショット。 .

  5. [次へ] をクリックし、[機能の選択] ページで再度 [次へ] をクリックします。

  6. [インストール オプションの確認] ページで、[インストール] をクリックします。

  7. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。

  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。

  3. [インターネット インフォメーション サービス] を展開し、[FTP サーバー] を展開します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    Windows 8 インターフェイスで選択された F T P 拡張機能と F T P サービスのスクリーンショット。

  4. OK をクリックします。

  5. 閉じるをクリックします。

Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。

  2. [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。

  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。

  4. [役割サービスの追加] ウィザード[役割サービスの選択] ページで [FTP サーバー] を展開します。

  5. [FTP Service] を選択します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    展開された F T P サーバーの一覧で選択されている F T P サービスと F T P 拡張機能のスクリーンショット。

  6. 次へ をクリックします。

  7. [インストール オプションの確認] ページで、[インストール] をクリックします。

  8. [結果] ページで、 [閉じる]をクリックします。

Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。

  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。

  3. [インターネット インフォメーション サービス][FTP サーバー] の順に展開します。

  4. [FTP Service] を選択します。

    Note

    FTP サービスに対して ASP.NET メンバーシップ認証または IIS マネージャー認証をサポートするには、[FTP 拡張] も選択する必要があります。
    Windows 7 インターフェイスで選択されている F T P 拡張機能と F T P サービスのスクリーンショット。

  5. OK をクリックします。

Windows Server 2008 または Windows Vista

  1. 次の URL からインストール パッケージをダウンロードします。

  2. 次のチュートリアルの手順に従って、FTP サービスをインストールします。

操作方法

FTP サービスのグローバル ファイアウォール設定を構成する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ペインでサーバー名をクリックします。

  3. [ホーム] ペインで、[FTP ファイアウォール サポート] 機能をダブルクリックします。

  4. [データ チャネル ポート範囲] ボックスで、次のオプションのいずれかを使って、パッシブ データ チャネル接続のポート範囲を入力します。

    • ポート範囲には [下限ポート]-[上限ポート] を使います。各ポートは 1025 から 65535 の間である必要があります。 たとえば、5000-6000 のようになります。
    • Windows TCP/IP エフェメラル ポート範囲を使うように FTP サーバーを構成するには、"0-0" を使います。
      F T P ファイアウォールサポート データ チャネル ポート範囲を 0 ダッシュ 0 の値に設定するスクリーンショット。
  5. [ファイアウォールの外部 IP アドレス] ボックスに、ファイアウォールのインターネット接続ネットワーク アダプターの IPv4 アドレスを入力します。

  6. [操作] ウィンドウで、[適用] をクリックします。

FTP サービスのファイアウォール設定を構成する方法の詳細については、Microsoft IIS.net Web サイトの次のトピックを参照してください。

FTP ファイアウォール設定の構成
https://www.iis.net/learn/publish/using-the-ftp-service/configuring-ftp-firewall-settings-in-iis-7

構成

<firewallSupport> 要素は、ApplicationHost.config のグローバル レベルで構成されます。

属性

属性 説明
lowDataChannelPort 省略可能な int 属性。

パッシブ データ接続のデータ チャネル アクティビティの最小ポートを指定します。

既定値は 0 です。
highDataChannelPort 省略可能な int 属性。

パッシブ データ接続のデータ チャネル アクティビティの最小ポートを指定します。

既定値は 0 です。

子要素

なし。

構成サンプル

次のサンプルは、サーバーのグローバル <system.ftpServer> 要素のいくつかの構成設定を示しています。 具体的には、この例の設定では、次の方法を示します。

  • FTP 資格情報のキャッシュを有効にし、タイムアウトを 10 分 (600 秒) に指定します。

  • データ チャネル通信用に、下限ポートを 5000 に、上限ポートを 6000 に構成します。

  • ログを有効にし、ログ ファイルがサイトごとに保存され、ログ ファイルが UTC 時間で毎日ローテーションされるように指定します。

  • カスタム FTP プロバイダーを指定し、そのプロバイダーのカスタム パラメーターを指定します。

  • ローカル ホストからの FTP アクセスを許可し、IP アドレス 169.254.0.0 から 169.254.255.255 のブロックへのアクセスを拒否するグローバル IP 制限を指定します。

  • 次のオプションを使って要求のフィルタリングを構成します。

    • FrontPage Server Extensions で使われる _vti_bin 仮想ディレクトリへの FTP アクセスをブロックします。
    • 実行可能ファイルに関連付けられているいくつかのファイルの種類をブロックします。
    • 最大ファイル サイズとして 100 MB を指定します。
  • 管理者グループのアクセスを許可するグローバル認可規則を追加します。

  • FTP 仮想ホスト名にドメイン名構文を使用できるように指定します。

<system.ftpServer>
   <caching>
      <credentialsCache enabled="true" flushInterval="600" />
   </caching>
   <firewallSupport lowDataChannelPort="5000" highDataChannelPort="6000" />
   <log centralLogFileMode="Site">
      <centralLogFile period="Daily" localTimeRollover="false" enabled="true" />
   </log>
   <providerDefinitions>
      <add name="FtpXmlAuthentication"
         type="FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73" />
      <activation>
         <providerData name="FtpXmlAuthentication">
            <add key="xmlFileName" value="C:\Inetpub\XmlSample\Users.xml" />
         </providerData>
      </activation>
   </providerDefinitions>
   <security>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
         <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
         <add ipAddress="127.0.0.1" allowed="true" />
      </ipSecurity>
      <requestFiltering>
         <hiddenSegments>
            <add segment="_vti_bin" />
         </hiddenSegments>
         <fileExtensions allowUnlisted="true">
            <add fileExtension="exe" allowed="false" />
            <add fileExtension="cmd" allowed="false" />
            <add fileExtension="com" allowed="false" />
            <add fileExtension="bat" allowed="false" />
         </fileExtensions>
         <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
      <authorization>
         <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
   </security>
   <serverRuntime>
      <hostNameSupport useDomainNameAsHostName="true" />
   </serverRuntime>
</system.ftpServer>

サンプル コード

次の例では、パッシブ接続が使われている場合に、データ チャネル アクティビティに 5000 から 6000 のポート範囲を使うように FTP サービスを構成します。

AppCmd.exe

appcmd.exe set config -section:system.ftpServer/firewallSupport /lowDataChannelPort:"5000" /commit:apphost

appcmd.exe set config -section:system.ftpServer/firewallSupport /highDataChannelPort:"6000" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection logSection = config.GetSection("system.ftpServer/log");
         logSection["centralLogFileMode"] = @"Central";

         ConfigurationElement centralLogFileElement = logSection.GetChildElement("centralLogFile");
         centralLogFileElement["enabled"] = true;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim firewallSupportSection As ConfigurationSection = config.GetSection("system.ftpServer/firewallSupport")
      firewallSupportSection("lowDataChannelPort") = 5000
      firewallSupportSection("highDataChannelPort") = 6000

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var firewallSupportSection = adminManager.GetAdminSection("system.ftpServer/firewallSupport", "MACHINE/WEBROOT/APPHOST");
firewallSupportSection.Properties.Item("lowDataChannelPort").Value = 5000;
firewallSupportSection.Properties.Item("highDataChannelPort").Value = 6000;

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set firewallSupportSection = adminManager.GetAdminSection("system.ftpServer/firewallSupport", "MACHINE/WEBROOT/APPHOST")
firewallSupportSection.Properties.Item("lowDataChannelPort").Value = 5000
firewallSupportSection.Properties.Item("highDataChannelPort").Value = 6000

adminManager.CommitChanges()