Integrare l'hub di Azure Stack con soluzioni di monitoraggio tramite l'inoltro syslog

Questo articolo illustra come usare syslog per integrare l'infrastruttura dell'hub di Azure Stack con soluzioni di sicurezza esterne già distribuite nel data center. Ad esempio, un sistema SIEM (Security Information Management). Il canale syslog espone controlli, avvisi e log di sicurezza da tutti i componenti dell'infrastruttura dell'hub di Azure Stack. Usare l'inoltro syslog per integrare le soluzioni di monitoraggio della sicurezza e recuperare tutti i controlli, gli avvisi e i log di sicurezza per archiviarli per la conservazione.

A partire dall'aggiornamento 1809, l'hub di Azure Stack ha un client syslog integrato che, una volta configurato, genera messaggi syslog con il payload in Common Event Format (CEF).

Il diagramma seguente descrive l'integrazione dell'hub di Azure Stack con un siem esterno. Esistono due modelli di integrazione che devono essere considerati: il primo (quello in blu) è l'infrastruttura dell'hub di Azure Stack che include le macchine virtuali dell'infrastruttura e i nodi Hyper-V. Tutti i controlli, i log di sicurezza e gli avvisi di tali componenti vengono raccolti e esposti centralmente tramite syslog con il payload CEF. Questo modello di integrazione è descritto in questa pagina del documento. Il secondo modello di integrazione è quello illustrato in arancione e copre i controller di gestione base (BMC), l'host del ciclo di vita hardware (HLH), le macchine virtuali e le appliance virtuali che eseguono il software di monitoraggio e gestione del partner hardware e i commutatori top di rack (TOR). Poiché questi componenti sono specifici del partner hardware, contattare il partner hardware per la documentazione su come integrarli con un siem esterno.

Syslog forwarding diagram

Configurazione dell'inoltro syslog

Il client syslog nell'hub di Azure Stack supporta le configurazioni seguenti:

  1. Syslog su TCP, con autenticazione reciproca (client e server) e crittografia TLS 1.2: In questa configurazione, sia il server syslog che il client syslog possono verificare l'identità tra loro tramite certificati. I messaggi vengono inviati tramite un canale crittografato TLS 1.2.

  2. Syslog su TCP con autenticazione server e crittografia TLS 1.2: In questa configurazione il client syslog può verificare l'identità del server syslog tramite un certificato. I messaggi vengono inviati tramite un canale crittografato TLS 1.2.

  3. Syslog su TCP, senza crittografia: In questa configurazione non vengono verificate le identità del server syslog e del client syslog. I messaggi vengono inviati in testo non crittografato tramite TCP.

  4. Syslog su UDP, senza crittografia: In questa configurazione non vengono verificate le identità del server syslog e del client syslog. I messaggi vengono inviati in testo chiaro tramite UDP.

Importante

Microsoft consiglia vivamente di usare TCP usando l'autenticazione e la crittografia (configurazione #1 o, al minimo, #2) per gli ambienti di produzione per proteggere dagli attacchi man-in-the-middle e l'intercettazione dei messaggi.

Cmdlet per configurare l'inoltro syslog

La configurazione dell'inoltro syslog richiede l'accesso all'endpoint con privilegi (PEP). Sono stati aggiunti due cmdlet di PowerShell al PEP per configurare l'inoltro 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]

Parametri dei cmdlet

Parametri per il cmdlet Set-SyslogServer :

Parametro Descrizione Type Necessario
ServerName FQDN o indirizzo IP del server syslog. string yes
ServerPort Numero di porta su cui è in ascolto il server syslog. UInt16 yes
NoEncryption Forzare il client a inviare messaggi syslog in testo non crittografato. flag no
SkipCertificateCheck Ignorare la convalida del certificato fornito dal server syslog durante l'handshake TLS iniziale. flag no
SkipCNCheck Ignorare la convalida del valore Common Name del certificato fornito dal server syslog durante l'handshake TLS iniziale. flag no
UseUDP Usare syslog con UDP come protocollo di trasporto. flag No
Rimuovi Rimuovere la configurazione del server dal client e arrestare l'inoltro syslog. flag No

Parametri per il cmdlet Set-SyslogClient :

