共用方式為


使用 Syslog 轉送將 Azure Stack Hub 與監視解決方案整合

本文說明如何使用 Syslog 將 Azure Stack Hub 基礎結構與您資料中心內已經部署的外部安全性解決方案整合。 例如,安全性資訊與事件管理 (SIEM) 系統。 Syslog 通道會公開來自 Azure Stack Hub 基礎結構之所有元件的稽核、警示及安全性記錄。 請使用 Syslog 轉送來與安全性監視解決方案整合和擷取所有稽核、警示及安全性記錄,來將其儲存以供保留。

從 1809 更新開始,Azure Stack Hub 便具有一個整合式 Syslog 用戶端,此用戶端在設定之後,就會發出 Syslog 訊息,訊息所含的承載會採用「常見事件格式」(CEF)。

下圖說明 Azure Stack Hub 與現有外部 SIEM 的整合。 需要考量的整合模式有兩個:第一個 (以藍色表示) 是包含基礎結構虛擬機器和 Hyper-V 節點的 Azure Stack Hub 基礎結構。 來自這些元件的所有稽核、安全性記錄及警示都會透過含 CEF 承載的 syslog 集中收集及公開。 此整合模式在此文件頁面中說明。 第二個整合模式是以橘色表示,涵蓋基礎板管理控制器 (BMC)、硬體生命週期主機 (HLH)、執行硬體夥伴監視的虛擬機器和虛擬設備和管理軟體,以及機架頂端 (TOR) 交換器。 因為這些元件為硬體夥伴專用,請連絡您的硬體夥伴,以取得如何將其與外部 SIEM 整合的文件。

Syslog 轉送圖

設定 Syslog 轉送

Azure Stack Hub 中的 Syslog 用戶端支援下列設定:

  1. 使用相互驗證 (用戶端與伺服器) 和 TLS 1.2 加密的 Syslog over TCP:在此設定中,Syslog 伺服器與 Syslog 用戶端都可透過憑證驗證彼此的身分識別。 傳送訊息時,會透過 TLS 1.2 加密通道進行傳送。

  2. 使用伺服器驗證和 TLS 1.2 加密的 Syslog over TCP:在此設定中,Syslog 用戶端可透過憑證驗證 Syslog 伺服器的身分識別。 傳送訊息時,會透過 TLS 1.2 加密通道進行傳送。

  3. Syslog over TCP,不使用加密:在此設定中,不會驗證 Syslog 用戶端和 Syslog 伺服器身分識別。 傳送訊息時,會以純文字形式透過 TCP 傳送。

  4. Syslog over UDP,不使用加密:在此設定中,不會驗證 Syslog 用戶端和 Syslog 伺服器身分識別。 傳送訊息時,會以純文字形式透過 UDP 傳送。

重要

針對生產環境,Microsoft 強烈建議您採用使用驗證和加密的 TCP (第 1 種設定或至少第 2 種設定),以抵禦攔截式攻擊和訊息竊聽。

用以設定 Syslog 轉送的 Cmdlet

若要設定 Syslog 轉送,必須存取具特殊權限的端點 (PEP)。 在 PEP 已新增兩個 PowerShell Cmdlet 來設定 Syslog 轉送:

### cmdlet to pass the syslog server information to the client and to configure the transport protocol, the encryption and the authentication between the client and the server

Set-SyslogServer [-ServerName <String>] [-ServerPort <UInt16>] [-NoEncryption] [-SkipCertificateCheck] [-SkipCNCheck] [-UseUDP] [-Remove]

### cmdlet to configure the certificate for the syslog client to authenticate with the server

Set-SyslogClient [-pfxBinary <Byte[]>] [-CertPassword <SecureString>] [-RemoveCertificate] [-OutputSeverity]

Cmdlet 參數

Set-SyslogServer Cmdlet 的參數:

