【Snare】WECエージェントでWindowsイベントコレクターを活用する(1)ドメイン環境編

はじめに

多数のWindowsマシンからイベントログを収集・保存する必要がある場合、お客様によってはログ収集のためのエージェントをなるべくインストールしたくないということがあります。また、エージェント入れるとしても、多数となると費用面から二の足を踏むことになるケースもあるでしょう。

調べてみるとWindowsにはイベントコレクターという機能があり、Windowsから別のWindowsへイベントログを転送することができることが分かります。これを活用すれば、エージェントはイベントを収集するWindowsサーバー(以後WECサーバーと記述)にだけ入れればよく、先の二つの課題を解決できそうです。

例えば以下のようにエージェント レスのソース コンピューターのイベントログをコレクター コンピューター(WECサーバー)で集めてログサーバーに転送する構成が考えられます。

WECエージェントを使ったシステム構成図

しかしながら、このWindowsイベントコレクターを使いこなすには、ハードルがあります。オンライン上のMicrosoftのイベントコレクターのマニュアルは分かりにくく、ちょっとしたノウハウが必要なのです。

また、WECサーバーに集約したイベントログは、そのままではWECサーバーのログと見えてしまうため、ログサーバーに集約する際には分かりやすく整理する必要があります。そこでこのブログでは、これらの課題をなるべく簡単、単純に解決する方法を解説します。

具体的には、上図のようにWECサーバーに多数のWindowsからイベントログを集約し、Snare*1のWECエージェントでSnare Centralなどのログサーバーに送付します。これで、ログサーバーから見ると、ソース コンピューターから直接イベントログを集めたように扱うことができます。

このとき、WECサーバーはWindowsベースで、ソース コンピューターと同一ドメインとすることで話が簡単になります。

以下の説明では、イベントログの送信側と受信側をMicrosoftにならってソースとコレクターと呼ぶことにします。サーバー/クライアントと呼ぶ場合は、コレクターがサーバーで、ソースがクライアントです。

*1)Snareとは、Prophecy International 社によって開発された統合ログ管理製品で、各ログ発生元のOSにインストールするエージェント群とログを一元管理するSnare Centralからなります。

Windowsイベント コレクターとは

Windowsイベント コレクター(WEC)*2とは、リモートのWindowsコンピューターから、Windowsリモート管理(WinRM)を使って、定期的なログ収集(サブスクリプション)を行うものです。

2023年8月現在サポートされているWindowsのすべてのOS(Windows 2012サーバー以降、Windows10以降)にはWinRM2.0が実装されており、自動的に開始されます。従って、それらのWindows間でイベントログを転送することが可能です。

*2)より正確には、WinRMはMicrosoftによるWS-Management プロトコル*3の実装なので、このプロトコルを実装しているWindows以外のコンピューター間でもログの転送ができます。

*3)WS-Management プロトコルは、このプロトコルを実装している任意のコンピューター デバイスで管理データをリモートで交換するための公的な基準として、ハードウェアとソフトウェアの製造元のグループによって開発されたものです。

Snare WECエージェントとは

Snare WEC エージェントは、Windowsサーバー上のWindows イベント コレクター(WEC)が収集したイベントに適切な処理をほどこして転送することができるSnareのエージェントです。

一般のSnare Windowsエージェントの機能に加えて、転送されたイベントログを、送信元から直接送付された形式に変換して、ログを集中管理するSnare Central などに転送する機能があります。

これにより、WECを使った場合でも、ログを受信したSnare CentralやSIEMでは本当のログ送信元に基づいてログを整理でき、単純に扱うことができます。

Windowsイベント コレクターの使い方の方針

Windowsイベント コレクターのログ収集のサブスクリプションには大きく二つのやり方があります。一つはソース開始のサブスクリプションで、もう一つはコレクター開始のサブスクリプションです。この二つを比較すると以下のようになります。

項目   \   方式ソース開始コレクター開始
ブッシュ/プルプッシュプル
ソースコンピューターの定義不要必要
               【サブスクリプションの種類】

ここでは、サブスクリプション内にイベントソースとなるコンピューターの定義が不要なソース開始サブスクリプションについて説明します。

