Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

IIS 6.0のFTPサーバでユーザー・フォルダを分離する(基本編)

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2005/07/02
 
対象OS
Windows Server 2003+IIS 6.0
IIS 5.0までのFTPサービスでは、ログオンしたユーザー以外のフォルダも見ることができた。
IIS 6.0のFTPサービスでは、ユーザーごとにフォルダを完全に分離し、ほかのユーザーのフォルダから隔離する機能が導入された。
ユーザーの分離機能を利用するためには、ユーザー用フォルダを指定された構造で作成する必要がある。
 
解説

 FTPサービスは、インターネットの初期のころから利用されているサービスである。現在では、HTTPプロトコルを使ったWebサイトが一般的であるが、定型的なバッチ・ファイル転送やWebサイトへのデータ・アップロード、大規模なダウンロード・サイトなどでは、まだまだFTPも広く利用されている。

 Windows Server OSに搭載されているIISでもこのFTPサービスが利用できるが、UNIXなどで一般的に使われているFTPサービスと比べると、やや機能が不足していた。中でも特に、ユーザーごとにフォルダを隔離するという機能がないのは問題だと考える管理者も少なくない。

 UNIXなどのFTPサービスでは、例えば「user01」がFTPサーバにログオンすると、そのユーザーからは、自分のフォルダ以外はアクセスできないように設定することができる。たとえ「cd /」というコマンドを実行しても、ほかのユーザーのフォルダ(例えば/user02や/user03などのフォルダ)を見ることもできないし、存在していることを知ることもできない。このように、各FTPユーザーを完全に隔離することができる。

 だがIISのFTPサービスには、これに相当する機能がない。ユーザー名と同じ名前のフォルダを作成しておくと、ログオンしたときに、自動的にそのフォルダへ移動するという機能は持っているが、これはほかのユーザーの情報を隠ぺいするためには利用できない。例えばuser01がログオンすると、/user01というフォルダがデフォルト・フォルダになるのだが(cd /user01が実行された状態になる)、「cd /」を実行すると、/user01だけでなく、/user02や/user03というフォルダ名も見えてしまうのである。

 社内用ならば、同一グループ内のフォルダが見えても問題は少ないだろうが(ユーザーが混乱するのは別としても)、例えば複数のFTP/Webサイトをホスティングしているようなケースでは、セキュリティ的にも望ましくない。もちろん社内であっても、情報漏えいなどを考えると、完全にユーザーごとに隔離できることが望ましい。

 このような要望を受けて、Windows Server 2003に搭載されているIIS 6.0のFTPサービスでは、新しく「FTPユーザーの分離機能」が導入された。これを利用すると、ユーザーごとにアクセス可能なフォルダを完全に分離し、セキュリティを維持できるようになっている。本TIPSでは、この機能の利用方法について解説する。

 ただしこのユーザーの分離機能には、次の2つのモードがある。

  • 「ユーザーを分離する(Isolate users)」モード
  • 「Active Directoryを使ってユーザーを分離する(Isolate users using Active Directory)」モード

 前者は、非常に単純な形式のユーザー分離モードである。Active Directoryがなくても利用できるが、ユーザーのホーム(ユーザーがFTPサイトにログオンしたときに利用できるフォルダ)は、基本的には1カ所に集中させておかなければならない(ファイル共有やシンボリック・リンクなどを使って分離させることも可能だが、ここでは触れない)。

 これに対して後者は、Active Directoryのスキーマを拡張して、ユーザーごとのホームを登録しておくモードである。ホームを1カ所に集中させておく必要はなく、Active Directoryでフォルダの場所を集中管理できるので、より大規模なサイトに向いている。

 本稿では前者の方法について解説する。後者の方法についてはTIPS「IIS 6.0のFTPサーバでユーザー・フォルダを分離する(Active Directory編)」を参照していただきたい。


操作方法

手順1―ユーザー別のフォルダを作成する

 ユーザー分離機能を利用するためには、あらかじめ決められた名前と構造を持つフォルダを用意しておく必要がある。まずFTPのルートとなるフォルダを作成しておき(デフォルトの「C:\Inetpub\ftproot」をそのまま使ってもよいし、別のフォルダを用意してもよい)、さらにその中に、以下の名前のフォルダを用意する。ここでは仮に「C:\userhome」フォルダを利用するが、ディスクの空き領域などを考えて、別ドライブ上に作成するものよいだろう。

 FTPでログオンする場合は、ローカル・コンピュータのユーザー・アカウントを利用するか、それとも(ローカル・コンピュータが属している)ドメインのユーザー・アカウントを利用するかの2とおりが考えられる。

■ケース1―ローカル・ユーザー・アカウントでFTPを利用する場合
 ローカル・ユーザー・アカウントを利用する場合は、先ほどのFTPのサイト・ルートのフォルダの中に新しく「LocalUser」というフォルダを作成する。そしてさらにその下に、各ユーザー名を付けたフォルダを作成する。例えばuser01なら「LocalUser\user01」となるようにフォルダを作成する。そして、ローカル・コンピュータ上にユーザーのアカウントを作成し、このフォルダにユーザーごとに適切なアクセス権を付けておく。

