Windows PC を FTP サーバーとして使えるということを知っている人は少ないと思いますが、Vista 以降であれば、Microsoft FTP Service を使用して、十分実用に耐えられる FTP サーバーを立ち上げることができます。Windows PC の場合は、「ファイル共有」やリモートデスクトップの機能を使ってファイルのやり取りができるので、FTP を使う機会は少ないと思いますが、場合によっては便利な機能になります。
以下に、Microsoft FTP Service のインストールの手順をメモしておきます。
(1) Windows 10 の場合
検索ボックスで「Windows の機能」と入力して「Windows の機能の有効化または無効化」を選択します。「Windows の機能の有効化または無効化」のコントロールパネル(下の図)が表示されるので、「インターネット インフォメーション サービス」の「FTP サーバー」の「FTP サービス」にチェックして「OK」ボタンをクリックします。
(2) Windows 8/7 の場合
「スタートボタン」をクリックし、「コントロールパネル」、「プログラム」、「Windows の機能の有効化または無効化」の順でクリックします。「Windows の機能の有効化または無効化」のコントロールパネル(下の図)が表示されるので、「インターネット インフォメーション サービス」の「FTP サーバー」の「FTP Service」にチェックして「OK」ボタンをクリックします。
(3) Vista の場合
以下のサイトから、ソフトウェアをダウンロードします。ダウンロードしたソフトを実行して、次へをクリックしていくとインストールできます。
※ FTP 7.0 をインストールしている場合は、事前にサービスをアンインストールしておきます。アンインストールの手順は、(1) と同じ手順で、「Windows の機能の有効化または無効化」のコントロールパネルを立ち上げて、FTP サービスのチェックを外して、OKボタンをクリックします。
32ビット版 Microsoft FTP Service 7.5 for IIS 7.0 (x86)
64ビット版 Microsoft FTP Service 7.5 for IIS 7.0 (x64)
FTP の利用としては、大きく区分すると、サーバーへのファイルのアップロード等ファイルの管理のために使用する場合と、ファイルを配布するために使用する場合に分けられます。ここでは、ファイル管理用として設定します。
FTP サービスでは、FTPS や多数のユーザーを管理する機能を持っていますが、ここでは、ローカルエリアにある自宅サーバー用として設定します。FTP は、ユーザーID、パスワード、データを暗号化せずに通信回線上に流すため盗聴される危険がありますが、自宅サーバーの場合は外部に通信が出ることはないのでセキュリティ上の問題は少なくなります。ただし、ガンブラーウィルスが クライアントPC に感染した場合には通信が盗み取られるというような場合もあるので、ファイアーウォール(ブロードバンドルータ)で FTP ポートを外部に開放している場合は、FTPS を使用したり、万一サーバーが乗っ取られた場合のことを想定して、FTP に接続するユーザーは、管理者権限をもったユーザーではなく、標準ユーザー(ここでは、ftpuser を使用)にしておいた方がいいでしょう。ユーザーの設定は、「管理ツール」の「コンピュータの管理」の「ローカルユーザーとグループ」でおこなうことができます。
2-1.インターネット インフォメーション サービス(IIS)マネージャーを起動します。FTP サービスがインストールできている場合は、下の図のように、中央の機能リストににFTP の機能のアイコンが表示されるようになります。まず、FTP サイトを追加するため、左パネルのサーバーアイコンを右クリックして、「FTP サイトの追加」を選択します
2-2.「FTP サイトの追加」の設定ウィザードが開始されます。FTP サイト名には適当な名前を入力します。コンテンツディレクトリには、FTP サーバーのデフォルトのディレクトリである C:\inetpub\ftproot を設定していますが他のディレクトリに設定しても支障はありません。
2-3.最初のFTPサイトなので、バインドはデフォルトのままにします。SSL は使用しないので、「無し」にします。
2-4.認証は必要なので、「基本」にチェックをし、アクセスの許可は、「指定されたユーザー」を選択し、作成しておいたユーザー名を入力します。アクセス許可については、「読み取り」、「書き込み」の両方にチェックをします。
2-5.以上で、FTP サイトが作成されたので、Webサーバーのディレクトリを FTP で管理できるように、仮想ディレクトリを作成して追加します。下の図のように、作成した FTP サイトを選択して、右クリックをして、「仮想ディレクトリの追加」を選択します。
2-6.「仮想ディレクトリの追加」のダイアログが表示されるので、エイリアスには Web サーバーを区分する適当な名称を、物理パスにはWebサーバーの物理パスを入力して、OK ボタンをクリックします。
2-7.仮想ディレクトリの追加が終了したら、FTP のサイトを選択して、中央の機能一覧でで「FTPのディレクトリの参照」をクリックします。以下のような画面が表示されるので、「ディレクトリの表示オプション」で「仮想ディレクトリ」にチェックをします。こう設定すると、FTP クライアントで仮想ディレクトリも一覧表示されるようになります。
2-8. アクセス制御リスト(ACL)の設定
FTP クライアントから接続して、フォルダーの作成やファイルのアップロード等の作業ができるように、ユーザー ftpuser に対して、FTP サイトのルートディレクトリ及び仮想ディレクトリに「変更」のアクセス許可を与えます。基本認証の場合は、ユーザーがローカルマシンを使用したりファイル共有をしたりする場合と同様に、ユーザに対してACLを設定することにより、ファイルやフォルダに対するアクセス権を設定します。
2-9.以上でFTPサーバーの設定は終了です。FTP サーバーが正常に動作しているか確認します。コマンドプロンプトを起動して、ftp localhost とコマンドを打ち込みます。ユーザーとパスワードの入力を要求してくるので、設置したユーザーとパスワードを入力します。ログインできれば設定の確認が終了です。ftp localhost で接続できない場合、hosts ファイルの設定ができていないことがあるので ftp 127.0.0.1 も試してみてください。
2-10.Windows ファイアーウォールの設定
FTP サーバーの設定が終了したら、ファイアウォールを開放してやります。手順については、Windows ファイアーウォールの設定 - FTP にメモしました。
2-11. FTP Service 7.5 のその他の機能
FTP Service 7.5 には多くの機能があり、中央の機能リストから設定をすることができます。例えば、特定の IP からのアクセスのみを許可したい場合は、「FTP IPv4 アドレスとドメインの制限」を使用します(詳細は3-3)。
自宅サーバーに自宅以外から接続したいというような場合の設定についても基本的には、ローカルエリア内での設定と同じですが、セキュリティの確保のため、次の点を考慮して設定する必要があります。
3-1. ファイアーウォールの設定と FTP Service の設定(パッシブモードの場合のみ)
パッシブモードでインターネット経由で接続する場合には、ファイアーウォール(ブロードバンドルータ)にデータ転送用のための動的ポートの開放をする必要があります。その場合に既定の動的ポートの範囲(49152-65535)をすべて開けてしまうのは、気が引けるので、開放するポートを制限するようにします。開放するポートを制限した場合には FTP 7.5 サーバーでは、開放しているポート番号の範囲で待ち受けポートを起動する必要があるので、その範囲を「データーチャンネルのポート範囲」に設定するが必要があります。また、FTPS(FTP over SSL)を使用している場合やファイアーウォールでパケットのフィルター処理をしていない場合は、「ファイアーウォールの外部 IP アドレス」の設定もする必要があります。
設定の手順としては、IIS マネージャーを起動し、[接続] ウィンドウで、ツリー内のサーバーを選択します。次に、機能一覧で「FTP ファイアウォールのサポート」をダブルクリックします。なお、最初にサイトを選択して起動すると、「データーチャンネルのポート範囲」はサーバー単位での設定項目のため、グレーアウトになり設定の変更はできません。
「FTP ファイアウォールのサポート」の設定画面が表示されます。「データーチャンネルのポート範囲」に、ファイアーウォール(ブロードバンドルータ)で開放したポート番号の範囲を入力します。例えば51100から51109までの10ポートを開放したような場合には、以下の図のように入力します。「ファイアーウォールの外部アドレス」については、FTPS(FTP over SSL)を使用している場合やファイアーウォールでパケットのフィルター処理をしていない場合に外部アドレスを入力します。なお、「ファイアーウォールの外部アドレス」の設定で、サイト毎に異なる場合は、サイトを選択後に「FTP ファイアウォールのサポート」の設定画面を表示させるようにします。
Filezilla では、コマンドログが左上部に表示されます。その例が以下で、赤字の部分をみるとデータチャンネルの待ち受けポートの確認ができます。Passive Mode (10,160,43,140,192,153) の前4つの数字が IP アドレスなので、10.160.43.140 ということになりローカルのIPアドレスになっているので、このような場合には、「ファイアーウォールの外部アドレス」の設定をします。後ろ2つの数字がポート番号を表し、ポート番号が199×64+156=51100 ということで、ポート番号の設定はできていることがわかります。
状態: 184.72.20.228:21 に接続しています。..
状態: 接続が確立されました, ウェルカムメッセージを待っています。..
応答: 220 Microsoft FTP Service
コマンド: USER ftpuser
応答: 331 Password required for ftpuser.
コマンド: PASS ********
応答: 230 User logged in.
コマンド: OPTS UTF8 ON
応答: 200 OPTS UTF8 command successful - UTF8 encoding now ON.
状態: 接続されました
状態: ディレクトリー一覧を読み出しています。..
コマンド: PWD
応答: 257 "/" is current directory.
コマンド: TYPE I
応答: 200 Type set to I.
コマンド: PASV
応答: 227 Entering Passive Mode (10,160,43,140,199,156).
状態: サーバーは経路設定できないアドレスで受動的な返信を送信しました。代わりにサーバーのアドレスを使っています。
コマンド: LIST
応答: 150 Opening BINARY mode data connection.
3-2. FTPS(FTP over SSL)の使用
FTPでは、ユーザ名、パスワードが平文(暗号化されていない状態)で送信されるため、第三者に盗聴される危険性があります。FTPSは、通信を SSL で暗号化してその危険性を回避します。
FTP サービスでは、FTPS の設定を簡単におこなうことができます。設定については、FTP サービスで FTPS を使うにメモしました。
※Windows 8 及び Windows Server 2012 のFTPサービスにはバグがあって、FileZilla で FTPS を使ってファイルをアップロードするときにエラーが発生します。Microsoft のサポートにHotfix(http://support.microsoft.com/kb/2888853)があります。Windows 8.1 及び Windows Server 2012 R2 では、SP1でバグ修正がされているので問題なく動作します。
3-3. 接続可能なアドレスの制限
FTP サービス では、IPアドレスによるアクセス制限を行うことができます。ファイアーウォールでもアクセス制限を行うことができますが、FTP サービスでも簡単に制限をおこなうことができます。その手順については、以下のとおりです。
IIS マネージャーを起動し、[接続] ウィンドウで、ツリー内の FTP サイトを選択します。次に、機能一覧で「FTP IPv4 アドレスとドメインの制限」をダブルクリックします。
「FTP IPv4 アドレスとドメインの制限」が表示されます。既定ではすべてのアドレスからの接続が許可されるようになっているので、すべてのアドレスからの接続を拒否するようにするため、右側の操作の「機能設定の編集...」をクリックします。
以下の画面が表示されるので、「特定できないクライアントへのアクセス」を「許可」から「拒否」に変更して、OK ボタンをクリックします。
「FTP IPv4 アドレスとドメインの制限」の表示画面に戻るので、右側の操作の「許可のエントリの追加...」をクリックします。すると以下の画面が表示されるので IP アドレスを入力します。複数のアドレスから接続したい場合は、同じ作業を繰り返します。
3-4. 最大接続数の設定
FTPサイトの同時接続数は、既定では 4294967295 に設定されていますが、普通はそれほど必要がないので、最大同時接続数を必要数分に減らします。ただ、この設定は、セキュリティ上で効果をそれほど期待できるものではありません。
設定の手順については、IIS マネージャーを起動し、[接続] ウィンドウで、ツリー内の FTP サイトを選択し、右側の「操作」の「FTP サイトの管理」の「詳細設定...」をクリックします。以下の画面が表示されるので、「接続」を展開して、最大接続数の項目に必要数を入力して、OK ボタンをクリックします。
2. 及び 3. で説明した内容が理解できれば、ファイル公開用のための FTP サーバーの設定は簡単だと思います。「3. ファイル管理用のための FTP サーバーの設定(インターネット経由の場合)の場合」との設定の違いは、2-3. だけで、下の図のように、「認証」の欄は「匿名」に、「アクセスの許可」の欄は「匿名ユーザー」に、「アクセス許可」の欄は「読み取り」のみをチェックします。既定の匿名ユーザーは、IIS 7 の場合と同じで IUSR なので、FTP サイトのルートディレクトリ及び仮想ディレクトリにおいて、IUSR に「読み取り」及び「フォルダーの内容の一覧表示」の許可を与えればいいということになりますが、公開データでセキュリティに問題はないので、実務的な設定としては、IUSR が Users 及び Authenticated Users のグループに属することから、そのどちらかにその設定をすればいいことになります(大抵は設定ができています)。また、サーバーのリソース以上のダウンロードが想定される場合には、3-4 の最大接続数の設定をしておきます。
FTP サーバーを利用するためには、FTP クライアントが必要になります。FTP クライアントとしては、FileZilla が世界的に有名です。FileZilla は、オープンソースのFTP ソフトで高速な転送が可能です。
エクスプローラも FTP クライアントとして利用することができます。特に、自宅サーバーのように転送速度に問題がない場合は、快適に使用することができます。設定方法を、エクスプローラで FTP クライアント にメモしておきました。