Microsoft IIS ログを収集する

以下でサポートされています。

このドキュメントでは、Bindplane を使用して Microsoft インターネット インフォメーション サービス(IIS)ログを Google Security Operations に取り込む方法について説明します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • IIS がインストールされた Windows Server 2016 以降
  • IIS サーバーに対する管理者権限
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM Settings] > [Collection Agents] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステム(C:\SecOps\ingestion-auth.json など)にファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

IIS W3C 拡張ロギングを構成する

Google SecOps がログを正しく解析し、検出が確実に機能するように、IIS マネージャーで正しい W3C フィールドを有効にする必要があります。

IIS マネージャーを開く

  1. [開始] をクリックします。
  2. inetmgr」と入力して Enter キーを押します。
  3. [インターネット インフォメーション サービス(IIS)マネージャー] ウィンドウが開きます。

別の方法:

  1. Windows+R キーを同時に押します。
  2. inetmgr」と入力して Enter キーを押します。
  1. [接続] ペイン(左側)で、サーバー名を開きます。
  2. サーバー全体のロギングを構成するには(推奨):
    • ルートレベルでサーバー名をクリックします。
  3. サイト固有のロギングを構成するには:
    • [サイト] を展開し、特定のサイト([既定の Web サイト] など)をクリックします。
  4. [Features View](中央ペイン)で、[Logging] をダブルクリックします。

[W3C 拡張ログ形式] を選択します。

  1. [Logging] ページの [Log File] セクションで、次の操作を行います。
    • [形式] プルダウンで [W3C] を選択します。
  2. [フィールドを選択] ボタンをクリックします。

W3C ロギング フィールドを構成する

重要: Google SecOps IIS パーサーは、8 つのフィールド構成をサポートしています。次のいずれかのパターンですべてのフィールドを有効にする必要があります。異なるフィールドを有効にしたり、パターンを混在させたりすると、解析が失敗します。

[W3C Logging Fields] ダイアログで、次のいずれかのパターンに従ってフィールドを選択します。

