使用 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 轉送
Azure Stack Hub 中的 Syslog 用戶端支援下列設定:
使用相互驗證 (用戶端與伺服器) 和 TLS 1.2 加密的 Syslog over TCP:在此設定中,Syslog 伺服器與 Syslog 用戶端都可透過憑證驗證彼此的身分識別。 傳送訊息時,會透過 TLS 1.2 加密通道進行傳送。
使用伺服器驗證和 TLS 1.2 加密的 Syslog over TCP:在此設定中,Syslog 用戶端可透過憑證驗證 Syslog 伺服器的身分識別。 傳送訊息時,會透過 TLS 1.2 加密通道進行傳送。
Syslog over TCP,不使用加密:在此設定中,不會驗證 Syslog 用戶端和 Syslog 伺服器身分識別。 傳送訊息時,會以純文字形式透過 TCP 傳送。
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 | 輸出記錄的層級。 值為 Default 或 Verbose。 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 |
否 |