Parametro Descrizione Type
pfxBinary Contenuto del file pfx, piped a byte[], contenente il certificato da utilizzare dal client come identità per l'autenticazione nel server syslog. Byte[]
CertPassword Password per importare la chiave privata associata al file pfx. SecureString
RemoveCertificate Rimuovere il certificato dal client. flag
OutputSeverity Livello di registrazione dell'output. I valori sono Default o Verbose. Il valore predefinito include livelli di gravità: avviso, critico o errore. Verbose include tutti i livelli di gravità: dettagliato, informativo, avviso, critico o errore. string

Configurazione dell'inoltro syslog con TCP, autenticazione reciproca e crittografia TLS 1.2

In questa configurazione il client syslog nell'hub di Azure Stack inoltra i messaggi al server syslog tramite TCP, con crittografia TLS 1.2. Durante l'handshake iniziale, il client verifica che il server fornisca un certificato valido e attendibile. Il client fornisce anche un certificato al server come prova della relativa identità. Questa configurazione è la più sicura in quanto fornisce una convalida completa dell'identità del client e del server e invia messaggi su un canale crittografato.

Importante

Microsoft consiglia vivamente di usare questa configurazione per gli ambienti di produzione.

Per configurare l'inoltro syslog con TCP, autenticazione reciproca e crittografia TLS 1.2, eseguire entrambi questi cmdlet in una sessione PEP:

# 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>

Il certificato client deve avere la stessa radice fornita durante la distribuzione dell'hub di Azure Stack. Deve inoltre contenere una chiave privata.

##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 }

Configurazione dell'inoltro syslog con TCP, autenticazione server e crittografia TLS 1.2

In questa configurazione il client syslog nell'hub di Azure Stack inoltra i messaggi al server syslog tramite TCP, con crittografia TLS 1.2. Durante l'handshake iniziale, il client verifica anche che il server fornisca un certificato valido e attendibile. Questa configurazione impedisce al client di inviare messaggi a destinazioni non attendibili. TCP usando l'autenticazione e la crittografia è la configurazione predefinita e rappresenta il livello minimo di sicurezza consigliato da Microsoft per un ambiente di produzione.

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

Se si vuole testare l'integrazione del server syslog con il client dell'hub di Azure Stack usando un certificato autofirmato o non attendibile, è possibile usare questi flag per ignorare la convalida del server eseguita dal client durante l'handshake iniziale.

 #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

Importante

Microsoft consiglia di usare il flag -SkipCertificateCheck per gli ambienti di produzione.

Configurazione dell'inoltro syslog con TCP e nessuna crittografia

In questa configurazione, il client syslog nell'hub di Azure Stack inoltra i messaggi al server syslog su TCP, senza crittografia. Il client non verifica l'identità del server né fornisce la propria identità al server per la verifica.

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

Importante

Microsoft consiglia di usare questa configurazione per gli ambienti di produzione.

Configurazione dell'inoltro syslog con UDP e senza crittografia

In questa configurazione, il client syslog nell'hub di Azure Stack inoltra i messaggi al server syslog tramite UDP, senza crittografia. Il client non verifica l'identità del server né fornisce la propria identità al server per la verifica.

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

Anche se UDP senza crittografia è il più semplice da configurare, non fornisce alcuna protezione dagli attacchi man-in-the-middle e dall'intercettazione dei messaggi.

Importante

Microsoft consiglia di usare questa configurazione per gli ambienti di produzione.

Rimozione della configurazione dell'inoltro syslog

Per rimuovere completamente la configurazione del server syslog e arrestare l'inoltro syslog:

Rimuovere la configurazione del server syslog dal client

Set-SyslogServer -Remove

Rimuovere il certificato client dal client

Set-SyslogClient -RemoveCertificate

Verifica dell'installazione di syslog

Se il client syslog è stato connesso correttamente al server syslog, è consigliabile iniziare a ricevere gli eventi. Se non viene visualizzato alcun evento, verificare la configurazione del client syslog eseguendo i cmdlet seguenti:

Verificare la configurazione del server nel client syslog

Get-SyslogServer

Verificare l'installazione del certificato nel client syslog

Get-SyslogClient

Schema dei messaggi Syslog