■ケース2―ドメイン・ユーザー・アカウントでFTPを利用する場合
 FTPサーバのコンピュータがドメインに属しており、そのドメインのユーザー・アカウントでFTPサービスにログオンするなら、まずドメイン名(ドメインの省略形の名称)のフォルダを作成し、さらにその下にユーザー名のフォルダを作成する。例えば「Sales」ドメイン(FQDNはsales.example.co.jpとする)の「user01」なら、FTPのサイト・ルートの下に、「Sales\user01」というフォルダ階層を作成する。

手順2―匿名ユーザー用フォルダの作成

 FTPサービスでは一般的に、「匿名ユーザー」と呼ばれる特別なユーザー・アカウントが利用できるようにすることが多い。匿名ユーザーは、だれでもFTPを利用できるようにするための特別なアカウントであり、ログオン名としては「ftp」もしくは「anonymous」が使われる。匿名ユーザーの場合、実際にはパスワードは不要であるが、ユーザーの電子メール・アドレスをパスワードとして入力して、だれが利用したかがログに残るようにするのがマナー(ネチケット)とされている。

 この匿名ユーザーを利用する場合は(使わない場合はこの手順2は不要)、「LocalUser」フォルダの下に「Public」というフォルダを作成し、匿名ユーザー用のフォルダとする。そして匿名ユーザー用に適切なアクセス権を付けておく。一般的には、読み取りのみ許可し、書き込みは禁止にしておくことが多い。

 以上の2つの手順で次のような構造のフォルダが作成されているはずである。

FTPのユーザー分離機能向けのフォルダ設定
あらかじめこのような構造のフォルダを作成しておく。もしフォルダが存在しないと、ログオンできない。
  ユーザー用のフォルダ。これはローカルのディスク上のフォルダであるが、ネットワーク上の共有フォルダでもよい。すべてのユーザー・フォルダはこの下にまとめて作成しておく必要がある。
  ローカルのユーザー・アカウントを使ってログオンする場合のフォルダ。LocalUserという名前でなければならない(大文字/小文字は関係ないが、念のためにこのとおりにしておく)。
  ローカルのユーザー・アカウント名と同じ名前のフォルダを、LocalUserの下に作成しておく。それぞれ適切なアクセス権を付けておく。
  Publicフォルダ。FTPの匿名ユーザー(ftpもしくはanonymous)で使用されるフォルダ。
  Salesドメインのユーザーのためのフォルダ。ドメインの省略名と同じ名前のフォルダ(これはActive Directoryのインストール時に変更可能)を作成しておく(例:sales.example.co.jpドメインならSalesになる)。
  ドメインSalesのユーザー・アカウントのためのユーザー・フォルダ。例えばFTPにログオンする場合のユーザー名が「sales\user11」か「user11@sales.example.co.jp」なら、Sales\user11フォルダが利用される。

手順3―FTPサイトの新規作成

 ユーザー用フォルダを作成したら、次はFTPのサイトを作成する。ユーザー分離機能は、FTPの「サイト」ごとに設定する機能であり、1度ユーザー分離モードで作成したサイトは、ほかのモードに変更することは(GUI操作では)できないし、仮想ディレクトリごとにこのモードを設定することもできないので注意していただきたい。

 FTPサイトを新規作成するには、まずFTPの管理ツール([管理ツール]の[インターネット インフォメーション サービス (IIS) マネージャ])を起動し、[FTP サイト]を右クリックして、ポップアップ・メニューから[新規作成]−[FTP サイト]を選択する。

FTPサイトの新規作成
ユーザー分離機能はFTPの「サイト」ごとに設定する機能なので、デフォルトのサイトとは別に、新しくサイトを定義する。
  FTPサイトの定義はこの下に作られる。
  デフォルトのFTPサイト。これは停止するか、削除して、新しくユーザーの分離モードを有効にしたFTPサイトを作成する。
  [FTP サイト]を右クリックして、新規のFTPサイトを作成する。

 すると[FTP サイトの作成ウィザードの開始]ダイアログが表示されるので、適当なFTPのサイト名と、FTPサイトで使用するIPアドレス/ポート番号を入力して、先へ進める。すると次のダイアログが表示されるので、[ユーザーを分離する]を選択する。

ユーザーの分離モードの選択
IIS 6.0のFTPサイトの作成ウィザードでは、新しくユーザーの分離モードを選択することができるようになった。
  従来のモード。ユーザーごとに同じルート・フォルダを共有するモード。
  簡易版のユーザー分離モード。すべてのユーザーのホームが同じフォルダの下に作られる。ローカル・コンピュータのアカウントとActive Directoryに登録されたアカウントの両方が利用可能。
  Active Directoryに登録されたアカウントとホーム情報を利用するモード。柔軟性は高いが、Active Directoryが必須。

 ウィザードの次の画面ではFTPのフォルダを指定するが、先ほど作成したFTPサイトのルートを指定しておく。先の例では「C:\userhome」を指定する(LocalUserやドメイン名のフォルダを含む、親のフォルダを指定すること)。

