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

IISの標準FTPバナー・メッセージを表示させない

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

デジタルアドバンテージ 中塚 寛幸
2005/08/20
 
対象ソフトウェア
Internet Information Services 6.0
対象OS
Windows Server 2003
IISのFTPサイトに接続すると、標準のFTPバナー・メッセージとして「Microsoft FTP Service」が表示される。
OSが簡単に判別されることによってハッキングやDoS攻撃の対象になりやすく、セキュリティ上の問題が大きい。
IISの設定ファイルを書き換えることによって標準バナーの表示を抑止できる。
 
解説

 IISのFTPサーバ機能をデフォルトで設定し、FTPサイトのプロパティでメッセージを適宜設定してあるftp.sample.comというサーバがあるとする。このサーバは、実はセキュリティ上の問題となる情報を標準で表示しているのだ。まず別のマシンのコマンド・プロンプトからftpコマンドを起動してftp.sample.comに接続し、表示を確認してみる。

C:\>ftp
ftp>open ftp.sample.com …ftp.sample.comに接続
Connected to ftp.sample.com. …ftpコマンドのリダイレクト
220 Microsoft FTP Service …IISから返ってきた標準バナー
220 Test site. (ftp.sample.com) …FTPサイトのプロパティで設定したバナー
User (example.hoge.com:(none)): …ユーザー名入力メッセージ(カッコ内はFTP接続を要求したマシン名)

 このやりとりで注目すべきポイントは、ユーザーがログインする以前にIISから標準FTPバナー・メッセージとして「220 Microsoft FTP Service」という文字列が返信されていることだ。攻撃者はハッキングのための情報収集段階でOSの種類の判別(OSフィンガー・プリント採取と呼ばれる)を行う。サーバに接続した段階、つまりログインのための認証要求よりも前の段階で、FTPサーバがWindowsで稼働していること、IISのFTPサーバ機能を利用していることが攻撃者に知られてしまう。それにより、WindowsやIISに特化した攻撃手段を使われる危険性が高まり、セキュリティ的に望ましくない。正規ユーザーからのFTP接続に支障が出ない方法を使い、攻撃の足掛かりとなる情報を無条件に表示している標準FTPバナーを早急に止めるべきだろう。

 FTPサーバとテキスト・ファイルをASCIIモードで送受信する場合には、改行コードの変換が必要となるため、OS種別の判定ができないと支障が生じることがある。OSに依存する改行コード種類を識別するのにバナーを利用しているFTPクライアントも一部存在するようだが、ログイン後に「SYST」コマンドを発行することにより、サーバから環境情報を取得する方法がある。実際にSYSTコマンドからの戻り値でサーバOSを判定しているFTPクライアントも多いようだ。FTPサイトの利用者が使用しているFTPクライアントの実装依存なので、標準FTPバナーを抑止する前に確認が必要だろう。ローカル・エコーを有効にしたTELNETクライアントを使って上記のFTPサーバにアクセスし、SYSTコマンドの動作を確認してみた(ftpクライアントで「system」や「quote syst」コマンドを実行してもよい)。

C:\>telnet
Microsoft Telnet>open ftp.sample.com 21 …21番ポート(FTPのコントロール用ポート)を指定してftp.sample.comに接続
220 Microsoft FTP Service …IISから返ってきた標準バナー
220 Test site. (ftp.sample.com) …FTPサイトのプロパティで設定したバナー
USER hogehoge …ユーザー名「hogehoge」を「USER」コマンドでサーバに送信
331 Password required for hogehoge. …サーバからのパスワードを要求するメッセージ
PASS password …ユーザー「hogehoge」に対応するパスワード「password」を「PASS」コマンドで送信
230 User hogehoge logged in. …ユーザー「hogehoge」のログイン成功メッセージ
SYST …FTPサーバの環境情報を「SYST」コマンドで要求
215 Windows_NT …システム・タイプがWindows OSであることを示すメッセージ

 このように、標準FTPバナーによってWindows上のIISで稼働していることがログイン以前で判別できなくても、「SYST」コマンドの戻り値「215 Windows_NT」により判別できるので、運用上の問題はないことが分かる。なお、ログインする前にSYSTコマンドを発行してもエラーとなり、先にログインしなければ利用できない。

 IISでは、ほぼすべての設定項目やプロパティをMetaBaseという独自ファイルで保存している。IIS 5.1(Windows XPに付属)以前では、MetaBase.binというバイナリ形式のファイルだったが、IIS 6.0(Windows Server 2003)からはMetaBase.xmlとMbschema.xmlという2つのXML形式のファイルが使われるよう変更された。これにより、プロパティを拡張したり、IIS稼働中に設定を変更したりすることが容易になっている。標準FTPバナーの抑止は、このMbschema.xml上のMetaBaseキーを1つ追加し、設定変更を反映させることにより可能となる。

 標準FTPバナーの抑止方法は以下のサポート技術情報に詳しいが、手元で確認した限りでは、IIS 5.0(Windows 2000)/5.1(Windows XP)では設定できなかった。


操作方法

 IISの設定ファイルを変更する前に、稼働中のIISに対して設定変更が可能であるかどうかを確認する。これはIIS 6.0で導入された機能で、有効にしておけば運用中のIISサービスを停止せずに設定を変更できる。

