Windows Server 2008 R2: Server Core 展開のベスト プラクティス

Server Core を使用すると、Windows Server のフル インストールを展開した場合と異なり、操作が単純になったり、攻撃範囲が狭まるなど、多くのメリットを享受できます。

Brien M. Posey

Windows Server 2008 と Windows Server 2008 R2 では、Server Core を使用すると、展開の懸念事項に対して非常に高い柔軟性がもたらされます。Windows Server 2008 と Windows Server 2008 R2 では、フル インストールまたは Server Core 構成で展開することが可能です。

Server Core 展開は、最小限のフットプリントを伴う Windows Server 展開の軽量版です。Server Core 展開には、Windows Server のフル インストールで必ずインストールされるコンポーネントの多くが含まれていません。そのため、Server Core には、さまざまな通説が存在します。この記事では、Server Core 展開を操作するためのベスト プラクティスを紹介しながら、このような通説のいくつかを覆していきたいと思います。これ以降で紹介する例はすべて Windows Server 2008 R2 に基づいたものです。

Server Core の構成

Server Core には「すべての構成をコマンド プロンプトで行う必要があるため構成が難しい」という有名な通説があります。さいわい、Server Core を構成しやすくするツールが、いくつか用意されています。

Windows Server 2008 R2 には、コマンド プロンプトで SCONFIG というコマンドを実行して起動できる、組み込みのユーティリティが同梱されています。このメニュー方式を採用したユーティリティでは、IP アドレスの指定、コンピューター名の変更、ドメインへの参加など、基本的な構成タスクを実行できます。

初期構成を大幅に簡略化する別のツールに、Core Configurator 2.0 があります (図 1 参照)。Core Configurator 2.0 を使用すると、SCONFIG コマンドよりも、初期構成を簡単に行えます。このツールには、SCONFIG コマンドと同じ機能が用意されているだけでなく、サーバーの役割を追加または削除したり、さまざまなコントロール パネルの設定を管理したりすることもできます。また、プロダクト キーを入力してサーバーのライセンス認証を行うことも可能です。Core Configurator 2.0 は、coreconfig.codeplex.com/releases/view/36678 (英語) からダウンロードできます。

Core Configurator では、Server Core を構成する GUI インターフェイスが提供される

図 1 Core Configurator では、Server Core を構成する GUI インターフェイスが提供される

制限される用途

Server Core では、提供されるサービスが限られるため、Windows Server 2008 R2 のフル インストール展開を利用して行えるすべての作業に対応しているわけではありません。Server Core では、限られた数の役割にのみ対応できます (既定では、役割サービスはインストールされません)。インストールできる役割は次のとおりです。

  • Active Directory 証明書サービス
  • Active Directory ドメイン サービス
  • Active Directory ライトウェイト ディレクトリ サービス
  • BranchCache (ホスト型キャッシュ)
  • DHCP サーバー
  • DNS サーバー
  • ファイル サービス
  • メディア サービス
  • 印刷サービス
  • Web サービス (IIS)

不可欠な修正プログラムの管理

Server Core では、フットプリントが非常に少ないため、Server Core をサーバーではなく、アプライアンスとして管理できると考える IT プロフェッショナルもいます。ですが、これは誤解です。というのも、システムで Server Core と Windows Server のフル インストール展開のどちらを実行していても、修正プログラムを管理することが必要不可欠な管理作業だからです。

しかし、Server Core のフットプリントは非常に少ないため、Windows Server の修正プログラムの多くは Server Core 環境に該当しません。Server Core を実行することで修正プログラム管理の負担を軽減することは可能ですが、その負担が完全になくなることはありません。

ベスト プラクティス アナライザー

マイクロソフトが推奨するベスト プラクティスに準拠した形で Server Core を展開するには、ベスト プラクティス アナライザーを使用することをお勧めします。ただし、GUI が表示されない状態では、この方法は少し複雑になる場合があります。ベスト プラクティス アナライザーでスキャンを実行する主な方法は 2 つあります。1 つは、Server Core のデスクトップからスキャンを直接実行する方法で、もう 1 つは、GUI を使用できる別のコンピューターからスキャンを実行する方法です。

1 つ注意すべき点は、Server Core には最小限のサービスしか用意されていないため、Server Core OS の構成に関するベスト プラクティスなどのようなものは存在しないということです。そのため、ベスト プラクティス アナライザーでは、サーバーの役割別にベスト プラクティスを定義しています。サーバーで役割を追加せずに Server Core OS のみを実行している場合、ベースライン スキャンは実行できません。

