收集 Microsoft IIS 記錄

支援的國家/地區:

本指南說明如何使用 Bindplane,將 Microsoft Internet Information Services (IIS) 記錄檔擷取至 Google Security Operations。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • 已安裝 IIS 的 Windows Server 2016 以上版本
  • IIS 伺服器的管理員存取權
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「設定檔」
  3. 複製並儲存「機構詳細資料」專區中的客戶 ID

設定 IIS W3C 擴充記錄

開啟 IIS 管理工具

  1. 按一下「啟動」
  2. 輸入 inetmgr,然後按下 Enter 鍵。
  3. 「Internet Information Services (IIS) Manager」(網際網路資訊服務 (IIS) 管理員) 視窗隨即開啟。

替代方法:

  1. 按下 Windows 鍵 + R 鍵
  2. 輸入 inetmgr,然後按下 Enter 鍵。
  1. 在「連線」窗格中,展開伺服器名稱。
  2. 如要設定全伺服器記錄 (建議):
    • 按一下根層級的伺服器名稱
  3. 如要設定特定網站的記錄功能,請按照下列步驟操作:
    • 展開「網站」,然後點選特定網站 (例如「預設網站」)。
  4. 在「Features View」(功能檢視畫面) 中,按兩下「Logging」(記錄)

選取 W3C 擴充記錄檔格式

  1. 在「記錄」頁面的「記錄檔」部分中:
    • 在「格式」下拉式選單中,選取「W3C」
  2. 按一下「選取欄位」按鈕。

設定 W3C 記錄欄位

在「W3C Logging Fields」(W3C 記錄欄位) 對話方塊中,根據下列其中一種模式選取欄位:

如果您需要完整的請求環境 (包括參照網址和查詢字串) 進行安全分析,且在單一伺服器上代管多個網站,請使用這個模式。

請依序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 服務名稱 (s-sitename)
  4. 伺服器 IP 位址 (s-ip)
  5. 方法 (cs-method)
  6. URI 詞幹 (cs-uri-stem)
  7. URI 查詢 (cs-uri-query)
  8. 伺服器通訊埠 (s-port)
  9. 使用者名稱 (cs-username)
  10. 用戶端 IP 位址 (c-ip)
  11. 使用者代理程式 (cs(User-Agent))
  12. 參照網址 (cs(Referer))
  13. 通訊協定狀態 (sc-status)
  14. 傳送的位元組 (sc-bytes)
  15. 接收的位元組 (cs-bytes)

模式 2:基本模式,包含子狀態和成效

需要詳細錯誤代碼 (子狀態、Win32 狀態) 和要求時間,以利排解問題時,請使用這個模式。

請按照確切順序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 伺服器 IP 位址 (s-ip)
  4. 方法 (cs-method)
  5. URI 詞幹 (cs-uri-stem)
  6. 伺服器通訊埠 (s-port)
  7. 使用者名稱 (cs-username)
  8. 用戶端 IP 位址 (c-ip)
  9. 使用者代理程式 (cs(User-Agent))
  10. 參照網址 (cs(Referer))
  11. 通訊協定狀態 (sc-status)
  12. 通訊協定子狀態 (sc-substatus)
  13. Win32 狀態 (sc-win32-status)
  14. 作答時間 (time-taken)

需要全面記錄網站識別資訊、詳細錯誤、頻寬指標和效能資料時,請使用這個模式。