ソースとコレクターの間のWimRMのセキュアな認証方式としては、ケルベロス認証と証明書ベースの認証とが使えます。

前者はActive Directoryのドメイン環境内においてのみ有効であるため、ソース コンピューターとコレクター コンピューターが同一ドメインにある必要があります。

後者は証明書が相互に認証される限りにおいてソースとコレクターが同一ドメインになくともセキュアな通信によってログの転送が可能となります。

認証方法通信可能範囲使用プロトコル / ポート
ケルベロス(Kerberos)認証ドメイン内HTTP  / 5985
証明書(Certificate)ベース認証ドメインに関係なく適切な証明書*4が双方で揃っていれば通信可能HTTPS / 5986
      【Windowsリモート管理(WinRM)で使用する二つの認証方法の比較】

ここからは、ソースとコレクターが同一ドメインにあってケルベロス認証を使ってソース開始サブスクリプションを行う場合についてのみ説明します。

Microsoftの「イベント ソースがイベント コレクター コンピューターと同じドメインにあるソースによって開始されるサブスクリプションを設定する」という記事にこの場合の設定方法があります。これをベースに分かりやすく丁寧に説明します。

以下の設定には、ソースおよびコレクター コンピューターが共に属するドメインのDNSサーバーでもあるWindowsのADサーバーへの管理者アクセス権が必要です。

*4)WinRMの通信を行う際の証明書の要件

イベント ソース コンピューター(クライアント)の設定

Windowsリモート管理の構成

Windows ADサーバーの管理者特権コマンド プロンプトから次のコマンドを実行して、Windows リモート管理(WinRM)をデフォルト設定で構成します。
winrm qc -q

winrmはWinRMのコマンドラインツールでqcは、quickconfigの省略形です。-qオプションは
-quietの省略形で、確認メッセージを表示しない指定です。このコマンドは、以下の内容を実行しています。

  1. WinRM サービスを開始します
  2. WinRM サービスの種類を自動開始に設定します
  3. リスナーを作成して任意の IP アドレスで要求を受け付けます
  4. WS-Management トラフィック用のファイアウォール例外を有効にします (http のみ)

ターゲット サブスクリプション マネージャーの構成

同じコマンド プロンプトから次のコマンドを実行して、グループ ポリシー エディターを開きます。
gpedit.msc

グループ ポリシー エディターの[コンピューターの構成]を展開し、[管理用テンプレート]を展開し、 [Windows コンポーネント]を展開して、[イベント転送] ノードを選択します。


[ターゲット サブスクリプション マネージャーを構成する]を右クリックし、[編集] を選択します。[有効]のラジオボタンを選択して構成を有効に設定し、左下の[オプション:]の箱の中のサブスクリプション マネージャー [表示…] ボタンをクリックして、[表示するコンテンツ] のウインドウにサブスクリプション マネージャーのポリシー設定を少なくとも1つ追加します。



この[ターゲット サブスクリプション マネージャーを構成する] のウィンドウには、証明書ベースの認証を選択した場合の設定を説明する [ヘルプ:] が表示されています。ケルベロス認証の場合には以下のように記述します。更新間隔は秒単位で、例えば60秒ならば60と記述します。
Server=HTTP://<コレクターのFQDN>:5985/wsman/SubscriptionManager/WEC,Refresh=<更新間隔(秒)>

ローカル グループ ポリシーの強制適用

[サブスクリプション マネージャー]の設定が追加されたら、次のGPOおよびローカル グループ ポリシーを強制適用するコマンド実行してポリシーが適用されていることを確認します。
gpupdate /force

イベントログ フォワーディングのログのチェック

ここでMicrosoft-Windows-Forwarding/Operationalのログをチェックします。コマンドプロンプトからevntvwrコマンドを実行してイベントビューアーを立ち上げます。

[イベント ビューアー(ローカル)] | [アプリケーションとサービス] | [Microsoft] | [Windows] | [Eventlog-ForwardingPlugin] を開き、[Operational]をクリックします。開いた以下の画面で、先のgpupdate /force コマンドでで発生したログをチェックします。