スキャン プロセスは、ベスト プラクティス アナライザーのモデルに基づいています。モデルは役割固有のもので、Hyper-V モデルや Active Directory モデルなどがあります。

コマンド ラインからスキャンを実行する

コマンド ラインからベスト プラクティス スキャンを実行する場合は、Windows PowerShell をインストールする必要があります。Windows PowerShell を最も簡単にインストールする方法は、SCONFIG コマンドを実行し、[リモート管理の構成] に続けて [Windows PowerShell を有効にする] を選択することです (図 2 参照)。

SCONFIG ユーティリティを使用すると Windows PowerShell を有効にできる

図 2 SCONFIG ユーティリティを使用すると Windows PowerShell を有効にできる

Windows PowerShell をインストールしたら、Windows PowerShell のサーバー マネージャーとベスト プラクティス アナライザーのコマンドレットをインストールする必要があります。これらのコマンドレットのインストールには、展開イメージのサービスと管理 (DISM) ツールを使用できます。

通常、DISM ツールは展開イメージの管理に使用しますが、/Online スイッチを使うことで、DISM ツールが実行中の OS に対して動作するように指示することができます。コマンド プロンプトで次のコマンドを実行すると、必要な Windows PowerShell コマンドレットをインストールできます (図 3 参照)。

DISM /Online /Enable-Feature /FeatureName:ServerManager-PSH-Cmdlets DISM /Online /Enable-Feature /FeatureName:BestPractices-PSH-Cmdlets

DISM コマンドを使用すると必要な Windows PowerShell コマンドレットをインストールできる

図 3 DISM コマンドを使用すると必要な Windows PowerShell コマンドレットをインストールできる

必要なコンポーネントの準備が整ったので、ベスト プラクティス スキャンを実行できます。Windows PowerShell 経由でスキャンを実行する必要があるため、PowerShell.exe コマンドを実行します。このコマンドを実行すると、コマンド プロンプト ウィンドウが Windows PowerShell ウィンドウに切り替わります。

次に必要な作業は、先ほど有効にしたコマンドレットのインポートです。それには、次の 2 つのシンプルな Windows PowerShell コマンドを使用します。

Import-Module ServerManager Import-Module BestPractices

すべての準備が整ったので、必要なベスト プラクティス アナライザーのモデルが適切に配置されているかどうかを確認する必要があります。これを確認するには、次のコマンドを実行します。

Get-BPAModel

結果は図 4 のようになります。結果が返されなかった場合、スキャンを実行しようとしてもベスト プラクティス アナライザーは動作しません。

Get-BPAModel コマンドを使用するとインストールされているモデルを確認できる

図 4 Get-BPAModel コマンドを使用するとインストールされているモデルを確認できる

次のコマンドを使用すると、ベスト プラクティス スキャンを最も簡単に実行できます。

Get-BPAModel | Invoke-BPAModel

このコマンド (図 5 参照) を実行すると、サーバーにインストールされているすべてのモデルに対して、ベスト プラクティス スキャンを実行できます。

モデルが適切に配置されていない場合は、ベスト プラクティス スキャンで結果が表示されない

図 5 モデルが適切に配置されていない場合は、ベスト プラクティス スキャンで結果が表示されない

結果は自動的に表示されないため、次のコマンドを実行して、結果を表示します。

Get-BPAModel | Get-BPAResult | Out-File "C:\BPA.txt"

このコマンドでは、スキャン結果を含むテキスト ファイルが作成されます。このファイルは、別のシステムにコピーするか、次のコマンドを使用して結果を確認できます。

Type C:\BPA.TXT

図 6 のようなスキャン結果が表示されます。

スキャン結果の例

図 6 スキャン結果の例

GUI を使用してベスト プラクティス スキャンを実行する

GUI を使用して、Server Core 展開のベスト プラクティス スキャンを実行することもできます。そのためには、Windows Server 2008 R2 を実行しているサーバーでスキャンを行うか、リモート サーバー管理ツールがインストールされている Windows 7 を実行しているコンピューターを使用する必要があります。Windows 7 を使用する場合、リモート サーバー管理ツールは、https://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=7d2f6ad7-656b-4313-a005-4e344e43997d&displaylang=ja-nec からダウンロードできます。

