收集 Microsoft IIS 記錄

支援的國家/地區:

本文說明如何使用 Bindplane 收集 Microsoft Internet Information Services (IIS) 記錄,並傳送至 Google Security Operations。剖析器會先嘗試清除及正規化輸入資料,方法是移除不必要的字元,並將欄位名稱標準化。接著,系統會使用一系列 grok 模式,從各種 Microsoft IIS 記錄格式中擷取相關欄位,並將這些欄位對應至統合式資料模型 (UDM)。

事前準備

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

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

取得 Google SecOps 擷取驗證檔案

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

取得 Google SecOps 客戶 ID

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

設定 IIS W3C 擴充記錄

這是最重要的步驟。您必須在 IIS 管理員中啟用正確的 W3C 欄位,Google SecOps 才能正確剖析記錄檔,偵測功能也能穩定運作。

開啟 IIS 管理工具

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

替代方法:

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

選取 W3C 擴充記錄格式

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

設定 W3C 記錄欄位

重要事項:Google SecOps IIS 剖析器僅支援 8 種欄位設定。您必須從下列其中一個模式啟用所有欄位。啟用不同欄位或混用模式會導致剖析失敗。

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

模式 1:完整網站背景資訊,包括查詢字串和位元組

請務必依序啟用下列欄位:

  • Date (日期)
  • 時間 (時間)
  • 服務名稱 (s-sitename)
  • 伺服器 IP 位址 (s-ip)
  • 方法 (cs-method)
  • URI 詞幹 (cs-uri-stem)
  • URI 查詢 (cs-uri-query)
  • 伺服器通訊埠 (s-port)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • 參照網址 (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)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • 通訊協定狀態 (sc-status)
  • 通訊協定子狀態 (sc-substatus)
  • Win32 狀態 (sc-win32-status)
  • 作答時間 (time-taken)

在下列情況下使用這個模式:您的管道包含參照網址,但您需要詳細的錯誤代碼和延遲時間 (time-taken)。

模式 3:基本,包含子狀態、Win32 狀態和效能 (含參照網址)

請務必依序啟用下列欄位:

  • Date (日期)
  • 時間 (時間)
  • 伺服器 IP 位址 (s-ip)
  • 方法 (cs-method)
  • URI 詞幹 (cs-uri-stem)
  • URI 查詢 (cs-uri-query)
  • 伺服器通訊埠 (s-port)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • 參照網址 (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)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 通訊協定版本 (cs-version)
  • 使用者代理程式 (cs(User-Agent))
  • 參照網址 (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)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 通訊協定版本 (cs-version)
  • 使用者代理程式 (cs(User-Agent))
  • 參照網址 (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)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • Cookie (cs(Cookie))
  • 參照網址 (cs(Referer))
  • 通訊協定狀態 (sc-status)
  • 通訊協定子狀態 (sc-substatus)
  • Win32 狀態 (sc-win32-status)

使用這個模式的時機:您的下游格式預期 Cookie 和參照網址都會以專屬資料欄的形式提供。

請務必依序啟用下列欄位:

  • Date (日期)
  • 時間 (時間)
  • 伺服器 IP 位址 (s-ip)
  • 方法 (cs-method)
  • URI 詞幹 (cs-uri-stem)
  • URI 查詢 (cs-uri-query)
  • 用戶端通訊埠 (c-port)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • 參照網址 (cs(Referer))
  • 通訊協定狀態 (sc-status)
  • 通訊協定子狀態 (sc-substatus)
  • Win32 狀態 (sc-win32-status)

適用情況:下游格式包含參照網址,但不包含 Cookie/時間/位元組。

請務必依序啟用下列欄位:

  • Date (日期)
  • 時間 (時間)
  • 伺服器 IP 位址 (s-ip)
  • 方法 (cs-method)
  • URI 詞幹 (cs-uri-stem)
  • URI 查詢 (cs-uri-query)
  • 用戶端通訊埠 (c-port)
  • 使用者名稱 (cs-username)
  • 用戶端 IP 位址 (c-ip)
  • 使用者代理程式 (cs(User-Agent))
  • 通訊協定狀態 (sc-status)
  • 通訊協定子狀態 (sc-substatus)
  • Win32 狀態 (sc-win32-status)

在下列情況下使用這個模式:您的下游格式不包含參照網址,且您只需要核心要求內容和狀態碼。

請勿啟用多個模式的欄位。剖析器會預期出現其中一種確切的設定。

套用設定

  1. 按一下「確定」關閉「W3C 記錄欄位」對話方塊。
  2. 確認要寫入記錄的「目錄」路徑。
    • 預設:%SystemDrive%\inetpub\logs\LogFiles
  3. 在「記錄檔輪替」下方,選取「每日」 (建議用於 Google SecOps 擷取)。
  4. 在「動作」窗格 (右側) 中,按一下「套用」

安裝 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 代理程式,以套用變更

  1. 儲存 config.yaml 檔案後,請重新啟動 Bindplane 服務:

    Start-Service "observIQ OpenTelemetry Collector"
    
  2. 確認服務正在執行:

    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 專業人員尋求答案。