イベント 106 「サブスクリプション ポリシーが変更されました。フォワーダーは、更新後のポリシーのサブスクリプション マネージャーに従って、サブスクリプションを調整しています」が発生していれば問題ありません。この例では、イベント 105のエラーも続けて発生していますが、これはコレクター側の設定がされていないためのエラーで、この時点では気にする必要はありません。

NETWORK SERVCIEアカウントの追加

セキュリティ ログを転送する場合は、各ソース コンピューター側で以下の手順を行いNETWORK SERVICE アカウントを EventLog Readers グループに追加します

ソース コンピューター上の管理者権限のあるアカウントのコマンドプロンプトで、compmgmt.mcsを実行して[コンピューターの管理]を開きます。[コンピューターの管理(ローカル)] | [ローカル ユーザーとグループ] | [グループ]を開きます。[Event Log Readers]グループをダブルクリックして、[Event Log Readersのプロパティ][全般]タブで、[追加]をクリックします。



[ユーザー、コンピューター、サービスアカウント または グループの選択]の画面が開きます。



しかし、[場所]がドメインを示していると、そのままではローカルコンピュータの[NETWORK SERVICE]アカウントが選択できません。そこで、[場所]をクリックして、[場所]の選択画面を表示させて、ローカルのコンピューターを選択し[OK]をクリックします。



ETWORK SERVICE]を入力枠に書き込んで[名前の確認]を行い、存在が確認できたら、[OK]をクリックします。



[所属するメンバー][NT AUTHORITY\NETWORK SERVICE(S-1-5-20)]が追加されるので、[OK]をクリックして、アカウントの追加作業は終わりです。


イベント コレクター コンピューター(サーバー)の設定

Windowsリモート管理の構成

Windows ADサーバーの管理者特権コマンド プロンプトから次のコマンドを実行して、Windows リモート管理(WinRM)をデフォルト設定で構成します。
winrm qc -q

WinRMのサービスは自動で実行されるように設定されているため、通常は以下のように「WinRM サービスは、既にこのコンピューターで実行されています。このコンピューター上でのリモート管理には、WinRMが既に設定されています。」というメッセージが出力されます。

イベント コレクター サービスの構築

同じコマンド プロンプトから次のコマンドを実行して、イベント コレクター サービスを構築します。
wecutil qc /q

wecutilはWindows イベント コレクターのコマンドラインツールでqcは、quick-configの省略形です。/qオプションは、Quietの省略形で、確認メッセージを表示しない指定です。このコマンドは、以下の内容を実行しています。

  1. ForwardedEvents チャネルが無効になっている場合は有効にします。
  2. Windows イベント コレクター サービスの開始を遅らせる設定をします。
  3. Windows イベント コレクター サービスが動いていない場合は開始します。

ソース開始サブスクリプションの作成

ソースによって開始されるサブスクリプションを作成します。これには3つ方法があり、イベントビューアーを使うか、設定を記述したXMLファイルを使ってwecutilコマンドで行うか、Windowsに用意されているAPIを通じてプログラムで作成するかです。ここでは、イベントビューアーのGUIを使って行う方法を紹介します。

イベントビューアーによるサブスクリプションの作成

コマンドプロンプトからeventvwr+Enterでイベントビューアーを立ち上げ、画面左のペインの一番下にある[サブスクリプション]を右クリックして出てきたメニューから[サブスクリプションの作成]を選択します。

サブスクリプションのプロパティ:名前、説明、宛先ログ

[サブスクリプションのプロパティ]が表示されます。サブスクリプション名と説明は記述しなくとも設定はできますが、後で分かるように適切な記述をします。今回は、[test2][HTTP(ケルベロス認証)]と記述しています。

[宛先ログ]はコレクター コンピューターがソース コンピューターから集めたログをイベントログのどこに転送・保管するのかを指定するものです。デフォルトで“Forwarded Events”となっており、SnareのWECエージェントを使う場合は、エージェントが転送されたログと認識するためにはそのままにする必要があります。

サブスクリプションのプロパティ:コンピューター グループの選択

