Microsoft IIS ログを収集する
このガイドでは、Bindplane を使用して Microsoft Internet Information Services(IIS)ログを Google Security Operations に取り込む方法について説明します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- IIS がインストールされた Windows Server 2016 以降
- IIS サーバーに対する管理者権限
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
IIS W3C 拡張ロギングを構成する
IIS マネージャーを開く
- [開始] をクリックします。
- 「
inetmgr」と入力して Enter キーを押します。 - [インターネット インフォメーション サービス(IIS)マネージャー] ウィンドウが開きます。
別の方法:
- Windows+R キーを同時に押します。
- 「
inetmgr」と入力して Enter キーを押します。
ロギング構成に移動する
- [接続] ペインで、サーバー名を開きます。
- サーバー全体のロギングを構成するには(推奨):
- ルートレベルでサーバー名をクリックします。
- サイト固有のロギングを構成するには:
- [サイト] を展開し、特定のサイト([既定の Web サイト] など)をクリックします。
- [Features View] で、[Logging] をダブルクリックします。
W3C 拡張ログ形式を選択する
- [Logging] ページの [Log File] セクションで、次の操作を行います。
- [形式] プルダウンで [W3C] を選択します。
- [フィールドを選択] ボタンをクリックします。
W3C ロギング フィールドを構成する
[W3C Logging Fields] ダイアログで、次のいずれかのパターンに従ってフィールドを選択します。
パターン 1: クエリ文字列を含むサイト全体のコンテキスト(ほとんどのデプロイで推奨)
このパターンは、セキュリティ分析のためにリファラーやクエリ文字列などのリクエスト コンテキスト全体が必要で、1 つのサーバーで複数のサイトをホストしている場合に使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サービス名(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)
パターン 2: サブステータスとパフォーマンスを含む基本
このパターンは、トラブルシューティングのために詳細なエラーコード(サブステータス、Win32 ステータス)とリクエストのタイミングが必要な場合に使用します。
次のフィールドをこの順序どおりに有効にします。
- Date(日付)
- Time(時間)
- サーバーの IP アドレス(s-ip)
- メソッド(cs-method)
- URI ステム(cs-uri-stem)
- サーバー ポート(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)
パターン 3: 完全な指標を含むサイト コンテキスト(本番環境に推奨)
このパターンは、サイトの識別、詳細なエラー、帯域幅の指標、パフォーマンス データを含む包括的なロギングが必要な場合に使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サービス名(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))
- プロトコル ステータス(sc-status)
- プロトコルのサブステータス(sc-substatus)
- Win32 ステータス(sc-win32-status)
- 送信バイト数(sc-bytes)
- 受信バイト数(cs-bytes)
- 所要時間(time-taken)
パターン 4: フル コンテキストのマルチサイト
このパターンは、機能的にパターン 3 と同じです。
複数のサイトがあり、完全なオブザーバビリティが必要な場合は、このパターンを使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サービス名(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))
- プロトコル ステータス(sc-status)
- プロトコルのサブステータス(sc-substatus)
- Win32 ステータス(sc-win32-status)
- 送信バイト数(sc-bytes)
- 受信バイト数(cs-bytes)
- 所要時間(time-taken)
パターン 5: サイト コンテキストとすべての指標(代替)
このパターンは、パターン 3 とパターン 4 と機能的に同じです。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サービス名(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))
- プロトコル ステータス(sc-status)
- プロトコルのサブステータス(sc-substatus)
- Win32 ステータス(sc-win32-status)
- 送信バイト数(sc-bytes)
- 受信バイト数(cs-bytes)
- 所要時間(time-taken)
パターン 6: サブステータスとパフォーマンスを伴う TLS 認識
セキュリティ分析や TLS のトラブルシューティングで HTTP/HTTPS プロトコル バージョン(HTTP/1.1、HTTP/2、HTTP/3)を追跡する必要がある場合は、このパターンを使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サーバーの IP アドレス(s-ip)
- メソッド(cs-method)
- URI ステム(cs-uri-stem)
- URI クエリ(cs-uri-query)
- サーバー ポート(s-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)
パターン 7: パフォーマンス指標なしの TLS 対応
このパターンは、パターン 6 と同じですが、所要時間指標が不要な場合に使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サーバーの IP アドレス(s-ip)
- メソッド(cs-method)
- URI ステム(cs-uri-stem)
- URI クエリ(cs-uri-query)
- サーバー ポート(s-port)
- User Name(cs-username)
- クライアント IP アドレス(c-ip)
- プロトコルのバージョン(cs-version)
- ユーザー エージェント(cs(User-Agent))
- Referer(cs(Referer))
- プロトコル ステータス(sc-status)
- プロトコルのサブステータス(sc-substatus)
- Win32 ステータス(sc-win32-status)
パターン 8: パフォーマンスを重視した最小限の構成
このパターンは、パフォーマンス指標を含む最小限のロギングが必要で、クエリ文字列、リファラー、プロトコル バージョンを気にしない場合に使用します。
次のフィールドをこの順序で有効にします。
- Date(日付)
- Time(時間)
- サーバーの IP アドレス(s-ip)
- メソッド(cs-method)
- URI ステム(cs-uri-stem)
- サーバー ポート(s-port)
- User Name(cs-username)
- クライアント IP アドレス(c-ip)
- ユーザー エージェント(cs(User-Agent))
- プロトコル ステータス(sc-status)
- プロトコルのサブステータス(sc-substatus)
- Win32 ステータス(sc-win32-status)
- 所要時間(time-taken)
パターンの選択に関するガイダンス
ほとんどのデプロイでは、パターン 1 またはパターン 3 を使用します。
- パターン 1: 複数のサイトがあるセキュリティ重視のデプロイに最適です(リファラー、クエリ文字列、サイト名が含まれます)。
- パターン 3: 包括的な指標(サブステータス、Win32 エラー、帯域幅、タイミング、サイト名を含む)を必要とする本番環境に最適です。
- パターン 6/7: HTTP プロトコル バージョン(HTTP/2 の導入、TLS のトラブルシューティング)を追跡する必要がある場合に使用します。
- パターン 2/8: エラーの詳細を含む最小限のロギングに使用します。
構成を適用
- [OK] をクリックして、[W3C Logging Fields] ダイアログを閉じます。
- ログが書き込まれる [ディレクトリ] パスを確認します。
- デフォルト:
%SystemDrive%\inetpub\logs\LogFiles
- デフォルト:
- [ログファイルのロールオーバー] で、[毎日] を選択します(Google SecOps の取り込みにおすすめ)。
- [操作] ペインで [適用] をクリックします。
IIS ロギングを確認する
- ブラウザでウェブページを開いて、IIS サイトへのテスト トラフィックを生成します。
- ログ ディレクトリ
C:\inetpub\logs\LogFiles\W3SVC1\に移動します。 - メモ帳で最新のログファイル(
u_ex251020.logなど)を開きます。 #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 のインストール
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
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"
構成ファイルを編集します。
config.yamlファイルを見つけます。- デフォルト パス:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
- デフォルト パス:
- テキスト エディタ(メモ帳、VS Code、メモ帳++ など)を使用して、管理者としてファイルを開きます。
内容全体を次の構成に置き換えます。
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 のプロフェッショナルから回答を得ることができます。