Microsoft IIS ログを収集する

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

このガイドでは、Bindplane を使用して Microsoft Internet Information Services(IIS)ログを Google Security Operations に取り込む方法について説明します。

始める前に

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

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

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

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

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

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

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 ロギング フィールドを構成する

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

このパターンは、セキュリティ分析のためにリファラーやクエリ文字列などのリクエスト コンテキスト全体が必要で、1 つのサーバーで複数のサイトをホストしている場合に使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サービス名(s-sitename)
  4. サーバーの IP アドレス(s-ip)
  5. メソッド(cs-method)
  6. URI ステム(cs-uri-stem)
  7. URI クエリ(cs-uri-query)
  8. サーバー ポート(s-port)
  9. User Name(cs-username)
  10. クライアント IP アドレス(c-ip)
  11. ユーザー エージェント(cs(User-Agent))
  12. Referer(cs(Referer))
  13. プロトコル ステータス(sc-status)
  14. 送信バイト数(sc-bytes)
  15. 受信バイト数(cs-bytes)

パターン 2: サブステータスとパフォーマンスを含む基本

このパターンは、トラブルシューティングのために詳細なエラーコード(サブステータス、Win32 ステータス)とリクエストのタイミングが必要な場合に使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サーバーの IP アドレス(s-ip)
  4. メソッド(cs-method)
  5. URI ステム(cs-uri-stem)
  6. サーバー ポート(s-port)
  7. User Name(cs-username)
  8. クライアント IP アドレス(c-ip)
  9. ユーザー エージェント(cs(User-Agent))
  10. Referer(cs(Referer))
  11. プロトコル ステータス(sc-status)
  12. プロトコルのサブステータス(sc-substatus)
  13. Win32 ステータス(sc-win32-status)
  14. 所要時間(time-taken)

このパターンは、サイトの識別、詳細なエラー、帯域幅の指標、パフォーマンス データを含む包括的なロギングが必要な場合に使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サービス名(s-sitename)
  4. サーバーの IP アドレス(s-ip)
  5. メソッド(cs-method)
  6. URI ステム(cs-uri-stem)
  7. URI クエリ(cs-uri-query)
  8. サーバー ポート(s-port)
  9. User Name(cs-username)
  10. クライアント IP アドレス(c-ip)
  11. ユーザー エージェント(cs(User-Agent))
  12. プロトコル ステータス(sc-status)
  13. プロトコルのサブステータス(sc-substatus)
  14. Win32 ステータス(sc-win32-status)
  15. 送信バイト数(sc-bytes)
  16. 受信バイト数(cs-bytes)
  17. 所要時間(time-taken)

パターン 4: フル コンテキストのマルチサイト

このパターンは、機能的にパターン 3 と同じです。

複数のサイトがあり、完全なオブザーバビリティが必要な場合は、このパターンを使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サービス名(s-sitename)
  4. サーバーの IP アドレス(s-ip)
  5. メソッド(cs-method)
  6. URI ステム(cs-uri-stem)
  7. URI クエリ(cs-uri-query)
  8. サーバー ポート(s-port)
  9. User Name(cs-username)
  10. クライアント IP アドレス(c-ip)
  11. ユーザー エージェント(cs(User-Agent))
  12. プロトコル ステータス(sc-status)
  13. プロトコルのサブステータス(sc-substatus)
  14. Win32 ステータス(sc-win32-status)
  15. 送信バイト数(sc-bytes)
  16. 受信バイト数(cs-bytes)
  17. 所要時間(time-taken)

パターン 5: サイト コンテキストとすべての指標(代替)

このパターンは、パターン 3 とパターン 4 と機能的に同じです。

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

  1. Date(日付)
  2. Time(時間)
  3. サービス名(s-sitename)
  4. サーバーの IP アドレス(s-ip)
  5. メソッド(cs-method)
  6. URI ステム(cs-uri-stem)
  7. URI クエリ(cs-uri-query)
  8. サーバー ポート(s-port)
  9. User Name(cs-username)
  10. クライアント IP アドレス(c-ip)
  11. ユーザー エージェント(cs(User-Agent))
  12. プロトコル ステータス(sc-status)
  13. プロトコルのサブステータス(sc-substatus)
  14. Win32 ステータス(sc-win32-status)
  15. 送信バイト数(sc-bytes)
  16. 受信バイト数(cs-bytes)
  17. 所要時間(time-taken)

パターン 6: サブステータスとパフォーマンスを伴う TLS 認識