[サブスクリプションの種類とソースコンピューター]では、[ソース コンピューターによる開始]のラジオボタンを選択し、[コンピューター グループの選択]をクリックします。

[コンピューター グループ]の選択画面が表示されるので、[ドメイン コンピューターの追加]をクリックして、[コンピューター または グループ の選択]にドメイン内のソース コンピューターのグループ名を[選択するオブジェクト名を入力してください]の欄に入力し、[名前の確認]をクリックしてコンピューターグループ名が確認できたら、[OK]をクリックして追加を完了します。





この例では、[Domain Computers]を入力しており、ADサーバーのドメインに属するすべてのDomain Computersのイベントログを受信する設定となります。ここで、もう一度[OK]をクリックします。

サブスクリプションのプロパティ:イベントの選択

次は、[サブスクリプションのプロパティ]のウィンドウ上で[イベントの選択]をクリックしてコレクターが受信するイベントログを選択します。以下の[クエリーフィルター]の画面が開きます。GUIを使って選択するのであれば、[フィルター]タブで選択する方が楽だと思いますので、そのまま[フィルター]タブで収集するイベントのフィルターを作成します。ちなみにこの[クエリーフィルター]は、イベントビューアーで、[カスタムビューの作成][現在のログをフィルター]で開くポップアップウィンドウと同じものです。



[イベントレベル]を最低一つ選択して、[ログごと]または[ソースごと]のラジオボタンのどちらかを選択します。[ログごと]を選択した場合は、選択ウィンドウの▼をクリックして以下のようなプルダウンメニューを表示します。



これらの中から収集が必要なログを選んでチェックします。この例ではWindowsログをすべてチェックして、アプリケーションとサービスのログはすべてチェックしない設定としています。

[ソースごと]を選択した場合は、その右の▼をクリックしてイベントソースのプルダウンメニューから、収集するイベントログソースを選択してください。プルダウンのリストは以下のようです。



[XML]のタブではXPath形式でフィルターを記述することができます。[フィルター]タブで収集ログの定義=フィルターを設定済の場合は、下記のような形でその定義をXPath形式で記述したものが表示されます。XPath形式については、マクロソフトのドキュメント[イベントの使用 (Windows イベント ログ)]をご覧ください。

複雑なフィルターを作成して保守するのであれば、チェックしやすいのでこちらを使った方がよいでしょう。その場合、初期のサブスクリプションの構成をGUIでフィルターを作成したなら、wecuti gsコマンドを使ってファイルに保存することができます。以後の構成変更はそのXMLファイルを更新したなら、wecutil ssコマンドでその構成XMLファイルを指定して設定を更新できます。



実際に上記画面で[手動でクエリを編集する]のチェックボックスをチェックすると、以下の画面がポップアップしてきて、[フィルター]のタブからの設定変更ができなくなると注意されます。



これは、クエリを直接編集すると[フィルター]側で設定した場合のクエリの記述に合わないクエリの書き方ができるためと考えられます。実際、上記クエリは以下の記述とまったく同じことを意味します。

  <QueryList>
    <Query Path="Application">
      <Select Path="Application">*</Select>
      <Select Path="Security">*</Select>
      < Select Path="Setup">*</Select>
      <Select Path="System">*</Select>
      <Select Path="ForwardedEvents">*</Select>
      </Query>
    </QueryList>

サブスクリプションのプロパティ:詳細設定

[詳細設定]をクリックすると以下の[サブスクリプションの詳細設定]のポップアップが開きます。



[イベント配信の最適化]では、[標準][帯域幅の最小化][待ち時間の最小化]の3つの選択肢がラジオボタンで選択できます。それぞれの意味は、以下のMicrosoftの引用をご覧ください。


       WEF イベントはどのくらいの頻度で配信されますか?]より引用

なお、ソース開始サブスクリプションの場合は、いずれを選択した場合でも、プッシュ配信モードであり、コレクター開始の場合の配信モードはプルとなります。また、この選択肢の[カスタム]は、GUIで設定する場合には設定できず、wecutilコマンドラインツールやプログラムを使ってカスタム設定した場合のみオンとなります。

