FTP over SSL の使用
作成者 : Robert McMurray
発行日 : 2008 年 1 月 15 日 (作業者 : iisteam (英語))
更新日 : 2009 年 3 月 18 日 (作業者 : iisteam (英語))
Microsoft は、Windows Server® 2008 用に完全に書き換えられた、新しい FTP サービスを作成しました。この FTP サービスには多くの新機能が組み込まれており、Web 作成者にはコンテンツの発行がしやすくなる環境を、Web 管理者にはより優れたセキュリティおよび展開オプションを提供します。
新機能の 1 つとして FTP over SSL (Secure Sockets Layer) があります。この機能により、FTP クライアントと FTP サーバーの間のセッションを暗号化できます。このドキュメントでは、FTP サイトをセットアップし、SSL を使用するようにサイトを構成する方法について説明します。新しい FTP ユーザー インターフェイスを使用する方法、および IIS 7.0 構成ファイルを直接編集する方法の 2 とおりの手順を確認していきます。内容は次のとおりです。
- 前提条件
- 自己署名入り SSL 証明書の作成
- IIS 7.0 マネージャーを使用した SSL 対応の FTP サイトの作成
- IIS 7.0 構成ファイルの編集による SSL ベースの FTP 発行の追加
注 : このチュートリアルでは、ローカル管理者アカウントを使用して FTP サイトにログインする一連の手順を説明します。これらの手順は、必ず当該サーバー上でループバック アドレスを使用して実行するか、リモート サーバーから SSL を介して実行してください。管理者アカウントの代わりに別のユーザー アカウントを使用する場合は、必要に応じてそのための適切なフォルダーを作成し、そのユーザー アカウントに正しいアクセス許可を設定してください。
この記事の手順を完了するには、次の項目を満たしている必要があります。
- Windows Server 2008 に IIS 7.0 がインストールされ、インターネット インフォメーション サービス マネージャーがインストールされている必要があります。
- 新しい FTP サービスがインストールされている必要があります。この FTP サービスは、https://www.iis.net/(英語) の Web サイトから次のリンクのいずれかを使用してダウンロードし、インストールできます。
- FTP 発行用のルート フォルダーを作成する必要があります。
- %SystemDrive%\inetpub\ftproot フォルダーを作成します。
- 次の手順でアクセス許可を設定して、管理者グループにアクセスを許可します。
- コマンド プロンプトを開きます。
- 次のコマンドを入力します。
CACLS "%SystemDrive%\inetpub\ftproot" /G administrators:F /T /E - コマンド プロンプトを閉じます。
注 : このチュートリアルで紹介している設定では、FTP サイトのパスとして "%SystemDrive%\inetpub\ftproot" を指定しています。このパス以外のパスを使用することもできます。ただし、サイトの場所を変更する場合は、このチュートリアルで使用する一連のサイト関連パスを変更する必要があります。
この作業では、FTP サイトで使用する自己署名入り SSL 証明書を作成します。
- インターネット インフォメーション サービス (IIS 7.0) マネージャーを開きます。
- [接続] ツリーのトップ ノードにあるコンピューターをクリックし、[サーバー証明書] 機能をダブルクリックします。
- [操作] ウィンドウで、[自己署名入り証明書の作成] をクリックします。
- 新しい証明書の名前として「My FTP Certificate」と入力して、[OK] をクリックします。
最初の手順では、管理者アカウントでのみ開くことができる新しい FTP サイトを作成します。
- IIS 7.0 マネージャーに移動します。[接続] ウィンドウで、ツリー内の [サイト] ノードをクリックします。
- ツリー内の [サイト] ノードを右クリックして [Add FTP Site] をクリックするか、または [操作] ウィンドウで [Add FTP Site] をクリックします。
- Add FTP Site ウィザードが表示されたら、次の手順を実行します。
- [FTP site name] ボックスに「My New FTP Site」と入力し、「前提条件」セクションで作成した %SystemDrive%\inetpub\ftproot フォルダーを指定します。注 : コンテンツ フォルダーへのパスを直接入力する場合、パスに環境変数を使用することができます。
- [次へ] をクリックします。
- ウィザードの次のページで、下記の手順を実行します。
- [IP Address] ボックスで FTP サイトの IP アドレスを選択します。または、既定で選択されている [All Unassigned] をそのまま使用することもできます。このチュートリアルでは、後述の手順で管理者アカウントを使用するため、サーバーへのアクセスを制限します。[IP Address] ボックスに、コンピューターのローカル ループバック IP アドレスである「127.0.0.1」を入力してください。
- 通常は、[Port] ボックスに FTP サイトの TCP/IP ポートを入力します。このチュートリアルでは、既定のポート 21 をそのまま使用します。
- このチュートリアルではホスト名は使用しないので、[Virtual Host] ボックスは空白のままにします。
- [SSL Certificate] ボックスで [My FTP Certificate] が選択され、[Allow SSL] オプションがオンになっていることを確認します。
- [次へ] をクリックします。
- ウィザードの次のページで、下記の手順を実行します。
- [Authentication] の設定で、[Basic] を選択します。
- [Authorization] の設定で、下記の手順を実行します。
- [Allow access to] ボックスで [Specified users] を選択します。
- ユーザー名として「administrator」を入力します。
- [Permissions] オプションの [Read] と [Write] をオンにします。
- 上記の手順を完了したら、[終了] をクリックします。
新しい FTP サービスを使用して、新しい SSL ベースの FTP サイトを作成しました。
この手順で完了した項目を以下にまとめます。
- "My New FTP Site" という名前を付けて新しい FTP サイトを作成し、サイトのコンテンツ ルートを %SystemDrive%\inetpub\ftproot に設定しました。
- 作成した FTP サイトをコンピューターのローカル ループバック アドレスにポート 21 でバインドしました。
- FTP サイトで SSL (Secure Sockets Layer ) を必要とすることを選択し、自己署名入り証明書を選択しました。
- 基本認証を有効にして、ローカル管理者アカウントの読み取りアクセスおよび書き込みアクセスの承認規則を作成しました。
FTP の SSL ポリシーはサイトごとにカスタマイズできます。コントロール チャネルとデータ チャネルで異なる設定を指定できます。この手順では、すべてのユーザー資格情報が暗号化されるように FTP サイトの追加の SSL 設定を構成します。この設定は、他のすべての FTP 通信が暗号化されていない場合でも有効です。
- IIS 7.0 マネージャーに移動します。手順 1 で作成した FTP サイトのノードをクリックします。すべての FTP 機能のアイコンが表示されます。
- SSL オプションを構成するには、[FTP SSL Settings] アイコンをダブルクリックして SSL 設定機能ページを開きます。
- [FTP SSL Settings] ページが表示されたら、[Custom] オプションを選択し、[Advanced] ボタンをクリックします。
- [Advanced SSL Policy] ダイアログ ボックスが表示されたら、次の手順を実行します。
- コントロール チャネルの [Require only for credentials] オプションを選択します。注 : この設定によって、すべてのユーザー名およびパスワードを SSL で暗号化することが要求されます。ただし、その他のすべてのコントロール チャネルの通信を暗号化するかどうかはクライアントが選択できます。
- データ チャネルの [Allow] オプションを選択します。注 : この設定では、データ チャネルの通信を暗号化するかどうかをクライアントが選択できます。
- 上記の手順を完了したら、[OK] をクリックします。
- [FTP SSL Settings] ページで、[操作] ウィンドウの [適用] をクリックし、SSL 設定を保存します。
この手順で完了した項目を以下にまとめます。
- コントロール チャネルの SSL ポリシーを構成して、すべてのユーザー資格情報を暗号化することを要求しました。また、他のすべてのコントロール チャネルの通信を暗号化するかどうかは FTP クライアントが決定できるようにしました。
- データ チャネルの SSL ポリシーを構成して、FTP クライアントがデータ チャネルの通信を暗号化するかどうかを決定できるようにしました。
手順 1 では、管理者アカウントでアクセスできる FTP サイトを作成しました。手順 2 では、コントロール チャネルの SSL ポリシーを構成して、すべてのユーザー資格情報を暗号化することを要求しました。また、コントロール チャネルおよびデータ チャネルの他のすべての通信については、暗号化するかどうかを FTP クライアントが選択できるようにしました。
SSL 対応の FTP クライアントを使用して FTP サーバーにログインする際、FTP サーバーは以下の明示的なセキュリティ オプションをサポートします。
- TLS-C/TLS - RFC2228 の既定に従って、接続で TLS を使用します。データ接続は暗黙的には保護されません。
- TLS-P/SSL - 接続で TLS を使用します。データ接続は暗黙的に保護されます。
これらの設定は、ほとんどのサードパーティ製 FTP クライアントで SSL 接続オプションを指定するときに構成できます。
IIS 7.0 構成ファイルを編集して、既存の Web サイトに SSL ベースの FTP 発行を追加することもできます。
注 : applicationHost.config ファイルの編集には、完全な管理アクセス許可が必要です。次のいずれかの方法を使用してください。
- ローカルの "administrator" アカウントを使用してコンピューターにログインします。
または
- ローカルの "administrator" アカウント以外の管理アクセス許可を持つアカウントを使用してログインする場合は、"管理者として実行" オプションを使用してメモ帳を開きます。
注 : Windows Vista および Windows Server 2008 オペレーティング システムでは、ユーザー アカウント制御 (UAC) セキュリティ コンポーネントにより、applicationHost.config ファイルへのアクセスが制限されるため、上記のいずれかの手順が必要になります。UAC の詳細については、次のドキュメントを参照してください。
以下の手順では、既定の Web サイトに FTP 発行を追加するために必要なすべての設定について説明します。
- [サーバー証明書] 機能で、"My FTP Certificate" という名前の証明書をダブルクリックします。
- [詳細] タブをクリックします。
- フィールドをスクロールして [拇印] の値を見つけます。
- [拇印] の値を選択します。データは次のように表示されます。
"f0 1e d2 3c b4 5a 96 78 87 69 a5 4b c3 2d e1 0f f0 1e d2 3c" - テキスト ボックス内の 16 進データをコピーしてクリップボードに貼り付けます。Windows のメモ帳を開いて、そのデータを空のドキュメントに貼り付けます。
注 : この情報は後で使用します。
Windows のメモ帳などのテキスト エディターを使用して applicationHost.config ファイルを開きます。このファイルは、既定では %SystemRoot%\System32\inetsrv\config フォルダーにあります。
既定の Web サイトのセクションを見つけます。このセクションは次の例のようになっています。
<site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> </site>
bindings コレクションの中に新しい binding 要素を作成します。この新しい binding 要素の protocol 属性の値として「ftp」を設定し、bindingInformation 属性のポート値を「21」に変更します。既定の Web サイトの設定は、次の例のようになります。
<site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:" /> <binding protocol="ftp" bindingInformation="*:21:" /> </bindings> </site>
<bindings> の終了タグの下に <ftpServer> セクションを追加します。このセクションでは認証設定と SSL 設定を指定します。注 : URL ごとに構成可能な Web サイトの認証とは異なり、FTP サイトの認証設定はサイトレベルで構成されます。
<ftpServer> <security> <authentication> <anonymousAuthentication enabled="false" userName="IUSR" /> <basicAuthentication enabled="true" /> </authentication> <ssl serverCertHash="" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" /> </security> </ftpServer>
自己署名入り SSL 証明書内の拇印データをコピーして、SSL 要素の serverCertHash 属性に貼り付けます。拇印データからすべてのスペースを削除します (注 : 16 進データを大文字に変換しないと、後で IIS マネージャーに表示されません)。既定の Web サイトの設定は、次の例のようになります。
<site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:" /> <binding protocol="ftp" bindingInformation="*:21:" /> </bindings> <ftpServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <basicAuthentication enabled="true" /> </authentication> </security> <ssl serverCertHash="F01ED23CB45A96788769A54BC32DE10FF01ED23C" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" /> </ftpServer> </site>
applicationHost.config ファイルの一番下までスクロールし、既定の Web サイト用の location セクションを追加して承認設定を指定します。注 : この例に示すように、FTP サイトの承認設定は URL ごとに構成します。
<location path="Default Web Site"> <system.ftpServer> <security> <authorization> <add accessType="Allow" users="administrator" permissions="Read, Write" /> </authorization> </security> </system.ftpServer> </location>
applicationHost.config ファイルを保存します。
問題がなければ、SSL ベースの FTP クライアントを使用して既定の Web サイトにログインできます。
この作業では、IIS 7.0 構成ファイルを編集して、既定の Web サイトに SSL ベースの FTP 発行を追加しました。この作業で完了した項目を以下にまとめます。
- 既定の Web サイトに FTP バインドを追加しました。
- 既定の Web サイトの FTP 基本認証を有効にし、FTP 匿名認証を無効しました。
- コントロール チャネルおよびデータ チャネルのすべての通信で SSL を要求するようにサイトを構成しました。
- 既定の Web サイトで管理者アカウント向けに読み取り/書き込みアクセスを構成しました。