ユーザー用フォルダの指定
各ユーザー用ホームの親となるフォルダを指定する。
  ホームの場所。これはローカルのフォルダであるが、ネットワーク上の共有フォルダも指定可能。

手順4―FTPサイトの開始

 新規に作成されたFTPサイトは、デフォルトでは停止状態になっているので、開始状態に変更する。ただし、FTPサービスをインストールした直後では、「既定の FTP サイト」というデフォルトのサイトが作成され、開始状態になっているはずである。そこで、まずこのデフォルト・サイトを停止後(もう不要なら削除してもよい)、いま作成したサイトを開始させる。

FTPサイトの開始
既存のFTPサイトは停止して、新しく作成したサイトを起動する(ポート番号を変更すれば共存可能)。
  デフォルトのFTPサイト。停止するか、削除する。
  新しく作成したFTPサイト。
  これをクリックすると、サイトが起動する。

FTPサイトへのログオン

 以上でサイトの設定は終了である。あとはFTPサイトへログオンすれば、自動的にユーザーごとのフォルダへ誘導され、しかもそのフォルダの外へ出ることはできない。ただしほかに仮想フォルダが定義してあれば、例えば「cd /public」のようにして移動することはできる(これは従来と同じ)。

C:\>ftp 192.168.2.200 …FTPサービスへ接続する
Connected to 192.168.2.200.
220 Microsoft FTP Service
User (192.168.2.200:(none)): user01 …ユーザー名
331 Password required for user01.
Password: …パスワード
230 User user01 logged in.
ftp> pwd …現在のフォルダの表示
257 "/" is current directory. …すでにルートにいる
ftp> dir …ファイルの一覧
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
06-28-05  03:52PM               154112 file-of-user01.doc
06-28-05  03:55PM                 1072 file-of-user01.txt
226 Transfer complete.
ftp: 118 bytes received in 0.00Seconds 118000.00Kbytes/sec.
ftp> cd / …ルートへ移動する
250 CWD command successful.
ftp> pwd
257 "/" is current directory. …すでにルートであり、ほかへは移動できない
ftp> quit

C:\>ftp 192.168.2.200
Connected to 192.168.2.200.
220 Microsoft FTP Service
User (192.168.2.200:(none)): user99 …フォルダが存在しないユーザーでログオンしてみる
331 Password required for user99.
Password:
530 User user99 cannot log in, home directory inaccessible.
Login failed. …ログオンできない
ftp>quit

C:\>ftp 192.168.2.200
Connected to 192.168.2.200.
220 Microsoft FTP Service
User (192.168.2.200:(none)): sales\user11 …Salesドメインのuser11でログオンしてみる
331 Password required for sales\user11.
Password:
230 User sales\user11 logged in.
ftp> pwd
257 "/" is current directory.
ftp>

 ログオンする場合のユーザ名は、ローカル・アカウントの場合は単に「user01」や「user02」とすればよいが、ドメインのアカウントの場合は「Sales\user11」や「user12@sales.example.co.jp」のように、ドメイン名付きで指定すること。

Windows Server 2003 SP1のアクセス・ベースのディレクトリの列挙機能との関係

アクセス・ベースのディレクトリ列挙ABE

 なお、Windows Server 2003 SP1で新しく導入された「アクセス・ベースのディレクトリ列挙(ABE)機能」を利用すれば、アクセス権のないフォルダ名を隠ぺいすることができるが、このユーザー分離機能とはやや目的や意味が違うので、混同しないようにしていただきたい(ABEについて関連記事参照)。

 ABEでは、アクセス権のないファイルやフォルダの一覧は隠ぺいされるが、もしパス名が分かっていてアクセス権があればアクセスできる可能性がある。それに対してこのユーザーの分離機能では、FTPアクセス時にはルートそのものが変更されるので、ほかのユーザーのファイルのパス名が分かっていてもアクセスすることができず、安全性が高い。必要に応じて使い分けたり、併用したりしてほしい。End of Article

関連記事(Windows Server Insider)
Windows TIPS:FTPの仮想ディレクトリに対応するフォルダを作成する
Windows TIPS:FTPサーバでユーザー・フォルダを設定する
Windows TIPS:IIS 6.0のFTPサーバでユーザー・フォルダを分離する(Active Directory編)
Windows TIPS:IIS 6.0のFTPサーバでユーザー・フォルダを分離する(基本編)
  Windows Server 2003完全ガイド―アーキテクチャを一新した新世代アプリケーション・サーバ
   
  関連リンク
  FTP ユーザーを分離する(マイクロソフト 技術ドキュメント)
 

How To Set Up Isolated Ftp Site[英文](マイクロソフト サポート技術情報)

     
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間