[プロトコル]は、デフォルトで[HTTP]となっており、そのまま[HTTP]とします。[HTTPS]を選択するには、WinRMで証明書ベースの認証が設定されている必要があります。

wecutil csコマンドを使ってXMLで設定する方法などは、機会を改めて説明したいと思います。

サブスクリプションの動作確認

サブスクリプションのランタイムの状態の確認

コレクター コンピューターでイベントビューアーの[サブスクリプション]をクリックして、以下のように設定したサブスクリプションに緑の✔があることを確認します。更に、そのサブスクリプションを右クリックして表示されたプルダウンの中から、[ランタイムの状態]を選択します。

[サブスクリプションのランタイムの状態]が表示されます。ログを送信しているはずのコンピューターが全部リストされていて、[状態][アクティブ]で正常にログ収集できていることを確認します。

万一、[状態][エラー]と表示される場合は、そのコンピューターを選択するとウィンドウの下部に理由が表示されるので、それを手がかりに問題を解決する必要があります。

イベントビューアー Forwarded Eventsの確認

念のためイベントビューアーの [Windows ログ] | [Forwarded Events]を開いて、各ソースコンピューターからのログがコレクターに届いているかを確認します。

WECエージェントのインストールと設定

さて、いよいよコレクターとなっているWindowsサーバーにSnareのWECエージェントをインストールします。評価用のインストーラーは以下からダウンロードしてください。

 [お試し版のSnare WECエージェントのダウロードはこちら]

Snare WECエージェントは、コレクターとなっているWindowsサーバーにインストールするもので、他のSnare Windowsエージェントと同じ機能も備えています。インストール方法もSnare Windowsエージェントとほぼ同じです。よって、具体的なインストール方法はSnare Windows エージェント インストールガイドをご参照ください。

WECエージェントとWindowsエージェントの違い

