收集 Microsoft IAS / 網路政策伺服器 (NPS) 記錄
本文說明如何使用 Microsoft Azure Blob Storage V2 設定 Google SecOps 資訊提供,藉此收集 Microsoft Internet Authentication Service (IAS) / Network Policy Server (NPS) 記錄。
Microsoft 網路政策伺服器 (NPS) 是 Microsoft 實作的 RADIUS (遠端使用者撥入驗證) 伺服器和 Proxy。NPS 可集中管理 VPN 連線、無線存取點、802.1X 驗證交換器和撥號遠端存取的網路存取驗證、授權和會計。在 Windows Server 2003 和更早版本中,NPS 稱為網際網路驗證服務 (IAS)。由於 NPS 是以 Windows Server 角色執行,沒有原生雲端匯出功能,因此本指南會使用 Azure 監視器代理程式,從本機檔案系統收集 NPS 帳戶記錄檔,並透過記錄檔分析工作區將這些檔案傳送至 Azure Blob 儲存體。
事前準備
請確認您已完成下列事前準備事項:
Google SecOps 執行個體
具備下列權限的 Microsoft Azure 入口網站特殊存取權:
- 建立儲存空間帳戶
- 建立及管理 Log Analytics 工作區
- 建立資料收集規則
- 建立資料匯出規則
- 管理存取金鑰
已安裝 NPS 角色的 Windows Server 2016 以上版本
NPS 伺服器的管理員存取權
從 NPS 伺服器到 Azure 的網路連線 (通訊埠 443 的 HTTPS 連出連線)
設定 NPS 會計和記錄
啟用 NPS,以 IAS 格式將驗證和帳戶要求記錄到本機文字檔。
啟用 NPS 會計記錄
- 在執行 NPS 的 Windows Server 上,開啟「伺服器管理員」。
- 依序前往「工具」>「網路原則伺服器」。
- 在 NPS 控制台樹狀結構中,按一下「會計」。
- 在詳細資料窗格的「會計」下方,按一下「設定會計」。
- 在「會計設定」精靈中,選取「記錄到本機電腦上的文字檔」,然後按一下「下一步」。
- 在「Configure Log File Properties」(設定記錄檔屬性) 頁面中,設定下列項目:
- 在「記錄下列資訊」部分,選取要記錄的資訊核取方塊:
- 會計要求
- 驗證要求
- 週期性會計狀態
- 定期驗證狀態
- 在「記錄失敗動作」部分,選取「如果記錄失敗,請捨棄連線要求」,讓 NPS 在記錄檔無法使用時停止處理。如果即使記錄失敗,仍要繼續處理 NPS,請取消勾選這個核取方塊。
- 在「記錄下列資訊」部分,選取要記錄的資訊核取方塊:
- 點選「下一步」。
- 檢閱摘要,然後按一下 [Finish] (完成)。
設定記錄檔屬性
- 在 NPS 控制台樹狀結構中,按一下「會計」。
- 在詳細資料窗格的「記錄檔屬性」下方,按一下「變更記錄檔屬性」。
- 按一下「記錄檔」分頁標籤。
- 在「目錄」欄位中,確認或變更記錄檔位置:
- 預設位置:
%systemroot%\System32\LogFiles - 為方便管理,請指定專用目錄 (例如
C:\NPSLogs)
- 預設位置:
在「格式」下拉式選單中,選取「IAS (舊版)」。
在「建立新的記錄檔」中,選取記錄檔輪替間隔:
- 每日 (建議用於大多數環境)
- 每週
- 每月
- 永不 (檔案大小無限制)
- 記錄檔達到這個大小時 (以 MB 為單位指定大小)
如要在磁碟空間不足時刪除舊記錄檔,請選取「磁碟空間不足時刪除舊記錄檔」。
按一下「確定」儲存設定。
確認記錄檔是否在設定的目錄中建立。
設定 Azure 儲存體帳戶
建立儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 儲存體帳戶名稱 輸入不重複的名稱 (例如 npsiaslogs)區域 選取區域 (例如 East US)效能 標準 (建議) 備援功能 GRS (異地備援儲存空間) 或 LRS (本機備援儲存空間) 按一下「Review + create」。
查看帳戶總覽,然後按一下「建立」。
等待部署作業完成。
取得儲存空間帳戶憑證
- 前往您剛建立的「儲存空間帳戶」。
- 在左側導覽中,選取「Security + networking」(安全性 + 網路) 下方的「Access keys」(存取金鑰)。
- 按一下「顯示金鑰」。
- 複製並儲存下列項目,以供日後使用:
- 儲存體帳戶名稱:儲存體帳戶名稱 (例如
npsiaslogs) - 金鑰 1 或金鑰 2:共用存取金鑰 (採用 Base64 編碼的 512 位元隨機字串)
- 儲存體帳戶名稱:儲存體帳戶名稱 (例如
取得 Blob 服務端點
- 在同一個儲存空間帳戶中,選取左側導覽列的「Endpoints」(端點)。
- 複製並儲存 Blob 服務端點網址。
- 範例:
https://npsiaslogs.blob.core.windows.net/
- 範例:
建立 Log Analytics 工作區
如要將 Azure 監視代理程式的自訂文字記錄匯出至 Azure Blob 儲存體,必須先將記錄傳送至記錄檔分析工作區。
- 在 Azure 入口網站中,搜尋 記錄檔分析工作區。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取與儲存空間帳戶相同的資源群組 名稱 輸入不重複的名稱 (例如 nps-ias-workspace)區域 選取與儲存空間帳戶相同的區域 按一下「檢查並建立」。
檢查設定,然後按一下「建立」。
等待部署作業完成。
建立自訂記錄資料表
在 Log Analytics 工作區中建立自訂資料表,儲存 NPS/IAS 記錄資料。
- 在 Azure 入口網站中,前往您剛建立的 Log Analytics 工作區。
- 在左側導覽面板中,選取「設定」下方的「表格」。
- 依序點選「+ 建立」>「新的自訂記錄 (以 DCR 為準)」。
- 在「Table name」(資料表名稱) 欄位中輸入
NpsIasLogs。完整資料表名稱為NpsIasLogs_CL。 點選「建立」。
將 NPS 伺服器加入 Azure Arc
由於 NPS 是在內部部署 Windows Server 上執行,因此您必須先將伺服器加入 Azure Arc,才能安裝 Azure 監視器代理程式。
向 Azure Arc 註冊 NPS 伺服器
- 在 Azure 入口網站中,搜尋 Azure Arc。
- 在左側導覽面板中,選取「基礎架構」下方的「機器」。
- 依序點選「+ 新增/建立」>「新增機器」。
- 在「透過 Azure Arc 新增伺服器」部分,選取「新增單一伺服器」下方的「產生指令碼」。
- 請提供下列設定詳細資料:
- 訂閱項目:選取 Azure 訂閱項目。
- 資源群組:選取先前使用的資源群組。
- 區域:選取與 Log Analytics 工作區相同的區域。
- 作業系統:選取「Windows」。
- 連線方法:選取「公開端點」 (或「Proxy 伺服器」,視網路需求而定)。
- 按一下「下載並執行指令碼」。
- 將產生的 PowerShell 指令碼複製到 NPS 伺服器。
在 NPS 伺服器上,以系統管理員身分開啟 PowerShell,然後執行指令碼:
& '.\OnboardingScript.ps1'按照畫面上的指示,透過 Azure 進行驗證並完成新手上路程序。
指令碼完成後,請返回 Azure 入口網站 > Azure Arc > 機器,並確認 NPS 伺服器顯示「已連線」狀態。
安裝 Azure Monitor 代理程式
在已啟用 Azure Arc 的伺服器上安裝 Azure 監視器代理程式
- 在 Azure 入口網站中,前往「Azure Arc」> 機器。
- 從機器清單中選取 NPS 伺服器。
- 在左側導覽中,選取「設定」下方的「擴充功能」。
- 按一下「+ 新增」。
- 從擴充功能清單中選取「Azure Monitor Agent」。
- 點選「下一步」。
- 按一下「Review + create」。
- 點選「建立」。
等待擴充功能安裝完成。狀態會變更為「佈建成功」。
為 NPS 記錄檔建立資料收集規則
資料收集規則 (DCR) 會指示 Azure 監視器代理程式收集 NPS IAS 記錄檔,並傳送至 Log Analytics 工作區。
- 在 Azure 入口網站中,搜尋「Monitor」。
- 在左側導覽中,選取「設定」下方的「資料收集規則」。
- 點選「+ 建立」。
- 在「基本」分頁中,提供下列設定詳細資料:
- 規則名稱:輸入
dcr-nps-ias-logs。 - 訂閱項目:選取 Azure 訂閱項目。
- 資源群組:選取先前使用的資源群組。
- 區域:選取與 Log Analytics 工作區相同的區域。
- 平台類型:選取「Windows」。
- 規則名稱:輸入
- 按一下「下一步:資源」。
- 在「資源」分頁中:
- 按一下「+ 新增資源」。
- 展開資源群組,然後選取已啟用 Azure Arc 的 NPS 伺服器。
- 按一下「套用」。
- 按一下「下一步:收取和交付」。
在「收取和運送」分頁中:
- 按一下「+ 新增資料來源」。
- 在「資料來源類型」下拉式選單中,選取「自訂文字記錄」。
在「File pattern」欄位中,輸入 NPS 記錄檔的路徑:
C:\Windows\System32\LogFiles\IN*.log在「Table name」(資料表名稱) 下拉式選單中,選取
NpsIasLogs_CL。在「記錄分隔符」欄位中,選取「行尾」。
在「轉換」欄位中輸入
source,即可傳送未經變更的原始記錄資料。按一下「新增資料來源」。
在「目的地」部分,確認您建立的 Log Analytics 工作區已列出。
按一下「下一步:檢閱 + 建立」。
檢查設定,然後按一下「建立」。
設定將資料匯出至 Azure Blob 儲存體
建立資料匯出規則,持續將 NPS/IAS 記錄資料從記錄檔分析工作區匯出至 Azure Blob 儲存體。
建立資料匯出規則
- 在 Azure 入口網站中,前往您建立的 記錄檔分析 工作區。
- 在左側導覽選單中,選取「設定」下方的「資料匯出」。
- 按一下「+ 新增匯出規則」。
- 在「基本」分頁中,提供下列設定詳細資料:
- 規則名稱:輸入
export-nps-ias-logs。 - 目的地:選取「儲存空間帳戶」。
- 規則名稱:輸入
- 按一下「下一步:來源」。
- 在「來源」分頁中,選取「NpsIasLogs_CL」資料表。
- 按一下「下一步:目的地」。
- 在「目的地」分頁中:
- 訂閱項目:選取包含儲存空間帳戶的訂閱項目。
- 「Storage Account」(儲存空間帳戶):選取您先前建立的儲存空間帳戶 (例如
npsiaslogs)。
- 按一下「Review + create」。
檢查設定,然後按一下「建立」。
在 Google SecOps 中設定動態饋給,擷取 Microsoft IAS 記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Microsoft IAS NPS Logs)。 - 選取「Microsoft Azure Blob Storage V2」做為「來源類型」。
- 選取「Microsoft IAS」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- Azure URI:輸入 Blob 服務端點網址和容器路徑:
https://npsiaslogs.blob.core.windows.net/am-NpsIasLogs_CL/- 取代下列項目:
npsiaslogs:您的 Azure 儲存體帳戶名稱。am-NpsIasLogs_CL:資料匯出規則自動建立的 Blob 容器名稱。
- 來源刪除選項:根據偏好設定選取刪除選項:
- 永不:轉移後一律不刪除任何檔案。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空白目錄:成功轉移檔案後,刪除檔案和空白目錄。
- 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
- 共用金鑰:輸入您先前從儲存空間帳戶擷取的共用金鑰值 (存取金鑰)
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
設定 Azure 儲存空間防火牆 (如已啟用)
如果 Azure 儲存體帳戶使用防火牆,您必須新增 Google SecOps IP 範圍。
- 在 Azure 入口網站中,前往「儲存體帳戶」。
- 選取「Security + networking」(安全性 + 網路) 下方的「Networking」(網路)。
- 在「防火牆和虛擬網路」下方,選取「從所選虛擬網路和 IP 位址啟用」。
- 在「防火牆」部分的「位址範圍」下方,按一下「+ 新增 IP 範圍」。
以 CIDR 標記法新增每個 Google SecOps IP 範圍。
如要取得目前的 IP 範圍,請按照下列步驟操作:
- 請參閱 IP 許可清單說明文件
- 或使用 Feed Management API 以程式輔助方式擷取
確認已選取「Allow Azure services on the trusted services list to access this storage account」核取方塊 (這是記錄檔分析資料匯出功能運作的必要條件)。
按一下 [儲存]。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
| packet_type | additional.fields | 如果欄位不為空白,則會與每個欄位的標籤合併 |
| auth_type | additional.fields | |
| filter_id | additional.fields | |
| framed_netmask | additional.fields | |
| framed_address | additional.fields | |
| framed_protocol | additional.fields | |
| framed_routing | additional.fields | |
| framed_mtu | additional.fields | |
| framed_compression | additional.fields | |
| reason_code | additional.fields | |
| extensible_auth_protocol | additional.fields | |
| service_type | additional.fields | |
| nas_port | additional.fields | |
| reply_message | additional.fields | |
| nas_identifier | additional.fields | |
| device-type | additional.fields | |
| coa-push | additional.fields | |
| audit-session-id | additional.fields | |
| 日期 | metadata.event_timestamp | 由日期和時間串連而成,然後以 MM/dd/yyyy HH:mm:ss 格式剖析 |
| 時間 | metadata.event_timestamp | |
| principal_present | metadata.event_type | 如果 principal_present 和 target_present 都存在,請設為「GENERIC_EVENT」,然後設為「NETWORK_CONNECTION」;如果只有 principal_present 存在,請設為「STATUS_UPDATE」 |
| target_present | metadata.event_type | |
| ac-user-agent | network.http.parsed_user_agent | 如果剖析成功,則從 ac-user-agent 轉換 |
| ac-user-agent | network.http.user_agent | 直接複製值 |
| session_duration | network.session_duration.seconds | 直接複製值,然後轉換為整數 |
| session_id | network.session_id | 直接複製值 |
| principal_hostname | principal.asset.hostname | 直接複製值 |
| principal_ip | principal.asset.ip | 如果 principal_ip 是有效的 IP,則為該值;如果 calling_station_id 是有效的 IP,則為該值 |
| calling_station_id | principal.asset.ip | |
| principal_hostname | principal.hostname | 直接複製值 |
| principal_ip | principal.ip | 如果 principal_ip 是有效的 IP,則為該值;如果 calling_station_id 是有效的 IP,則為該值 |
| calling_station_id | principal.ip | |
| device-mac | principal.mac | 如果裝置 MAC 位址不為空 (並將 - 替換為 :),則為該位址,否則為裝置公開 MAC 位址 |
| device-public-mac | principal.mac | |
| nat_ip | principal.nat_ip | 直接複製值 |
| device-platform | principal.platform | 如果位於 ["Win","win"] 中,則設為「WINDOWS」;如果 =~ "mac|iOS",則設為「MAC」;如果 =~ "lin",則設為「LINUX」 |
| device-platform-version | principal.platform_version | 直接複製值 |
| device-uid | principal.resource.product_object_id | 直接複製值 |
| user_name | principal.user.user_display_name | 直接複製值 |
| userid | principal.user.userid | 直接複製值 |
| service_name | target.application | 直接複製值 |
| computer_name | target.asset.hostname | 直接複製值 |
| target_ip | target.asset.ip | 如果目標 IP 有效,則為 target_ip 中的值;如果目標 IP 無效,則為 called_station_id 中的值 |
| called_station_id | target.asset.ip | |
| computer_name | target.hostname | 直接複製值 |
| target_ip | target.ip | 如果目標 IP 有效,則為 target_ip 中的值;如果目標 IP 無效,則為 called_station_id 中的值 |
| called_station_id | target.ip | |
| target_port | target.port | 直接複製值,然後轉換為整數 |
| metadata.product_name | metadata.product_name | 設為「MICROSOFT_IAS」 |
| metadata.vendor_name | metadata.vendor_name | 設為「MICROSOFT_IAS」 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。