IIS稼働中の設定変更を有効にする
[管理ツール]−[インターネット インフォメーション サービス(IIS)マネージャ]を起動し、サーバを選択して右クリックして[プロパティ]を表示させる。
  ここにチェックが入っていることを確認する(デフォルトではチェックが入っている)。
  [OK]をクリックする。

 次に、IISの設定情報が保存されているMbschema.xmlファイルをメモ帳などで編集する(MetaBase.xmlの変更は不要)。Mbschema.xmlファイルは、%SystemRoot%\system32\inetsrvフォルダに保存されている。「IIsConfigObject」は通常先頭付近に存在するが、もし見つからない場合は、以下の文字列を検索するとよいだろう。

Collection         InternalName ="IIsConfigObject"

 ファイルを開き、「IIsConfigObject」コレクション以下に標準FTPバナーを止めるプロパティを追加する。

IIsConfigObjectへのプロパティ追加
%SystemRoot%\system32\inetsrvフォルダにあるMbschema.xmlファイルをメモ帳で開き、IIsConfigObjectというCollectionに、以下のプロパティをのように追加する(実際は改行せずに1行で記述する)。なお、当該Collecitonの下の階層であれば、Propertyの記述場所はどこでもよい。
<Property InternalName ="SuppressDefaultFTPBanner" ID="5017" Type="BOOL" UserType="IIS_MD_UT_SERVER" Attributes="INHERIT" MetaFlags="CASEINSENSITIVE" MetaFlagsEx="CACHE_PROPERTY_MODIFIED" DefaultValue="FALSE" EndingNumber="0"/>

 次に、同じMbschema.xmlファイルの「IIsFtpService」と「IIsFtpServer」コレクションの2カ所に以下の記述を追加する(こちらも実際は改行せずに1行で記述する)。

<Property InheritsPropertiesFrom ="IIsConfigObject:SuppressDefaultFTPBanner"/>

 上記のプロパティの追加を終えたら、Mbschema.xmlを保存する。このプロパティを有効にするため、IIS管理用にあらかじめ用意されている設定用スクリプトを利用する。設定スクリプトは%SystemDrive%\Inetpub\AdminScripts以下に用意されている。そのうちのadsutil.vbsというスクリプトを利用して設定変更を行う。VBScriptでコーディングされているスクリプト・ファイルだが、実行環境はWindows Scripting Hostなので、cscriptから呼び出す点に注意を要する。

 まず、IISがFTPサイトを管理している内部的な番号(識別子)を以下の例のように確認する。

C:\Inetpub\AdminScripts>cscript adsutil.vbs enum msftpsvc …enum(列挙)オプションでFTPサービスを指定
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
…(中略)…
[/msftpsvc/1] …「既定のFTPサイト」に割り当てられた識別子
[/msftpsvc/1786339847] …目的のサイトに割り当てられた識別子
[/msftpsvc/Info] …デフォルトでFTPサービスが所有する管理情報用の識別子

 複数のサイトを、ポートを変えて同じサーバ・マシンで運用している場合には、上記の方法では目的のサイトに割り当てられた識別子を特定できない。その場合は、[管理ツール]−[インターネット インフォメーション サービス(IIS)マネージャ]から確認する。

FTPサイトの識別子を確認する
FTPサイトは、IISによって内部的に管理するための識別子が付けられている。サイトごとのプロパティ設定は、この識別子に対して反映される。確認方法は次のとおり。(1)[管理ツール]−[インターネット インフォメーション サービス(IIS)マネージャ]を起動する。(2)FTPサイトが稼働しているサーバのツリーを開く。(3)[FTPサイト]を開く。(4)当該サイトの赤枠部分の情報を確認する。

 次にコマンド・プロンプトから以下の例のように実行することにより、標準FTPバナーを抑止したいサイトの識別子を指定して、adsutil.vbsから先ほど追加したプロパティを有効に設定する。

C:\Inetpub\AdminScripts>cscript adsutil.vbs set msftpsvc/1786339847/SuppressDefaultFTPBanner 1 …先ほど確認した識別子のサイトに対し、Mbschema.xmlで追加したプロパティを有効「1」に設定
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

SuppressDefaultFTPBanner        : (BOOLEAN) True …有効(True)に設定されたことを示すメッセージ

 以上で指定したFTPサイトに対して標準バナーを表示しないように設定を完了した。最後に設定を稼働中のIISに反映させるため、コマンド・プロンプトから以下のように操作するなどしてIISを再起動する。

C:\Inetpub\AdminScripts>iisreset …IIS制御用のツール「iisreset.exe」の起動

停止しようとしています...
インターネット サービスの停止に成功しました
開始しようとしています...
インターネット サービスの再起動に成功しました

 結果を確認するために実行例で使用したサイトにftpコマンドからアクセスすると、以下のように標準FTPバナーが抑止されていることが分かる。End of Article

ftp>open ftp.sample.com …ftp.sample.comに接続
Connected to ftp.sample.com. …ftpコマンドのリダイレクト
220 Test site. (ftp.sample.com) …FTPサイトのプロパティで管理者が設定したバナー
User (example.hoge.com:(none)): …ユーザー名入力メッセージ(カッコ内はFTP接続を要求したマシン名)
 
  関連リンク
  FIX: You cannot suppress the default FTP banner for the FTP service[英語](マイクロソフト サポート技術情報)
     
「Windows TIPS」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間