ウィザードによるインストール時の、WECエージェントのインストールとSnare Windowエージェント インストールガイドとの相違点は以下のとおりです。

  • タイトルなどが[Snare Setup][Snare WEC Setup]のように”WEC”の文字が追加になっている。
  • デフォルトのウェブUIのポートが[6161]から[6169]となっている。

    ただし、ウィザードの最後で[Launch Web UI]にチェックを入れたままとしておけば、[Finish]のクリックで、次のようなWeb UIが立ち上がります。(「接続がプライベートでありません」などのhttpsを使っていないための警告を無視して、http://localhost:6169のウェブUIを開く必要があります。)

ライセンスの適用

ライセンスの適用については、Snare Windows エージェント インストールガイドの「8.ライセンス」の記述を参考にしてください。評価ライセンスでは、通常のWindowsエージェント用のライセンスとWECエージェント用ライセンスは共通のものが用意されています。しかし、正規ライセンスでは両者はっきり区別されるのでご注意ください。

エージェントの設定

WECエージェントの機能は、WECで収集したログ以外を扱う以外は一般のWindows用エージェントと同じなので、一般のWindowsエージェントと同様に各種設定を行ってください。WECエージェントとして追加されている設定は、以下の一点です。

Snare WECエージェントのウェブUIには、[Audit Policy Configuration]の設定項目の[Identify log sources to capture events from]のリストに、以下のように[Windows Forwarded Events]が追加されています。

しかし、デフォルトの監査設定[Audit Policy Configuration]の最後には、[Windows Forwarded Events]がチェックされたINFORMATIONレベルの監査項目が追加されています。これにより、WECエージェントはデフォルト設定に宛先のログサーバーの設定を追加するだけで、他のWindowsから収集したイベントログもログサーバーに転送するようになっています。

(注)上の2つのウェブUI画面は、Snare WECエージェントの基本監査(Basic Auditing)場合の設定画面です。[General Configuration]で高度な監査[Advanced auditing]を選択している場合には、若干異なる画面イメージとなります。

Snare Centralでの動作確認

Snare Centralで、Snare WECエージェントがWECのコレクターサーバーに転送されたイベントログを想定通りSnare Centralに送っているかをチェックする簡単な方法を3つご紹介します。一つは、Snare CentralのダッシュボードでLive Eventsの受信状況をチェックする方法です。

ダッシュボードのLive Event受信状況表示

Snare CentralのウェブUIを、https://<Snare CentralのIPアドレス> で開き、左側のペインで[Dashboard]をクリックして、ダッシュボードを開きます。下にスクロールして、[Live Events]のウェジットを探します。最新のSnare Central 8.5.4では、[Total Events Plotted per 15 minutes over 15 days]のイベント(ログ)の発生ヒートマップの下にあります。

この[Live Events]のウェジットはログを送信してきている送信元毎のイベント発生率とログ量の棒グラフを表示しています。

WECエージェントは、Forwarded Eventsを読み取って、送信元のホスト名をソース コンピューターのホスト名に付替えてログを送信します。従って、その棒グラフの中にWECエージェントをインストールしたWindowsサーバーのホスト名に並んで、転送設定したすべてのソース コンピューター名が見えれば問題ありません。ただし、このウェジットでは全部で10のログ送信元しか表示されない点に注意してください。

StatusのLive Event表示

もう少し丁寧に確認するには、Snare CentralのLive Eventsのログ内容のリアルタイム表示機能を使うことをお薦めします。

これは、Snare CentralのウェブUIで、左側のペインで[Status]をクリックし、表示されたサブメニューの中から[Monitor Live Data]をクリックすることで表示できます。ウェブブラウザの横幅が狭いと[Log Types]の棒グラフしか表示されませんが、広くするとその右に[Servers]の棒グラフが表示されます。

その中からソース コンピューターの名前を見つけてクリックすることで、その下のウィンドウにその瞬間のクリックしたサーバーのログのスナップショットが表示されます。スナップショットのウィンドウには[Snapshot of the last 10 (the name of one of the Log Types) events from (the name of a Selected server)]というようなタイトルがつきます。表示されたログの[SYSTEM][TABLE][EVENTCOUNT][EVENTID]などの項目を見て、問題ないか確認してください。

[EVENTCOUNT]は、WECエージェントでログにつけているシリアル番号なので、この番号を調べることで抜けがないかチェックできます。ログタイプごとログ送信元毎につけられています。抜けがなければ、WECサーバーのForwarded Eventsに集められた、そのソースコンピューターのログはすべてSnare Centralに転送されたと判断できます。

Collection Status – Agent Informationによる確認

Snare Centralの[Status] | [Collection Status – Agent Information]には、ログ送信元のホスト名(なければIPアドレス)毎に受信したログタイプ[Log Types]と最新のログ受信日[Last Seen]が表示されます。[Table]タブで見たほうが見やすいと思います。

一番上にある[Regenerate]ボタンをクリックすれば、その場で表示を更新できます。これを使えばソース コンピューターの台数が多い場合でも各ソースからログが来ているか確認することができます。

おわりに

Windows Event CollectorとSnare WECエージェントを使って、多数のWindowsマシンのイベントログをマシン毎に整理して収集する手順を理解していただけましたでしょうか。

ドメイン外のWindowsマシンからSnare WECエージェントをインストールしたWECサーバーにセキュアにイベントログを集めるには、証明書を使った方法が必要となります。これについては、またの機会にご紹介したいと思います。

Snare製品についてもっと知りたいと感じられた方は、以下のお問い合わせをご利用ください。

最後までお読みいただき、ありがとうございました。

お問合せ

30日無償でご利用いただける評価版を以下ダウンロードリンクにご用意しております。簡単に検証が開始できますので、ぜひお気軽にお試しください。

ジュピターテクノロジー 堅

こんな記事も読まれています

最新記事

おすすめ記事

  1. 「リモートデスクトップの操作が遅い!」の原因を高速特定!ntopngによる輻輳原因の究明アプローチを実例でご紹介

  2. フリーWi-Fiに潜む悪魔の双子(エビルツイン)とは。加害者・被害者にならないために知るべきこと

  3. Syslogサーバー構築手順~インストールから初期設定まで~WinSyslogの使い方

製品カテゴリー

JTC IT用語集
TOP