請依序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 服務名稱 (s-sitename)
  4. 伺服器 IP 位址 (s-ip)
  5. 方法 (cs-method)
  6. URI 詞幹 (cs-uri-stem)
  7. URI 查詢 (cs-uri-query)
  8. 伺服器通訊埠 (s-port)
  9. 使用者名稱 (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. 時間 (時間)
  3. 服務名稱 (s-sitename)
  4. 伺服器 IP 位址 (s-ip)
  5. 方法 (cs-method)
  6. URI 詞幹 (cs-uri-stem)
  7. URI 查詢 (cs-uri-query)
  8. 伺服器通訊埠 (s-port)
  9. 使用者名稱 (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. 時間 (時間)
  3. 服務名稱 (s-sitename)
  4. 伺服器 IP 位址 (s-ip)
  5. 方法 (cs-method)
  6. URI 詞幹 (cs-uri-stem)
  7. URI 查詢 (cs-uri-query)
  8. 伺服器通訊埠 (s-port)
  9. 使用者名稱 (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,並提供子狀態和效能資訊

需要追蹤 HTTP/HTTPS 通訊協定版本 (HTTP/1.1、HTTP/2、HTTP/3) 以進行安全性分析或 TLS 疑難排解時,請使用這個模式。

請依序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 伺服器 IP 位址 (s-ip)
  4. 方法 (cs-method)
  5. URI 詞幹 (cs-uri-stem)
  6. URI 查詢 (cs-uri-query)
  7. 伺服器通訊埠 (s-port)
  8. 使用者名稱 (cs-username)
  9. 用戶端 IP 位址 (c-ip)
  10. 通訊協定版本 (cs-version)
  11. 使用者代理程式 (cs(User-Agent))
  12. 參照網址 (cs(Referer))
  13. 通訊協定狀態 (sc-status)
  14. 通訊協定子狀態 (sc-substatus)
  15. Win32 狀態 (sc-win32-status)
  16. 作答時間 (time-taken)

模式 7:支援 TLS,但不提供效能指標

使用這個模式的時機:與模式 6 相同,但您不需要時間指標。

請依序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 伺服器 IP 位址 (s-ip)
  4. 方法 (cs-method)
  5. URI 詞幹 (cs-uri-stem)
  6. URI 查詢 (cs-uri-query)
  7. 伺服器通訊埠 (s-port)
  8. 使用者名稱 (cs-username)
  9. 用戶端 IP 位址 (c-ip)
  10. 通訊協定版本 (cs-version)
  11. 使用者代理程式 (cs(User-Agent))
  12. 參照網址 (cs(Referer))
  13. 通訊協定狀態 (sc-status)
  14. 通訊協定子狀態 (sc-substatus)
  15. Win32 狀態 (sc-win32-status)

模式 8:效能優先的極簡設計

如果您只需要記錄效能指標,不在意查詢字串、參照網址或通訊協定版本,請使用這個模式。

請依序啟用下列欄位:

  1. Date (日期)
  2. 時間 (時間)
  3. 伺服器 IP 位址 (s-ip)
  4. 方法 (cs-method)
  5. URI 詞幹 (cs-uri-stem)
  6. 伺服器通訊埠 (s-port)
  7. 使用者名稱 (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. 按一下「確定」關閉「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
    

其他安裝資源

設定 Bindplane 代理程式,擷取 IIS 記錄並傳送至 Google SecOps

停止 Bindplane 服務

  • 編輯設定檔前,請先停止服務:

    Stop-Service "observIQ OpenTelemetry Collector"
    

編輯設定檔

  1. 找出 config.yaml 檔案。
    • 預設路徑:C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. 以管理員身分使用文字編輯器 (例如記事本、VS Code 或 Notepad++) 開啟檔案。
  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 用戶端要求的網址查詢字串。
cs-uri-stem target.url 用戶端要求的網址路徑。
cs-username principal.user.user_display_name 用戶端的名稱。
cs-version network.tls.version_protocol 用戶端使用的 HTTP 版本。
cs(Cookie) 用於擷取 Cookie 資訊。
cs(Referer) network.http.referral_url 將用戶端導向目前網頁的網址。
cs(User-Agent) network.http.user_agent 用戶端的 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 將用戶端導向目前網頁的網址。
csuseragent network.http.user_agent 用戶端的 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 目標機器的連接埠號碼。
持續時間 要求時間長度 (以毫秒為單位)。
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value 事件加入佇列的時間 (以世界標準時間為準)。
EventID metadata.product_log_id 活動的 ID。
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value 以世界標準時間為準的事件處理時間。
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 用於從原始記錄訊息擷取鍵/值組合。
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 與活動相關的部會。
名稱 實體名稱。
NewValue additional.fields.NewValue.value.string_value 設定的新值。
OldValue additional.fields.OldValue.value.string_value 設定的舊值。
通訊埠 principal.port 用戶端的連接埠號碼。
priority_code 系統記錄訊息的優先順序代碼。
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 將用戶端導向目前網頁的網址。
request_url target.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_facility security_result.severity_details syslog 訊息的設施。
syslog_pri 系統記錄訊息的優先順序。
syslog_severity security_result.severity_details 系統記錄訊息的嚴重程度。
syslog_severity_code 系統記錄訊息的嚴重性代碼。
標記 security_result.rule_name 與活動相關聯的標記。
任務 additional.fields.task.value.string_value 工作名稱。
時間 如果原始記錄時間戳記無效,可用於建構事件時間戳記。
time-taken 要求時間長度 (以毫秒為單位)。
uri_query target.url 用戶端要求的網址查詢字串。
user_agent network.http.user_agent 用戶端的 User-Agent。
使用者名稱 target.user.userid 使用者的使用者名稱。
UserSid target.user.windows_sid 使用者的 Windows SID。
權重 security_result.about.resource.attribute.labels.Weight.value 篩選條件的權重。
win32_status 回應的 Windows 狀態碼。
xforwardedfor X-Forwarded-For 標頭,內含以半形逗號分隔的 IP 位址清單。
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 專業人員尋求答案。