參數 描述 類型 必要
ServerName Syslog 伺服器的 FQDN 或 IP 位址。 String
ServerPort Syslog 伺服器正在接聽的連接埠號碼。 UInt16 yes
NoEncryption 強制用戶端以純文字形式傳送 Syslog 訊息。 flag
SkipCertificateCheck 在初始 TLS 信號交換期間,針對 Syslog 伺服器所提供的憑證略過驗證。 flag
SkipCNCheck 在初始 TLS 信號交換期間,針對 Syslog 伺服器所提供憑證的「一般名稱」值略過驗證。 flag
UseUDP 使用 Syslog 搭配 UDP 作為傳輸通訊協定。 flag
移除 從用戶端中移除伺服器設定並停止 Syslog 轉送。 flag

Set-SyslogClient Cmdlet 的參數:

參數 描述 類型
pfxBinary 包含憑證的 pfx 檔案內容 (以管道傳送至 Byte[]),該憑證是用戶端要用來作為身分識別以向 Syslog 伺服器進行驗證的憑證。 Byte[]
CertPassword 用來匯入與 pfx 檔案關聯之私密金鑰的密碼。 SecureString
RemoveCertificate 從用戶端移除憑證。 flag
OutputSeverity 輸出記錄的層級。 值為 DefaultVerbose。 Default 包含嚴重性層級:警告、重大或錯誤。 Verbose 包含所有嚴重性層級:詳細資訊、資訊、警告、重大或錯誤。 String

設定使用 TCP、相互驗證及 TLS 1.2 加密的 Syslog 轉送

在此設定中,Azure Stack Hub 中的 Syslog 用戶端會透過使用 TLS 1.2 加密的 TCP 將訊息轉送給 Syslog 伺服器。 在初始信號交換期間,用戶端會確認伺服器是否提供了有效、受信任的憑證。 用戶端也會提供憑證給伺服器,作為其身分識別的證明。 這是最安全的設定,因為它提供用戶端與伺服器兩者的完整身分識別驗證,並且是透過加密的通道傳送訊息。

重要

Microsoft 強烈建議您針對生產環境使用此設定。

若要設定使用 TCP、相互驗證及 TLS 1.2 加密的 Syslog 轉送,請在 PEP 工作階段上執行以下兩個 Cmdlet:

# Configure the server
Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on>

# Provide certificate to the client to authenticate against the server
Set-SyslogClient -pfxBinary <Byte[] of pfx file> -CertPassword <SecureString, password for accessing the pfx file>

用戶端憑證的根必須與部署 Azure Stack Hub 時所提供的根相同。 此外,此憑證也必須包含私密金鑰。

##Example on how to set your syslog client with the certificate for mutual authentication.
##This example script must be run from your hardware lifecycle host or privileged access workstation.

$ErcsNodeName = "<yourPEP>"
$password = ConvertTo-SecureString -String "<your cloudAdmin account password" -AsPlainText -Force
 
$cloudAdmin = "<your cloudAdmin account name>"
$CloudAdminCred = New-Object System.Management.Automation.PSCredential ($cloudAdmin, $password)
 
$certPassword = $password
$certContent = Get-Content -Path C:\cert\<yourClientCertificate>.pfx -Encoding Byte
 
$params = @{ 
    ComputerName = $ErcsNodeName 
    Credential = $CloudAdminCred 
    ConfigurationName = "PrivilegedEndpoint" 
}

$session = New-PSSession @params
 
$params = @{ 
    Session = $session 
    ArgumentList = @($certContent, $certPassword) 
}
Write-Verbose "Invoking cmdlet to set syslog client certificate..." -Verbose 
Invoke-Command @params -ScriptBlock { 
    param($CertContent, $CertPassword) 
    Set-SyslogClient -PfxBinary $CertContent -CertPassword $CertPassword }

設定使用 TCP、伺服器驗證及 TLS 1.2 加密的 Syslog 轉送