GUI を使用してスキャンを実行するには、コマンド ラインから実行するベスト プラクティス スキャンと同様に、Windows PowerShell が Server Core にインストールされている必要があります。また、MMC リモート管理とサーバー マネージャーのリモート管理を有効にする必要もあります。SCONFIG コマンドを入力して次の手順に従うと、サーバーの準備を整えることができます。

「4」(リモート管理の構成) と入力する
「2」(Windows PowerShell を有効にする) と入力する
サーバーを再起動する
ログインして「SCONFIG」と入力する
「4」(リモート管理の構成) と入力する
「1」(MMC リモート管理を許可する) と入力する
「3」(サーバー マネージャーのリモート管理を許可する) と入力する
「5」(メイン メニューに戻る) と入力する
「13」([終了してコマンド ラインに戻る]) を入力する

スキャンを実行するには、サーバー マネージャーを起動し、コンソール ツリーでサーバーのノードを右クリックし、[別のコンピューターに接続] をクリックしてコンピューター名の入力を求められたら、スキャンするコンピューターの名前を入力します。

リモートの Server Core コンピューターに接続したら、[役割] コンテナーを展開してベスト プラクティス スキャンを実行する役割をクリックします。結果をスクロールすると、[ベスト プラクティス アナライザー] というセクションが表示されます。[この役割をスキャン] リンクをクリックすると、その役割のスキャンを実行できます。スキャン結果は、[ベスト プラクティス アナライザー] セクションに表示されます (図 7 参照)。

別のサーバーの GUI を使用して、Server Core をスキャンできる

図 7 別のサーバーの GUI を使用して、Server Core をスキャンできる

Windows PowerShell

この記事で解説したプロセスの多くは、Server Core コンピューターに Windows PowerShell がインストールされている必要があります。ですが、Windows PowerShell が必要なアプリケーションを実行する予定がある場合を除き、Windows PowerShell は、初期構成およびベスト プラクティスのテスト完了時に削除することをお勧めします。

コマンド ラインで Server Core を管理する場合は必ず Windows PowerShell 経由で行わなければならない、とうたっている記事がインターネット上に数多く存在するため、この推奨事項は奇妙に聞こえるかもしれません。しかし、Server Core は、Windows PowerShell ではなくコマンド プロンプトで管理するように設計されています。実際、最初のバージョンの Server Core では、Windows PowerShell はインストールすることもできませんでした。技術的には、サーバーに Windows PowerShell をインストールしても何の問題もありませんが、ほとんどのユーザーは、フットプリントや攻撃の対象領域が少ないという理由で Server Core を使用しており、Windows PowerShell をインストールするとサーバーの攻撃対象となる領域が増えます。

コマンド プロンプト ウィンドウを開いて次のコマンドを実行すると、Windows PowerShell を削除できます (図 8 参照)。

Start /W ocsetup MicrosoftWindowsPowerShell /Uninstall

Start /W OCSETUP Microsoft Windows PowerShell /Uninstall コマンドで Windows PowerShell を削除できる

図 8 Start /W OCSETUP Microsoft Windows PowerShell /Uninstall コマンドで Windows PowerShell を削除できる

ServerManagerCMD ではなく Start /W OCSETUP コマンドを使用したのか疑問に思う方もいるでしょう。ServerManagerCMD コマンドを使わなかった理由は 2 つあります。

  • 1 つ目は、ServerManagerCMD コマンドが、サーバー マネージャーに対するコマンド ライン インターフェースだという理由です。Server Core にはサーバー マネージャーが存在しないため、ServerManagerCMD を使用するという選択肢はありません。
  • 2 つ目は、ServerManagerCMD コマンドは、Windows Server 2008 R2 のフル インストールに含まれていますが、廃止されたものだという理由です。マイクロソフトは、ユーザーが機能を追加および削除するときには、ServerManagerCMD ではなく Windows PowerShell のコマンドレットを使用し始めることを望んでいます。当然、Windows PowerShell を削除するのに Windows PowerShell コマンドを使用することはできませんが。

ご覧のように、Server Core の管理に使用する手法と、通常の Windows Server 2008 展開の管理に使用する手法は異なります。それでも、Server Core は、高度なセキュリティ環境で使用する場合やサーバー リソースを節約する必要がある場合には最適な展開オプションです。

Brien Posey

Brien Posey は、MVP であり、数千件の記事と数十冊の書籍を執筆した実績のあるフリーランスのテクニカル ライターです。Posey の Web サイトのアドレスは brienposey.com (英語) です。

関連コンテンツ