L'inoltro syslog dell'infrastruttura dell'hub di Azure Stack invia messaggi formattati in Common Event Format (CEF). Ogni messaggio syslog è strutturato in base a questo schema:

<Time> <Host> <CEF payload>

Il payload CEF si basa sulla struttura seguente, ma il mapping per ogni campo varia a seconda del tipo di messaggio (Windows Evento, Avviso creato, Avviso chiuso).

# 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

Mapping CEF per gli eventi endpoint con privilegi

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

Tabella degli eventi per l'endpoint con privilegi:

Evento ID evento PEP Nome attività PEP Gravità
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

Tabella di gravità PEP:

Gravità Livello Valore numerico
0 Non definito Valore: 0 Indica i log a tutti i livelli
10 Critico Valore: 1. Indica i log per un avviso critico
8 Errore Valore: 2. Indica i log per un errore
5 Avviso Valore: 3. Indica i log per un avviso
2 Informazioni Valore: 4. Indica i log per un messaggio informativo
0 Dettagliato Valore: 5. Indica i log a tutti i livelli

Mapping CEF per gli eventi dell'endpoint di ripristino

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

Tabella degli eventi per l'endpoint di ripristino:

Evento ID evento REP Nome attività REP Gravità
RecoveryEndpointAccessed 1011 RecoveryEndpointAccessedEvent 5
RecoverySessionTokenRequested 1012 RecoverySessionTokenRequestedEvent 5
RecoverySessionDevelopmentTokenRequested 1013 RecoverySessionDevelopmentTokenRequestedEvent 5
RecoverySessionUnlocked 1014 RecoverySessionUnlockedEvent 10
RecoverySessionFailedToUnlock 1015 RecoverySessionFailedToUnlockEvent 10
RecoveryEndpointClosed 1016 RecoveryEndpointClosedEvent 5

Tabella di gravità rep:

Gravità Livello Valore numerico
0 Non definito Valore: 0 Indica i log a tutti i livelli
10 Critico Valore: 1. Indica i log per un avviso critico
8 Errore Valore: 2. Indica i log per un errore
5 Avviso Valore: 3. Indica i log per un avviso
2 Informazioni Valore: 4. Indica i log per un messaggio informativo
0 Dettagliato Valore: 5. Indica i log a tutti i livelli

Mapping CEF per gli eventi Windows

* 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)

Tabella di gravità per gli eventi Windows:

Valore di gravità CEF Windows livello di evento Valore numerico
0 Non definito Valore: 0 Indica i log a tutti i livelli
10 Critico Valore: 1. Indica i log per un avviso critico
8 Errore Valore: 2. Indica i log per un errore
5 Avviso Valore: 3. Indica i log per un avviso
2 Informazioni Valore: 4. Indica i log per un messaggio informativo
0 Dettagliato Valore: 5. Indica i log a tutti i livelli

Tabella di estensione personalizzata per gli eventi Windows nell'hub di Azure Stack:

Nome dell'estensione personalizzato esempio di evento Windows
MasChannel Sistema
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 Le impostazioni di Criteri di gruppo per l'utente sono state elaborate correttamente. Non sono state rilevate modifiche dall'ultima elaborazione riuscita di Criteri di gruppo.
MasEventID 1501
MasEventRecordID 26637
MasExecutionProcessID 29380
MasExecutionThreadID 25480
MasKeywords 0x8000000000000000
MasKeywordName Controllo riuscito
MasLevel 4
MasOpcode 1
MasOpcodeName info
MasProviderEventSourceName
MasProviderGuid AEA1B4FA-97D1-45F2-A64C-4D69FFFD92C9
MasProviderName Microsoft-Windows-GroupPolicy
MasSecurityUserId <WINDOWS SID>
MasTask 0
MasTaskCategory Creazione del processo
MasUserData KB4093112!! 5112!! Installato!! 0x0!! WindowsUpdateAgent Xpath: /Event/UserData/*
MasVersion 0

Mapping CEF per gli avvisi creati

* 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)

Tabella di gravità degli avvisi:

Gravità Livello
0 Non definito
10 Critico
5 Avviso

Tabella di estensione personalizzata per gli avvisi creati nell'hub di Azure Stack:

Nome dell'estensione personalizzato Esempio
MasEventDescription DESCRIZIONE: è stato creato un account <utente TestUser> per <TestDomain>. Si tratta di un potenziale rischio per la sicurezza. -- REMEDIATION: contattare il supporto tecnico. L'assistenza clienti è necessaria per risolvere questo problema. Non provare a risolvere questo problema senza l'assistenza. Prima di aprire una richiesta di supporto, avviare il processo di raccolta dei file di log usando le indicazioni fornite da https://aka.ms/azurestacklogfiles.

Mapping CEF per gli avvisi chiusi

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

L'esempio seguente mostra un messaggio syslog con payload CEF:

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

Tipi di eventi Syslog

La tabella elenca tutti i tipi di evento, gli eventi, lo schema dei messaggi o le proprietà inviati tramite il canale syslog. L'opzione di configurazione dettagliata deve essere usata solo se Windows eventi informativi sono necessari per l'integrazione SIEM.

Tipo evento Schema di eventi o messaggi Richiede l'impostazione dettagliata Descrizione evento (facoltativo)
Avvisi dell’hub di Azure Stack Per lo schema dei messaggi di avviso, vedere Mapping CEF per gli avvisi chiusi.

Elenco di tutti gli avvisi in condivisi in un documento separato.
No Avvisi di integrità del sistema
Eventi endpoint con privilegi Per lo schema dei messaggi dell'endpoint con privilegi, vedere Mapping CEF per gli eventi endpoint con privilegi.

PrivilegedEndpointAccessed
SupportSessionTokenRequested
SupportSessionDevelopmentTokenRequested
SupportSessionUnlocked
SupportSessionFailedToUnlock
PrivilegedEndpointClosed
NewCloudAdminUser
RemoveCloudAdminUser
SetCloudAdminUserPassword
GetCloudAdminPasswordRecoveryToken
ResetCloudAdminPassword
PrivilegedEndpointSessionTimedOut
No
Eventi endpoint di ripristino Per lo schema dei messaggi dell'endpoint di ripristino, vedere Mapping CEF per gli eventi dell'endpoint di ripristino.
RecoveryEndpointAccessed
RecoverySessionTokenRequested
RecoverySessionDevelopmentTokenRequested
RecoverySessionUnlocked
RecoverySessionFailedToUnlock
Recovand RecoveryEndpointClosed
No
eventi Sicurezza di Windows
Per lo schema del messaggio di Windows vedere mapping CEF per gli eventi Windows.
Sì (Per ottenere eventi informativi) Digitare:
- Informazioni
- Avviso
- Errore
- Critico
Eventi ARM Proprietà del messaggio:

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
Ogni risorsa arm registrata può generare un evento.
Eventi BCDR Schema dei messaggi:

AuditingManualBackup {
}
AuditingConfig
{
Interval
Conservazione
IsSchedulerEnabled
BackupPath
}
AuditingPruneBackupStore {
IsInternalStore
}
No Questi eventi tengono traccia delle operazioni di amministrazione del backup infra eseguite manualmente dal cliente, include backup trigger, modifica della configurazione del backup e filtrare i dati di backup.
Creazione e chiusura degli eventi di errore infra Schema dei messaggi:

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

InfrastructureFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsComponentType,
AzsComponentName,
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
No Gli errori attivano flussi di lavoro che tentano di correggere gli errori che possono causare avvisi. Se un errore non ha correzioni, comporta direttamente un avviso.
Creazione e chiusura degli eventi di errore del servizio Schema dei messaggi:

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

ServiceFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsSubscriptionId,
AzsResourceGroup,
AzsServiceName,
AzsResourceId
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
No Gli errori attivano flussi di lavoro che tentano di correggere gli errori che possono causare avvisi.
Se un errore non ha correzioni, comporta direttamente un avviso.
Eventi PEP WAC Schema dei messaggi:

Campi prefisso
* ID firma: Microsoft-AzureStack-PrivilegedEndpoint: <ID evento PEP>
* Nome dell'attività <PEP>
* Gravità: mappata da PEP Level (dettagli vedere la tabella di gravità PEP riportata di seguito)
* Who: account usato per connettersi al PEP
* QualeIP: indirizzo IP del server ERCS che ospita il PEP

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

Passaggi successivi

Criteri di manutenzione