パターン 1: クエリ文字列とバイトを含むサイト全体のコンテキスト

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サービス名(s-sitename)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • サーバー ポート(s-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • 送信バイト数(sc-bytes)
  • 受信バイト数(cs-bytes)

このパターンは、次の場合に使用します。ダウンストリーム形式にサイト コンテキストとクエリ文字列が含まれており、送受信バイト数が必要で、パイプラインで「username」列と「referer」列が想定されている(値が - の場合でも)。

パターン 2: 基本(サブステータス、Win32 ステータス、パフォーマンスあり、リファラーなし)

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • サーバー ポート(s-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)
  • 所要時間(time-taken)

このパターンは、次の場合に使用します。パイプラインに Referer は含まれていないが、詳細なエラーコードとレイテンシ(time-taken)が必要な場合。

パターン 3: 基本(サブステータス、Win32 ステータス、パフォーマンスを含む)(リファラーを含む)

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • サーバー ポート(s-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)
  • 所要時間(time-taken)

このパターンは次の場合に使用します。パターン 2 と同じですが、パイプラインに専用の列としてリファラーが含まれています。

パターン 4: TLS/プロトコル バージョンを認識し、リファラーとパフォーマンスを考慮する

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • クライアント ポート(c-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • プロトコルのバージョン(cs-version)
  • ユーザー エージェント(cs(User-Agent))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)
  • 所要時間(time-taken)

このパターンは、次の場合に使用します。ダウンストリーム形式で cs-version が明示的にログに記録される(例: HTTP/1.1)が含まれており、タイミングも含まれています。また、クライアント ポートが専用の列として存在します。

パターン 5: TLS/プロトコル バージョンを認識し、リファラーを認識する(パフォーマンスなし)

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • クライアント ポート(c-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • プロトコルのバージョン(cs-version)
  • ユーザー エージェント(cs(User-Agent))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)

このパターンは次の場合に使用します。パターン 4 と同じですが、パイプラインに time-taken が含まれていません。

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • クライアント ポート(c-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • Cookie(cs(Cookie))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)

このパターンは、次の場合に使用します。ダウンストリーム形式で、Cookie と Referer の両方が専用の列として必要とされる場合。

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • クライアント ポート(c-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • Referer(cs(Referer))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)

このパターンを使用する場合: ダウンストリーム形式に Referer が含まれているが、Cookie、時間、バイト数が含まれていない。

次のフィールドをこの順序で有効にします。

  • Date(日付)
  • 時間(時間)
  • サーバーの IP アドレス(s-ip)
  • メソッド(cs-method)
  • URI ステム(cs-uri-stem)
  • URI クエリ(cs-uri-query)
  • クライアント ポート(c-port)
  • User Name(cs-username)
  • クライアント IP アドレス(c-ip)
  • ユーザー エージェント(cs(User-Agent))
  • プロトコル ステータス(sc-status)
  • プロトコルのサブステータス(sc-substatus)
  • Win32 ステータス(sc-win32-status)

このパターンは、次の場合に使用します。ダウンストリーム形式に Referer が含まれておらず、コア リクエスト コンテキストとステータス コードのみが必要な場合。

複数のパターンからフィールドを有効にしないでください。パーサーは、これらの正確な構成のいずれかを想定しています。

構成を適用する

  1. [OK] をクリックして、[W3C Logging Fields] ダイアログを閉じます。
  2. ログが書き込まれる [ディレクトリ] のパスを確認します。
    • デフォルト: %SystemDrive%\inetpub\logs\LogFiles
  3. [ログファイルのロールオーバー] で、[毎日] を選択します(Google SecOps の取り込みにおすすめ)。
  4. [アクション] ペイン(右側)で [適用] をクリックします。

IIS ロギングを確認する

W3C フィールドを構成したら、IIS がログを正しく書き込んでいることを確認します。

  1. ブラウザでウェブページを開いて、IIS サイトへのテスト トラフィックを生成します。
  2. ログ ディレクトリに移動します。C:\inetpub\logs\LogFiles\W3SVC1\
    • 注: W3SVC1 は最初のサイト(デフォルトのウェブサイト)に対応しています。他のサイトの場合、フォルダ名は W3SVC2W3SVC3 などになります。
  3. メモ帳で最新のログファイル(u_ex251217.log など)を開きます。
  4. #Fields: 行に、選択したパターンと同じ順序で有効にしたすべてのフィールドが含まれていることを確認します。

パターン 3 の例

パターン 3(サブステータス、Win32 ステータス、リファラーによるパフォーマンスを含む基本)を構成した場合、#Fields: 行は次のようになります。

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken

ログエントリの例:

2025-12-17 14:23:15 192.168.1.10 GET /index.html - 80 - 203.0.113.45 Mozilla/5.0+(Windows+NT+10.0) https://example.com/previous.html 200 0 0 125

注意事項:

  • 空のフィールドはハイフン(-)で表されます。
  • フィールドの順序は #Fields: ヘッダーと完全に一致している必要があります
  • フィールドが欠落している場合、順序が変更されている場合、複数のパターンにまたがっている場合、パーサーは失敗します

Bindplane エージェントをインストールする

次の手順に沿って、Windows サーバーに Bindplane エージェントをインストールします。

Windows へのインストール

  1. 管理者としてコマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

その他のインストール リソース

IIS ログを取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを編集する

  1. config.yaml ファイルを見つけます。
    • デフォルト パス: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. テキスト エディタ(メモ帳、VS Code、メモ帳++ など)を使用して、管理者としてファイルを開きます。
  3. 内容全体を次の構成に置き換えます。

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
      normalizesums:
      batch:
    
    exporters:
      chronicle/iis:
        endpoint: malachiteingestion-pa.googleapis.com
        creds: 'C:\SecOps\ingestion-auth.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<CUSTOMER_ID>'
        compression: gzip
    
    service:
      pipelines:
        logs/iis:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters:
            - chronicle/iis
    

構成値を更新する

各プレースホルダを次のように置き換えます。

  • creds: - 取り込み認証ファイルのパス(例: C:\SecOps\ingestion-auth.json)。
  • endpoint: - リージョン エンドポイント。
  • customer_id: - Google SecOps のお客様 ID を取得するセクションに記載されている実際の Google SecOps のお客様 ID。

Bindplane エージェントを再起動して変更を適用する

Windows で Bindplane エージェントを再起動するには、サービス コンソールを使用するか、次のコマンドを入力します。

net stop observiq-otel-collector && net start observiq-otel-collector

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
@timestamp metadata.event_timestamp 未加工ログに記録されたイベントのタイムスタンプ。
@version metadata.product_version IIS サーバーのバージョン。
AgentDevice additional.fields.AgentDevice.value.string_value ログを生成したデバイス。
AgentLogFile additional.fields.AgentLogFile.value.string_value ログファイルの名前。
ASP.NET_SessionId network.session_id ユーザーのセッション ID。
c-ip principal.ip クライアントの IP アドレス。
チャネル security_result.about.resource.attribute.labels.Channel.value イベントが記録されたチャネル。
ChannelID security_result.about.resource.attribute.labels.ChannelID.value イベントが記録されたチャンネルの ID。
パソコン target.hostname ターゲット マシンのホスト名。
cs-bytes network.received_bytes クライアントから受信したバイト数。
cs-host principal.hostname、principal.asset.hostname クライアントのホスト名。
cs-method network.http.method クライアントで使用される HTTP メソッド。
cs-uri-query target.url クライアントがリクエストした URL のクエリ文字列。
cs-uri-stem target.url クライアントによってリクエストされた URL のパス。
cs-username principal.user.user_display_name クライアントのユーザー名。
cs-version network.tls.version_protocol クライアントで使用される HTTP バージョン。
cs(Cookie) Cookie 情報を抽出するために使用されます。
cs(Referer) network.http.referral_url クライアントを現在のページに誘導した URL。
cs(User-Agent) network.http.user_agent クライアントのユーザー エージェント。
csbyte network.received_bytes クライアントから受信したバイト数。
cshost principal.hostname、principal.asset.hostname クライアントのホスト名。
csip principal.ip、principal.asset.ip クライアントの IP アドレス。
csmethod network.http.method クライアントで使用される HTTP メソッド。
csreferer network.http.referral_url クライアントを現在のページに誘導した URL。
csuseragent network.http.user_agent クライアントのユーザー エージェント。
csusername principal.user.user_display_name クライアントのユーザー名。
csversion network.tls.version_protocol クライアントで使用される HTTP バージョン。
日付 未加工ログのタイムスタンプが無効な場合に、イベント タイムスタンプの作成に使用されます。
説明 security_result.description イベントの説明。
devicename target.hostname ターゲット マシンのホスト名。
dst_ip target.ip、target.asset.ip ターゲット マシンの IP アドレス。
dst_port target.port ターゲット マシンのポート番号。
duration リクエストの所要時間(ミリ秒単位)。
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value イベントがキューに登録された時刻(UTC)。
EventID metadata.product_log_id イベントの ID。
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value イベントが処理された時刻(UTC)。
EventTime metadata.event_timestamp イベントのタイムスタンプ。
EventType metadata.product_event_type イベントのタイプ。
file_path target.file.full_path イベントに関連するファイルのフルパス。
FilterId security_result.about.resource.attribute.labels.FilterId.value フィルタの ID。
FilterKey security_result.about.resource.attribute.labels.FilterKey.value フィルタのキー。
FilterName security_result.about.resource.attribute.labels.FilterName.value フィルタの名前。
FilterType security_result.about.resource.attribute.labels.FilterType.value フィルタのタイプ。
ホスト target.hostname ターゲット マシンのホスト名。
host.architecture principal.asset.hardware.cpu_platform ホストマシンのアーキテクチャ。
host.geo.name additional.fields.geo_name.value.string_value ホストマシンの地理的位置。
host.hostname target.hostname、target.asset.hostname ホストマシンのホスト名。
host.id observer.asset_id ホストマシンの ID。
host.ip principal.ip、principal.asset.ip ホストマシンの IP アドレス。
host.mac principal.mac ホストマシンの MAC アドレス。
host.os.build additional.fields.os_build.value.string_value ホストマシンのオペレーティング システムのビルド番号。
host.os.kernel principal.platform_patch_level ホストマシンのオペレーティング システムのカーネル バージョン。
host.os.name additional.fields.os_name.value.string_value ホストマシンのオペレーティング システムの名前。
host.os.platform principal.platform ホストマシンのオペレーティング システムのプラットフォーム。
host.os.version principal.platform_version ホストマシンのオペレーティング システムのバージョン。
http_method network.http.method クライアントで使用される HTTP メソッド。
http_response network.http.response_code HTTP レスポンス コード
http_status_code network.http.response_code レスポンスの HTTP ステータス コード。
http_substatus additional.fields.sc_substatus.value.string_value レスポンスの HTTP サブステータス コード。
インスタンス additional.fields.instance.value.string_value タスクのインスタンス ID。
intermediary_devicename intermediary.hostname、intermediary.asset.hostname 仲介デバイスのホスト名。
json_message JSON 形式の未加工のログメッセージ。
kv_fields 未加工ログのメッセージから Key-Value ペアを抽出するために使用されます。
LayerKey security_result.about.resource.attribute.labels.LayerKey.value レイヤのキー。
LayerName security_result.about.resource.attribute.labels.LayerName.value レイヤの名前。
LayerId security_result.about.resource.attribute.labels.LayerId.value レイヤの ID。
log.file.path target.file.full_path ログファイルのフルパス。
log.offset metadata.product_log_id ログファイル内のイベントのオフセット。
logstash.collect.host observer.hostname ログを収集したマシンのホスト名。
logstash.process.host intermediary.hostname ログを処理したマシンのホスト名。
logstash_json_message JSON 形式の未加工のログメッセージ。
メッセージ security_result.description 未加工のログ メッセージ。
ミニストリー additional.fields.ministry.value.string_value イベントに関連付けられている省庁。
name エンティティの名前。
NewValue additional.fields.NewValue.value.string_value 構成設定の新しい値。
OldValue additional.fields.OldValue.value.string_value 構成設定の古い値。
ポート principal.port クライアントのポート番号。
priority_code syslog メッセージの優先度コード。
ProcessID principal.process.pid イベントを生成したプロセスのプロセス ID。
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value プロバイダの GUID。
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value プロバイダのキー。
ProviderName security_result.about.resource.attribute.labels.ProviderName.value プロバイダの名前。
referrer_url network.http.referral_url クライアントを現在のページに誘導した URL。
request_url target.url クライアントによってリクエストされた URL。
s-computername target.hostname ターゲット マシンのホスト名。
s-ip target.ip、target.asset.ip ターゲット マシンの IP アドレス。
s-port target.port ターゲット マシンのポート番号。
s-sitename additional.fields.sitename.value.string_value サイトの名前。
sc-bytes network.sent_bytes クライアントに送信されたバイト数。
sc-status network.http.response_code レスポンスの HTTP ステータス コード。
sc-substatus additional.fields.sc_substatus.value.string_value レスポンスの HTTP サブステータス コード。
sc-win32-status レスポンスの Windows ステータス コード。
scbyte network.sent_bytes クライアントに送信されたバイト数。
scstatus network.http.response_code レスポンスの HTTP ステータス コード。
重要度 security_result.severity イベントの重大度。
service.type additional.fields.service_type.value.string_value サービスのタイプ。
sIP principal.ip、principal.asset.ip クライアントの IP アドレス。
sPort principal.port クライアントのポート番号。
sSiteName additional.fields.sitename.value.string_value サイトの名前。
src_ip principal.ip、principal.asset.ip、observer.ip クライアントの IP アドレス。
src_port principal.port クライアントのポート番号。
sysdate syslog メッセージの日時。
syslog_facility security_result.severity_details syslog メッセージのファシリティ。
syslog_pri syslog メッセージの優先度。
syslog_severity security_result.severity_details syslog メッセージの重大度。
syslog_severity_code syslog メッセージの重大度コード。
タグ security_result.rule_name イベントに関連付けられたタグ。
タスク additional.fields.task.value.string_value タスクの名前。
時間 未加工ログのタイムスタンプが無効な場合に、イベント タイムスタンプの作成に使用されます。
time-taken リクエストの所要時間(ミリ秒単位)。
uri_query target.url クライアントがリクエストした URL のクエリ文字列。
user_agent network.http.user_agent クライアントのユーザー エージェント。
ユーザー名 target.user.userid ユーザーのユーザー名。
UserSid target.user.windows_sid ユーザーの Windows SID。
重み security_result.about.resource.attribute.labels.Weight.value フィルタの重み。
win32_status レスポンスの Windows ステータス コード。
xforwardedfor IP アドレスのカンマ区切りリストを含む X-Forwarded-For ヘッダー。
metadata.log_type "IIS"
network.direction "INBOUND"
metadata.vendor_name "Microsoft"
metadata.product_name 「Internet Information Server」
metadata.event_type "NETWORK_HTTP", "USER_UNCATEGORIZED", "GENERIC_EVENT", "STATUS_UPDATE", "USER_LOGOUT", "USER_LOGIN"
extensions.auth.type "MACHINE"

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。