在此設定中,Azure Stack Hub 中的 Syslog 用戶端會透過使用 TLS 1.2 加密的 TCP 將訊息轉送給 Syslog 伺服器。 在初始信號交換期間,用戶端也會確認伺服器提供有效、受信任的憑證。 此設定可防止用戶端將訊息傳送至不受信任的目的地。 使用驗證和加密的 TCP 是預設設定,並且代表 Microsoft 針對生產環境建議的最低安全性層級。

Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on>

如果您想要使用自我簽署或未受信任的憑證來測試 Syslog 伺服器與 Azure Stack Hub 用戶端的整合,您可以使用這些旗標,在初始信號交換期間略過用戶端所執行的伺服器驗證。

 #Skip validation of the Common Name value in the server certificate. Use this flag if you provide an IP address for your syslog server
 Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on>
 -SkipCNCheck

 #Skip entirely the server certificate validation
 Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on>
 -SkipCertificateCheck

重要

Microsoft 建議針對生產環境不要使用 -SkipCertificateCheck 旗標。

設定使用 TCP 且不加密的 Syslog 轉送

在此設定中,Azure Stack Hub 中的 Syslog 用戶端會透過 TCP,在不加密的情況下將訊息轉送給 Syslog 伺服器。 用戶端既不會驗證伺服器的身分識別,也不會向伺服器提供自己的身分識別來進行驗證。

Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on> -NoEncryption

重要

Microsoft 建議針對生產環境不要使用此設定。

設定使用 UDP 且不加密的 Syslog 轉送

在此設定中,Azure Stack Hub 中的 Syslog 用戶端會透過 UDP,在不加密的情況下將訊息轉送給 Syslog 伺服器。 用戶端既不會驗證伺服器的身分識別,也不會向伺服器提供自己的身分識別來進行驗證。

Set-SyslogServer -ServerName <FQDN or ip address of syslog server> -ServerPort <Port number on which the syslog server is listening on> -UseUDP

雖然不使用加密的 UDP 在設定上最為簡單,但它對於攔截式攻擊和訊息竊聽無法提供任何防護。

重要

Microsoft 建議針對生產環境不要使用此設定。

移除 Syslog 轉送設定

將 Syslog 伺服器設定全部移除並停止 Syslog 轉送:

從伺服器端中移除 Syslog 伺服器設定

Set-SyslogServer -Remove

從用戶端中移除用戶端憑證

Set-SyslogClient -RemoveCertificate

驗證 Syslog 設定

如果您已成功將 Syslog 用戶端連線到 Syslog 伺服器,應該很快就會開始收到事件。 若未看到任何事件,請執行下列 Cmdlet 來驗證 Syslog 用戶端的設定:

驗證 Syslog 用戶端中的伺服器設定

Get-SyslogServer

驗證 Syslog 用戶端中的憑證設定

Get-SyslogClient

Syslog 訊息結構描述

Azure Stack Hub 基礎結構的 Syslog 轉送會傳送採用「常見事件格式」(CEF) 的訊息。 每個 Syslog 訊息都會根據此結構描述來建立結構:

<Time> <Host> <CEF payload>

CEF 承載會根據下面的結構,但每個欄位的對應會依訊息的類型 (Windows 事件、已建立的警示、已關閉的警示) 而有所不同。

# Common Event Format schema
CEF: <Version>|<Device Vendor>|<Device Product>|<Device Version>|<Signature ID>|<Name>|<Severity>|<Extensions>
* Version: 0.0
* Device Vendor: Microsoft
* Device Product: Microsoft Azure Stack Hub
* Device Version: 1.0

具有特殊權限端點事件的 CEF 對應

Prefix fields
* Signature ID: Microsoft-AzureStack-PrivilegedEndpoint: <PEP Event ID>
* Name: <PEP Task Name>
* Severity: mapped from PEP Level (details see the PEP Severity table below)
* Who: account used to connect to the PEP
* WhichIP: IP address of ERCS server hosting the PEP

具有特殊權限端點的事件表格:

事件 PEP 事件識別碼 PEP 工作名稱 嚴重性
PrivilegedEndpointAccessed 1000 PrivilegedEndpointAccessedEvent 5
SupportSessionTokenRequested 1001 SupportSessionTokenRequestedEvent 5
SupportSessionDevelopmentTokenRequested 1002 SupportSessionDevelopmentTokenRequestedEvent 5
SupportSessionUnlocked 1003 SupportSessionUnlockedEvent 10
SupportSessionFailedToUnlock 1004 SupportSessionFailedToUnlockEvent 10
PrivilegedEndpointClosed 1005 PrivilegedEndpointClosedEvent 5
NewCloudAdminUser 1006 NewCloudAdminUserEvent 10
RemoveCloudAdminUser 1007 RemoveCloudAdminUserEvent 10
SetCloudAdminUserPassword 1008 SetCloudAdminUserPasswordEvent 5
GetCloudAdminPasswordRecoveryToken 1009 GetCloudAdminPasswordRecoveryTokenEvent 10
ResetCloudAdminPassword 1010 ResetCloudAdminPasswordEvent 10
PrivilegedEndpointSessionTimedOut 1017 PrivilegedEndpointSessionTimedOutEvent 5

PEP 嚴重性表格:

嚴重性 層級 數值
0 未定義 值:0。 指出所有層級的記錄
10 重大 值:1。 指出某個重要警示的記錄
8 錯誤 值:2。 指出某個錯誤的記錄
5 警告 值:3。 指出某個警告的記錄
2 資訊 值:4。 指出某個告知性訊息的記錄
0 「詳細資訊」 值:5。 指出所有層級的記錄

復原端點事件的 CEF 對應

Prefix fields
* Signature ID: Microsoft-AzureStack-PrivilegedEndpoint: <REP Event ID>
* Name: <REP Task Name>
* Severity: mapped from REP Level (details see the REP Severity table below)
* Who: account used to connect to the REP
* WhichIP: IP address of the device used to connect to the REP

復原端點的事件表格:

事件 REP 事件識別碼 REP 工作名稱 嚴重性
RecoveryEndpointAccessed 1011 RecoveryEndpointAccessedEvent 5
RecoverySessionTokenRequested 1012 RecoverySessionTokenRequestedEvent 5
RecoverySessionDevelopmentTokenRequested 1013 RecoverySessionDevelopmentTokenRequestedEvent 5
RecoverySessionUnlocked 1014 RecoverySessionUnlockedEvent 10
RecoverySessionFailedToUnlock 1015 RecoverySessionFailedToUnlockEvent 10
RecoveryEndpointClosed 1016 RecoveryEndpointClosedEvent 5

REP 嚴重性表格:

嚴重性 層級 數值
0 未定義 值:0。 指出所有層級的記錄
10 重大 值:1。 指出某個重要警示的記錄
8 錯誤 值:2。 指出某個錯誤的記錄
5 警告 值:3。 指出某個警告的記錄
2 資訊 值:4。 指出某個告知性訊息的記錄
0 「詳細資訊」 值:5。 指出所有層級的記錄

Windows 事件的 CEF 對應

* Signature ID: ProviderName:EventID
* Name: TaskName
* Severity: Level (for details, see the severity table below)
* Extension: Custom Extension Name (for details, see the Custom Extension table below)

Windows 事件的嚴重性表格:

CEF 嚴重性值 Windows 事件層級 數值
0 未定義 值:0。 指出所有層級的記錄
10 重大 值:1。 指出某個重要警示的記錄
8 錯誤 值:2。 指出某個錯誤的記錄
5 警告 值:3。 指出某個警告的記錄
2 資訊 值:4。 指出某個告知性訊息的記錄
0 「詳細資訊」 值:5。 指出所有層級的記錄

Azure Stack Hub 中 Windows 事件的自訂延伸模組表格:

自訂延伸模組名稱 Windows 事件範例
MasChannel 系統
MasComputer test.azurestack.contoso.com
MasCorrelationActivityID C8F40D7C-3764-423B-A4FA-C994442238AF
MasCorrelationRelatedActivityID C8F40D7C-3764-423B-A4FA-C994442238AF
MasEventData svchost!!4132,G,0!!!!EseDiskFlushConsistency!!ESENT!!0x800000
MasEventDescription 已成功處理使用者的「群組原則」設定。 自上次成功處理「群組原則」之後,未偵測到任何變更。
MasEventID 1501
MasEventRecordID 26637
MasExecutionProcessID 29380
MasExecutionThreadID 25480
MasKeywords 0x8000000000000000
MasKeywordName 稽核成功
MasLevel 4
MasOpcode 1
MasOpcodeName info
MasProviderEventSourceName
MasProviderGuid AEA1B4FA-97D1-45F2-A64C-4D69FFFD92C9
MasProviderName Microsoft-Windows-GroupPolicy
MasSecurityUserId <Windows SID>
MasTask 0
MasTaskCategory 處理序建立
MasUserData KB4093112!!5112!!Installed!!0x0!!WindowsUpdateAgent Xpath: /Event/UserData/*
MasVersion 0

已建立之警示的 CEF 對應

* Signature ID: Microsoft Azure Stack Hub Alert Creation : FaultTypeId
* Name: FaultTypeId : AlertId
* Severity: Alert Severity (for details, see alerts severity table below)
* Extension: Custom Extension Name (for details, see the Custom Extension table below)

警示嚴重性表格:

嚴重性 層級
0 未定義
10 重大
5 警告

Azure Stack Hub 中已建立之警示的自訂延伸模組表格:

自訂延伸模組名稱 範例
MasEventDescription 描述:已為 <TestDomain> 建立使用者帳戶 <TestUser>。 這是一個潛在的安全性風險。 -- 補救:請連絡支援人員。 需要取得「客戶協助」來解決此問題。 請務必尋求他們的協助,不要嘗試自行解決此問題。 在您開啟支援要求之前,請先參考 https://aka.ms/azurestacklogfiles 的指引來啟動記錄檔收集程序。

已關閉之警示的 CEF 對應

* Signature ID: Microsoft Azure Stack Hub Alert Creation : FaultTypeId
* Name: FaultTypeId : AlertId
* Severity: Information

以下範例顯示含有 CEF 承載的 Syslog 訊息:

2018:05:17:-23:59:28 -07:00 TestHost CEF:0.0|Microsoft|Microsoft Azure Stack Hub|1.0|3|TITLE: User Account Created -- DESCRIPTION: A user account \<TestUser\> was created for \<TestDomain\>. It's a potential security risk. -- REMEDIATION: Please contact Support. Customer Assistance is required to resolve this issue. Do not try to resolve this issue without their assistance. Before you open a support request, start the log file collection process using the guidance from https://aka.ms/azurestacklogfiles|10

Syslog 事件類型

下表列出所有透過 syslog 通道傳送的事件類型、事件、訊息結構描述或屬性。 只有在 SIEM 整合需要 Windows 資訊事件時,才應使用安裝程式詳細資訊參數。

事件類型 事件或訊息結構描述 需要詳細資訊設定 事件描述 (選用)
Azure Stack Hub 警示 如需警示訊息結構描述,請參閱已關閉警示的 CEF 對應

在個別文件中共用的所有警示清單。
No 系統健康情況警示
特殊權限端點事件 如需特殊權限端點訊息的結構描述,請參閱特殊權限端點事件的 CEF 對應

PrivilegedEndpointAccessed
SupportSessionTokenRequested
SupportSessionDevelopmentTokenRequested
SupportSessionUnlocked
SupportSessionFailedToUnlock
PrivilegedEndpointClosed
NewCloudAdminUser
RemoveCloudAdminUser
SetCloudAdminUserPassword
GetCloudAdminPasswordRecoveryToken
ResetCloudAdminPassword
PrivilegedEndpointSessionTimedOut
No
修復端點事件 如需修復端點訊息的結構描述,請參閱復原端點事件的 CEF 對應
RecoveryEndpointAccessed
RecoverySessionTokenRequested
RecoverySessionDevelopmentTokenRequested
RecoverySessionUnlocked
RecoverySessionFailedToUnlock
Recovand RecoveryEndpointClosed
No
Windows 安全性事件
如需 Windows 事件訊息結構描述的詳細資訊,請參閱 Windows 事件的 CEF 對應
是 (取得資訊事件) 輸入:
- 資訊
- Warning (警告)
- Error (錯誤)
- 重大
ARM 事件 訊息屬性:

AzsSubscriptionId
AzsCorrelationId
AzsPrincipalOid
AzsPrincipalPuid
AzsTenantId
AzsOperationName
AzsOperationId
AzsEventSource
AzsDescription
AzsResourceProvider
AzsResourceUri
AzsEventName
AzsEventInstanceId
AzsChannels
AzsEventLevel
AzsStatus
AzsSubStatus
AzsClaims
AzsAuthorization
AzsHttpRequest
AzsProperties
AzsEventTimestamp
AzsAudience
AzsIssuer
AzsIssuedAt
AzsApplicationId
AzsUniqueTokenId
AzsArmServiceRequestId
AzsEventCategory

No
每個已註冊的 ARM 資源都可以引發事件。
BCDR 事件 訊息結構描述:

AuditingManualBackup {
}
AuditingConfig
{
間隔
保留
IsSchedulerEnabled
BackupPath
}
AuditingPruneBackupStore {
IsInternalStore
}
No 這些事件會追蹤客戶手動完成的基礎結構備份管理作業,包括觸發備份、變更備份設定,以及剪除備份資料。
基礎結構錯誤建立和關閉事件 訊息結構描述:

InfrastructureFaultOpen {
AzsFaultId,
AzsFaultTypeName,
AzsComponentType,
AzsComponentName,
AzsFaultHash,
AzsCreatedTimeUtc,
AzsSource
}

InfrastructureFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsComponentType,
AzsComponentName,
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
No 錯誤會觸發嘗試補救錯誤的工作流程,其可能導致警示。 如果未補救錯誤,則會直接導致警示。
服務錯誤建立和關閉事件 訊息結構描述:

ServiceFaultOpen {
AzsFaultId,
AzsFaultTypeName,
AzsSubscriptionId,
AzsResourceGroup,
AzsServiceName,
AzsResourceId
AzsFaultHash,
AzsCreatedTimeUtc,
AzsSource
}

ServiceFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsSubscriptionId,
AzsResourceGroup,
AzsServiceName,
AzsResourceId
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
No 錯誤會觸發嘗試補救錯誤的工作流程,其可能導致警示。
如果未補救錯誤,則會直接導致警示。
PEP WAC 事件 訊息結構描述:

前置詞欄位
* 簽署識別碼:Microsoft-AzureStack-PrivilegedEndpoint:<PEP 事件識別碼>
* 名稱:<PEP 工作名稱>
* 嚴重性:從 PEP 層級對應 (如需詳細資料,請參閱下面的 PEP 嚴重性表格)
* 誰:用來連線到 PEP 的帳戶
* 哪個 IP:裝載 PEP 的 ERCS 伺服器的 IP 位址

WACServiceStartFailedEvent
WACConnectedUserNotRetrievedEvent
WACEnableExceptionEvent
WACUserAddedEvent
WACAddUserToLocalGroupFailedEvent
WACIsUserInLocalGroupFailedEvent
WACServiceStartTimeoutEvent
WACServiceStartInvalidOperationEvent
WACGetSidFromUserFailedEvent
WACDisableFirewallFailedEvent
WACCreateLocalGroupIfNotExistFailedEvent
WACEnableFlagIsTrueEvent
WACEnableFlagIsFalseEvent
WACServiceStartedEvent

後續步驟

服務原則