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. Un esempio di tali soluzioni esterne è il sistema SIEM (Security Information Event Management). Il canale Syslog espone i controlli, gli avvisi e i log relativi alla sicurezza di tutti i componenti dell'infrastruttura dell'hub di Azure Stack. L'inoltro Syslog consente di eseguire l'integrazione con le soluzioni di monitoraggio di sicurezza e di recuperare tutti i controlli, gli avvisi e i log relativi alla sicurezza in modo da archiviarli e conservarli.

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 sistema SIEM esterno. È necessario prendere in considerazione due modelli di integrazione. Il primo (quello in blu) è l'infrastruttura dell'hub di Azure Stack, in cui sono compresi le macchine virtuali dell'infrastruttura e i nodi Hyper-V. Tutti i controlli, i log relativi alla sicurezza e gli avvisi generati da tali componenti vengono raccolti ed esposti centralmente tramite Syslog con payload CEF. Questo modello di integrazione è descritto nella presente pagina di documentazione. Il secondo modello di integrazione è quello illustrato in arancione e copre i controller di gestione della baseboard (BMC), l'host del ciclo di vita hardware (HLH), le macchine virtuali e le appliance virtuali che eseguono il software di monitoraggio e gestione dei partner hardware e i commutatori top of rack (TOR). Poiché questi componenti sono specifici per il partner hardware, è necessario contattare quest’ultimo per ottenere la documentazione su come integrare i componenti in questione con un sistema SIEM esterno.

Diagramma di inoltro syslog

Configurazione dell'inoltro Syslog

Il client Syslog dell'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 le identità del client syslog e del server syslog non vengono verificate. I messaggi vengono inviati in testo non crittografato su TCP.

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

Importante

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

Cmdlet per configurare l'inoltro Syslog

Per la configurazione dell'inoltro Syslog, è necessario l'accesso all'endpoint con privilegi (PEP). Per configurare l'inoltro Syslog, sono stati aggiunti due cmdlet di PowerShell al PEP :

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

Parametri per il cmdlet Set-SyslogServer :

Parametro Descrizione Tipo Necessario
ServerName FQDN o indirizzo IP del server Syslog. string
ServerPort Numero di porta su cui è in ascolto il server Syslog. UInt16
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 di nome comune 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 Tipo
pfxBinary Contenuto del file pfx, inviato tramite pipe a un Byte[], contenente il certificato che deve essere usato dal client come identità per l'autenticazione nel server Syslog. Byte[]
CertPassword Password per importare la chiave privata associata al file con estensione pfx. SecureString
RemoveCertificate Rimuovere il certificato dal client. flag
OutputSeverity Livello di registrazione dell'output. I valori sono Default o Verbose. Il valore Default (predefinito) include i livelli di gravità avviso, critico o errore. Il valore Verbose (dettagliato) 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 dell'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. Al contempo, fornisce un certificato al server come prova della propria identità. Questa configurazione è la più sicura perché garantisce una convalida completa sia dell'identità del client sia dell’identità 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, l’autenticazione reciproca e la 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 di quella 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 dell'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 che usa 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 (evento Di Windows, 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à Level 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à Level 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 di 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 di Windows:

Valore di gravità CEF Livello di evento di Windows 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 di Windows nell'hub di Azure Stack:

Nome dell'estensione personalizzato Esempio di evento di 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 Verifica esito positivo
MasLevel 4
MasOpcode 1
MasOpcodeName info
MasProviderEventSourceName
MasProviderGuid AEA1B4FA-97D1-45F2-A64C-4D69FFFD92C9
MasProviderName Microsoft-Windows-GroupPolicy
MasSecurityUserId <Windows SID>
MasTask 0
MasTaskCategory Creazione di processi
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à Level
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>. È un potenziale rischio di sicurezza. -- CORREZIONE: Contattare il supporto tecnico. Assistenza clienti è necessaria per risolvere questo problema. Non provare a risolvere questo problema senza assistenza. Prima di aprire una richiesta di supporto, avviare il processo di raccolta 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 il 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 evento 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 installazione dettagliata deve essere usata solo se per l'integrazione SIEM sono necessari eventi informativi di Windows.

Tipo evento Schema eventi o messaggi Richiede un'impostazione dettagliata Descrizione evento (facoltativo)
Avvisi dell’hub di Azure Stack Per lo schema del messaggio 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 dell'endpoint con privilegi.

PrivilegedEndpointAccessed
SupportSessionTokenRequested
SupportSessionDevelopmentTokenRequested
SupportSessionUnlocked
SupportSessionFailedToUnlock
PrivilegedEndpointClosed
NewCloudAdminUser
RemoveCloudAdminUser
SetCloudAdminUserPassword
GetCloudAdminPasswordRecoveryToken
ResetCloudAdminPassword
PrivilegedEndpointSessionTimedOut
No
Eventi endpoint di ripristino Per lo schema del messaggio 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 dei messaggi di evento di Windows, vedere Mapping CEF per gli eventi di 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
{
Intervallo
Conservazione
IsSchedulerEnabled
BackupPath
}
AuditingPruneBackupStore {
IsInternalStore
}
No Questi eventi tengono traccia delle operazioni di amministrazione dell'infrastruttura eseguite manualmente dal cliente, includono il backup dei trigger, la configurazione del backup delle modifiche e l'eliminazione dei dati di backup.
Eventi di creazione e chiusura degli errori 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 alcuna correzione, viene generato direttamente un avviso.
Eventi di creazione e chiusura degli errori 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 alcuna correzione, viene generato direttamente un avviso.
Eventi PEP WAC Schema dei messaggi:

Campi prefisso
* ID firma: Microsoft-AzureStack-PrivilegedEndpoint: <ID evento PEP>
* Nome: <PEP Task Name>
* Gravità: mappata dal livello PEP (vedere la tabella PEP Severity riportata di seguito)
* Chi: account usato per connettersi al PEP
* WhichIP: 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