最近、セキュリティ対策のため、新しいホットフィックスが出るたびに適用を行なっているのですが、多数のホットフィックスを適用しているため、抜けが発生しているのではないか不安です。Windows NT/2000で不足しているホットフィックスを簡単に知る方法はないでしょうか?
最近MicrosoftからリリースされたHfNetChkを利用することで、不足しているホットフィックスの検出を簡単に行なうことが可能です。図1の説明にも見られるように、HfNetChkが対応しているプロダクトは、
となっています。Office や Exchange などは含まれませんが、これだけでも充分作業負荷の削減になるでしょう。
HfNetChkはMicrosoftから無償で提供されているツールで、執筆時点での最新版は 3.32 となっています。ダウンロードは、HFNetChkのWebページ(http://www.microsoft.com/japan/technet/security/tools/hfnetchk.asp )(図1)から行なって下さい。特に日本語版のようなものはありません。
図1: HFNetChk の Web ページ
HFNetChk本体のダウンロードと合わせて、HFNetChkが利用するデータファイルになるstksecure.exeをダウンロードします。同じページの下の方にダウンロードへのリンクがあるのですが、図xx2のようにちょっとわかりにくくなっていますので注意して下さい。このファイルは日本語と英語版とで異なっています。
図2: stksecure.exe のダウンロード
なお、どちらもMicrosoft社から提供されているSecurity Tool KitのCD中に含まれています。後述するようにHfNetChkはCDで提供されているものを利用した方がよい場合もあるのですが、基本的にはWebから最新版を入手するようにして下さい。
ダウンロードが完了したらインストールを行ないます。どちらも自己解凍形式になっていますので、アイコンをクリックすることによりインストールが行なえます。なおHfNetChkはコマンドラインツールなので、コマンドプロンプトから操作しやすいような位置に展開した方がよいでしょう。ここでは図3のようにC:\TEMPに展開しています。
図3-1: HFNetChk のインストール
図3-2: stksecure のインストール
それでは、HfNetChkを使ってみましょう。基本的な使い方は簡単です。管理者権限で
C:\temp> HfNetChk.exe -v -x stksecure.xml
のように、-xオプションでチェックに利用するXMLファイルを指定して実行するだけです。図4のように結果が画面上に表示されます。なお-xオプションをつけなかった場合、HfNetChkはInternet上から最新のXMLファイルをダウンロードしようとしますが、このファイルは英語版のファイルのため、正しくチェックが行なえません。日本語環境の場合、常にあらかじめXMLファイルをダウンロードした上で-xオプションで指定するという作業が必要になります。
また、-vは後述するように詳細情報を出力するオプションですが、何か理由がない限りはつけるようにすることをお勧めします。
図4: HFNetChk の実行例
このシステムは検証用にわざと特殊な構成にしてあります。
図4では、Windows 2000に関する「Warning(警告)」と「Note(注意)」が1つずつ、および「Patch Not Found」が2つあります。IIS 5.0とIE 5.5 SP2についてのホットフィックスはすべて適用されていると診断されています。なおこのマシンにはSQL Serverはインストールされていません。
警告や注意のものについて対処する必要があるかどうかはケースバイケースですので、参照されているKB(注1)を確認して判断して下さい。
注1: JP123456 という番号のKBは http://www.microsoft.com/japan/support/kb/articles/JP123/4/56.asp というURLで参照できます。
例えば、このシステムではTelnetサービスは起動していないため、MS01-031のTelnetサーバに関するセキュリティホールのホットフィックスは適用していません。
「Patch NOT Found」というメッセージは、セキュリティ確保に必須なホットフィックスが適用されていないということを意味します。このように警告された場合、原則としてそのホットフィックスは早急に適用する必要があります。HfNetChk自身は結果をレポートするだけですので、ホットフィックスの適用は手作業で行なってください。とはいえ、HfNetChkの出力を加工して必要なホットフィックスを適用するスクリプトを作成することもそれほど難しくないでしょう。
HfNetChkには表1に示すようなさまざまなオプションがあります。
C:\temp>hfnetchk -?
と入力することで、オプションの一覧が表示されますので、適宜参照して下さい。大半は出力を整えたり、後述するリモートマシンの状態チェックに利用したりするためのものですが、単体マシンのチェックでも有用なオプションを幾つか紹介しましょう。
オプション | 説明 |
---|---|
-about | hfnetchk自身に関する情報を出力します |
-h <hostname> | チェック対象のマシンのNetBIOSコンピュータ名を指定します。 デフォルトはlocalhostになります。 |
-fh <hostfile> | チェック対象のマシンのNetBIOS名を列挙したファイルを指定します。 コンピュータ名は1行に1つずつ、最大256台まで記述できます |
-i <ip_address> | チェック対象のマシンのIPアドレスを指定します。 |
-fip <ip_file> | チェック対象のマシンのIPアドレスを列挙したファイルを指定します。 IPアドレスは1行に1つずつ、最大256個まで記述できます。 |
-r <range> | チェック対象のIPアドレスの範囲を指定します。範囲は-r 192.168.1.1-192.168.1.254 のようにして記述します。 |
-d <domain_name> | チェック対象のドメイン名を指定します。 |
-n | 「ネットワークコンピュータ」中に現れるすべてのマシンをチェックします。 |
-history <level> | 明示的にインストールされた、あるいはインストールされていないホットフィックスを表示します。詳細はQ303215を参照して下さい。 |
-t <threads> | チェック時に利用するスレッド数を指定します。1から128の間の数値を指定して下さい。デフォルトは64です。 |
-o tab|wrap | 出力形式を指定します。デフォルトは wrap です。 |
-x <datasource> | ホットフィックスの情報が格納されたXMLファイルを指定します。 |
-s <supress> | NOTE および WARNING メッセージの出力を抑制するかどうかを指定します。詳細は本文を参照して下さい。 |
-z | レジストリのチェックを行ないません。 |
-nosum | チェックサムのチェックを行ないません。詳細は本文を参照して下さい。 |
-b | 必要最低限のチェックのみを行ないます。 |
-v | 詳細な情報を出力します。 |
-f <outfile> | 出力を格納するファイル名を指定します。 デフォルトは画面に出力を行ないます。 |
-u | リモートマシンのチェックを行なう場合、リモートマシンへの接続に用いるユーザ名を指定します。 |
-p | リモートマシンのチェックを行なう場合、リモートマシンへの接続に用いるパスワードを指定します。 |
-? | ヘルプメッセージを出力します。 |
nosumオプションを有効にすると、ファイルの正当性自体の確認が行なわれなくなるため、ホットフィックスにサイレントリリース(注2)があって、内部的なバージョンが上がっている場合などの検出ができなくなります。
注2: アナウンスなしに新しいバージョンがリリースされること。例えばMS01-013に対応するホットフィックスなどが、このようにしてアナウンスなしにバージョンアップされています。
当初はXMLファイルが日本語版のホットフィックスに充分対応していなかったため、このオプションは必ずつける必要がありました。その後XMLファイルの更新により、チェックサムも含めたホットフィックスの確認が可能になったのですが、HfNetChk 3.3以降では、HfNetChk側でシステムの言語を識別して、日本版OSだと自動的に-nosumオプションがついてしまうという実装になってしまっているため、XMLファイルが対応しているにも関わらず、チェックサムによるファイルの正当性の確認ができなくなっています。
従って、チェックサム付の確認を行ないたい場合は、Security Tool Kitsなどに付属しているHfNetChk 3.2を利用する必要がありますので、注意して下さい。
ただし、HfNetChk 3.2はローカルマシンのチェックを行なう際に、ローカルマシン上でServerサービスが起動している必要があるなどの別の制限事項もあります。そのため、現状では用途に応じて利用するバージョンを使い分けるようにして下さい。
HfNetChkではリモートマシンの状況を調査することも可能です。 リモートマシンを調査する時は、図5のように認証に利用するユーザ名、パスワードを各々-uと-pオプションで指定した上で、リモートマシンのコンピュータ名を指定してHfNetChkを実行します。多少時間は掛かりますが、ローカルマシンの場合と同様のチェックが行なわれます。
図5: リモートマシンの調査 C:temp\>hfnetchk -h remote_machine -u administrator -p password -v -x stksecure.xml
なおリモートマシンの指定方法は他にも表1で示したように幾つかの種類があります。ただし、-nや-dを指定した場合、思わぬ範囲のマシンまでチェックが行なわれる可能性があります。これらのオプションを指定する際は慎重に行なって下さい。チェックされるマシンの側ではRemote Registry Serviceが起動している必要がありますので、注意して下さい。
このようにHfNetChkはホットフィックスの適用状況を簡単に一覧できるツールとして非常に有用で、管理者必携のツールといって良いでしょう。HfNetChkに関しては、Microsoft社の技術情報「Q303215: Microsoft Network Security Hotfix Checker (Hfnetchk.exe) Tool Is Available」などにも利用方法に関する詳細な記述がありますので、併せて一読をお勧めします。
また、ホットフィックスの情報が記述されたXMLファイルは随時更新されますので、前述した http://www.microsoft.com/japan/technet/security/tools/hfnetchk.asp を確認するなどして随時新しいXMLファイルをダウンロードして利用するようにして下さい。