セキュリティ分析や TLS のトラブルシューティングで HTTP/HTTPS プロトコル バージョン(HTTP/1.1、HTTP/2、HTTP/3)を追跡する必要がある場合は、このパターンを使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サーバーの IP アドレス(s-ip)
  4. メソッド(cs-method)
  5. URI ステム(cs-uri-stem)
  6. URI クエリ(cs-uri-query)
  7. サーバー ポート(s-port)
  8. User Name(cs-username)
  9. クライアント IP アドレス(c-ip)
  10. プロトコルのバージョン(cs-version)
  11. ユーザー エージェント(cs(User-Agent))
  12. Referer(cs(Referer))
  13. プロトコル ステータス(sc-status)
  14. プロトコルのサブステータス(sc-substatus)
  15. Win32 ステータス(sc-win32-status)
  16. 所要時間(time-taken)

パターン 7: パフォーマンス指標なしの TLS 対応

このパターンは、パターン 6 と同じですが、所要時間指標が不要な場合に使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サーバーの IP アドレス(s-ip)
  4. メソッド(cs-method)
  5. URI ステム(cs-uri-stem)
  6. URI クエリ(cs-uri-query)
  7. サーバー ポート(s-port)
  8. User Name(cs-username)
  9. クライアント IP アドレス(c-ip)
  10. プロトコルのバージョン(cs-version)
  11. ユーザー エージェント(cs(User-Agent))
  12. Referer(cs(Referer))
  13. プロトコル ステータス(sc-status)
  14. プロトコルのサブステータス(sc-substatus)
  15. Win32 ステータス(sc-win32-status)

パターン 8: パフォーマンスを重視した最小限の構成

このパターンは、パフォーマンス指標を含む最小限のロギングが必要で、クエリ文字列、リファラー、プロトコル バージョンを気にしない場合に使用します。

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

  1. Date(日付)
  2. Time(時間)
  3. サーバーの IP アドレス(s-ip)
  4. メソッド(cs-method)
  5. URI ステム(cs-uri-stem)
  6. サーバー ポート(s-port)
  7. User Name(cs-username)
  8. クライアント IP アドレス(c-ip)
  9. ユーザー エージェント(cs(User-Agent))
  10. プロトコル ステータス(sc-status)
  11. プロトコルのサブステータス(sc-substatus)
  12. Win32 ステータス(sc-win32-status)
  13. 所要時間(time-taken)

パターンの選択に関するガイダンス

ほとんどのデプロイでは、パターン 1 またはパターン 3 を使用します。

  • パターン 1: 複数のサイトがあるセキュリティ重視のデプロイに最適です(リファラー、クエリ文字列、サイト名が含まれます)。
  • パターン 3: 包括的な指標(サブステータス、Win32 エラー、帯域幅、タイミング、サイト名を含む)を必要とする本番環境に最適です。
  • パターン 6/7: HTTP プロトコル バージョン(HTTP/2 の導入、TLS のトラブルシューティング)を追跡する必要がある場合に使用します。
  • パターン 2/8: エラーの詳細を含む最小限のロギングに使用します。

構成を適用

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

IIS ロギングを確認する

  1. ブラウザでウェブページを開いて、IIS サイトへのテスト トラフィックを生成します。
  2. ログ ディレクトリ C:\inetpub\logs\LogFiles\W3SVC1\ に移動します。
  3. メモ帳で最新のログファイル(u_ex251020.log など)を開きます。
  4. #Fields: 行に有効にしたすべてのフィールドが含まれていることを確認します。

    • #Fields: 行の例:

      #Fields: date time s-sitename s-computername 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 sc-bytes cs-bytes time-taken
      
    • ログエントリの例:

      2025-10-20 14:23:15 Default_Web_Site SERVER01 192.168.1.10 GET /index.html - 80 - 203.0.113.45 Mozilla/5.0+(Windows+NT+10.0) - 200 0 0 1234 567 125
      

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 エージェントを構成する

Bindplane サービスを停止する

  • 構成ファイルを編集する前に、サービスを停止します。

    Stop-Service "observIQ OpenTelemetry Collector"
    

構成ファイルを編集します。

  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)。
      • customer_id: - Google SecOps のお客様 ID を取得するセクションに記載されている実際の Google SecOps のお客様 ID。

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

  • config.yaml ファイルを保存したら、Bindplane サービスを再起動します。

    Start-Service "observIQ OpenTelemetry Collector"
    
  • サービスが実行されていることを確認します。

    Get-Service "observIQ OpenTelemetry Collector"
    
  • 予想される出力:

    Status   Name                               DisplayName
    ------   ----                               -----------
    Running  observiq-otel-collector            observIQ OpenTelemetry 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 のプロフェッショナルから回答を得ることができます。