Integrar o Azure Stack Hub com soluções de monitoramento usando o encaminhamento de syslog

Este artigo mostra como usar o syslog para integrar a infraestrutura do Azure Stack Hub com soluções de segurança externas já implantadas em seu datacenter. Por exemplo, um sistema SIEM (gerenciamento de eventos e informações de segurança). O canal syslog expõe logs de segurança, auditorias e alertas de todos os componentes da infraestrutura do Azure Stack Hub. Use o encaminhamento de syslog para integração com soluções de monitoramento de segurança e para recuperar todos os logs de segurança, as auditorias e os alertas para armazená-los para retenção.

A partir da atualização 1809, o Azure Stack Hub tem um cliente syslog integrado que, uma vez configurado, emite mensagens de syslog com o conteúdo no CEF (Formato Comum de Evento).

O diagrama a seguir descreve a integração do Azure Stack Hub com um SIEM externo. Há dois padrões de integração que precisam ser considerados: o primeiro (aquele em azul) é a infraestrutura do Azure Stack Hub que abrange as máquinas virtuais da infraestrutura e os nós do Hyper-V. Todos os logs de segurança, auditorias e alertas desses componentes são coletados e expostos centralmente por meio do syslog com o payload no CEF. Esse padrão de integração é descrito nesta página de documento. O segundo padrão de integração é aquele descrito em laranja e abrange os controladores de gerenciamento de placa base (BMCs), o host do ciclo de vida de hardware (HLH), as máquinas virtuais e dispositivos virtuais que executam o software de monitoramento e gerenciamento de parceiros de hardware e a parte superior dos comutadores TOR (rack). Como esses componentes são específicos do parceiro de hardware, entre em contato com seu parceiro de hardware para ver a documentação sobre como integrá-los a um SIEM externo.

Diagrama de encaminhamento do Syslog

Configurar o encaminhamento de syslog

O cliente syslog no Azure Stack Hub dá suporte às seguintes configurações:

  1. Syslog sobre TCP, com autenticação mútua (cliente e servidor) e criptografia TLS 1.2: Nessa configuração, o servidor syslog e o cliente syslog podem verificar a identidade um do outro por meio de certificados. As mensagens são enviadas por um canal criptografado TLS 1.2.

  2. Syslog sobre TCP com autenticação de servidor e criptografia TLS 1.2: Nessa configuração, o cliente syslog pode verificar a identidade do servidor syslog por meio de um certificado. As mensagens são enviadas por um canal criptografado TLS 1.2.

  3. Syslog sobre TCP, sem criptografia: Nessa configuração, as identidades do cliente syslog e do servidor syslog não são verificadas. As mensagens são enviadas em texto não criptografado por TCP.

  4. Syslog sobre UDP, sem criptografia: Nessa configuração, as identidades do cliente syslog e do servidor syslog não são verificadas. As mensagens são enviadas em texto não criptografado por UDP.

Importante

A Microsoft recomenda fortemente usar tcp usando autenticação e criptografia (configuração nº 1 ou, no mínimo, #2) para ambientes de produção para proteger contra ataques man-in-the-middle e interceptação de mensagens.

Cmdlets para configurar o encaminhamento de syslog

Configurar o encaminhamento de syslog requer acesso ao PEP (ponto de extremidade privilegiado). Dois cmdlets do PowerShell foram adicionados ao PEP para configurar o encaminhamento de 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]

Parâmetros de cmdlets

Parâmetros para o cmdlet Set-SyslogServer:

Parâmetro Descrição Type Obrigatório
ServerName FQDN ou endereço IP do servidor syslog. String sim
ServerPort Número da porta em que o servidor syslog está escutando. UInt16 sim
NoEncryption Force o cliente a enviar mensagens syslog em texto não criptografado. flag não
SkipCertificateCheck Ignore a validação do certificado fornecido pelo servidor de syslog durante o handshake TLS inicial. flag não
SkipCNCheck Ignore a validação do valor Nome Comum do certificado fornecido pelo servidor de syslog durante o handshake TLS inicial. flag não
UseUDP Use o syslog com UDP como protocolo de transporte. flag não
Remover Remova a configuração do servidor do cliente e interrompa o encaminhamento de syslog. flag não

Parâmetros para o cmdlet Set-SyslogClient :

Parâmetro Descrição Type
pfxBinary O conteúdo do arquivo PFX, canalizado para um Byte[], que contém o certificado a ser usado pelo cliente como identidade para fazer a autenticação no servidor do syslog. Byte[]
CertPassword Senha para importar a chave privada associada ao arquivo pfx. SecureString
RemoveCertificate Remova o certificado do cliente. flag
OutputSeverity Nível de registro de log de saída. Os valores são Default ou Verbose. O padrão inclui níveis de severidade: aviso, crítico ou erro. Detalhado inclui todos os níveis de severidade: detalhado, informacional, aviso, crítico ou erro. String

Configurar o encaminhamento de syslog com TCP, autenticação mútua e criptografia TLS 1.2

Nessa configuração, o cliente syslog no Azure Stack Hub encaminha as mensagens para o servidor syslog por TCP, com criptografia TLS 1.2. Durante o handshake inicial, o cliente verifica se o servidor fornece um certificado válido e confiável. O cliente também fornece um certificado para o servidor como prova de sua identidade. Essa configuração é a mais segura, pois fornece uma validação completa da identidade do cliente e do servidor e envia mensagens por um canal criptografado.

Importante

A Microsoft recomenda fortemente usar essa configuração para ambientes de produção.

Para configurar o encaminhamento de syslog com TCP, autenticação mútua e criptografia TLS 1.2, execute os dois cmdlets em uma sessão 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>

O certificado do cliente deve ter a mesma raiz fornecida durante a implantação do Azure Stack Hub. Ele também deve conter uma chave privada.

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

Configurando o encaminhamento de syslog com TCP, autenticação de servidor e criptografia TLS 1.2

Nessa configuração, o cliente syslog no Azure Stack Hub encaminha as mensagens para o servidor syslog por TCP, com criptografia TLS 1.2. Durante o handshake inicial, o cliente também verifica se o servidor fornece um certificado válido e confiável. Essa configuração impede que o cliente envie mensagens para destinos não confiáveis. O TCP usando autenticação e criptografia é a configuração padrão e representa o nível mínimo de segurança que a Microsoft recomenda para um ambiente de produção.

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

Caso deseje testar a integração do servidor syslog com o cliente do Azure Stack Hub usando um certificado autoassinado ou não confiável, você pode usar esses sinalizadores para ignorar a validação do servidor feita pelo cliente durante o handshake inicial.

 #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

A Microsoft recomenda o uso do sinalizador -SkipCertificateCheck para ambientes de produção.

Configurando o encaminhamento de syslog com TCP e nenhuma criptografia

Nessa configuração, o cliente syslog no Azure Stack Hub encaminha as mensagens para o servidor syslog por TCP, sem criptografia. O cliente não verifica a identidade do servidor nem fornece sua própria identidade ao servidor para verificação.

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

Importante

A Microsoft recomenda não usar essa configuração para ambientes de produção.

Configurando o encaminhamento de syslog com UDP e nenhuma criptografia

Nessa configuração, o cliente syslog no Azure Stack Hub encaminha as mensagens para o servidor syslog por UDP, sem criptografia. O cliente não verifica a identidade do servidor nem fornece sua própria identidade ao servidor para verificação.

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

Embora o UDP sem criptografia seja o mais fácil de configurar, ele não fornece nenhuma proteção contra ataques man-in-the-middle e escuta de mensagens.

Importante

A Microsoft recomenda não usar essa configuração para ambientes de produção.

Removendo a configuração de encaminhamento do syslog

Para remover completamente a configuração do servidor syslog e interromper o encaminhamento do syslog:

Remover a configuração do servidor syslog do cliente

Set-SyslogServer -Remove

Remover o certificado do cliente do cliente

Set-SyslogClient -RemoveCertificate

Verificando a configuração do syslog

Se você conectou com êxito o cliente syslog ao servidor syslog, deverá começar a receber eventos em breve. Se você não vir nenhum evento, verifique a configuração do cliente syslog executando os seguintes cmdlets:

Verificar a configuração do servidor no cliente syslog

Get-SyslogServer

Verificar a configuração do certificado no cliente do syslog

Get-SyslogClient

Esquema de mensagens do Syslog

O encaminhamento syslog da infraestrutura do Azure Stack Hub envia mensagens formatadas em CEF (Formato comum de evento). Cada mensagem syslog é estruturada com base neste esquema:

<Time> <Host> <CEF payload>

O conteúdo do CEF é baseado na estrutura abaixo, mas o mapeamento para cada campo varia dependendo do tipo de mensagem (Evento do Windows, Alerta criado, Alerta fechado).

# 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

Mapeamento de CEF para eventos de ponto de extremidade privilegiado

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

Tabela de eventos para o ponto de extremidade privilegiado:

Evento ID do evento PEP Nome da tarefa PEP Severidade
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

Tabela de severidade PEP:

Severidade Nível Valor Numérico
0 Indefinido Valor: 0. Indica logs em todos os níveis
10 Crítico Valor: 1. Indica logs para um alerta crítico
8 Erro Valor: 2. Indica logs para um erro
5 Aviso Valor: 3. Indica logs para um aviso
2 Informações Valor: 4. Indica logs para uma mensagem informativa
0 Detalhado Valor: 5. Indica logs em todos os níveis

Mapeamento de CEF para eventos de ponto de extremidade de recuperação

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

Tabela de eventos para o ponto de extremidade de recuperação:

Evento ID do evento REP Nome da tarefa REP Severidade
RecoveryEndpointAccessed 1011 RecoveryEndpointAccessedEvent 5
RecoverySessionTokenRequested 1012 RecoverySessionTokenRequestedEvent 5
RecoverySessionDevelopmentTokenRequested 1013 RecoverySessionDevelopmentTokenRequestedEvent 5
RecoverySessionUnlocked 1014 RecoverySessionUnlockedEvent 10
RecoverySessionFailedToUnlock 1015 RecoverySessionFailedToUnlockEvent 10
RecoveryEndpointClosed 1016 RecoveryEndpointClosedEvent 5

Tabela de severidade rep:

Severidade Nível Valor numérico
0 Indefinido Valor: 0. Indica logs em todos os níveis
10 Crítico Valor: 1. Indica logs para um alerta crítico
8 Erro Valor: 2. Indica logs para um erro
5 Aviso Valor: 3. Indica logs para um aviso
2 Informações Valor: 4. Indica logs para uma mensagem informativa
0 Detalhado Valor: 5. Indica logs em todos os níveis

Mapeamento de CEF para eventos do 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)

Tabela de gravidade para eventos do Windows:

Valor de severidade do CEF Nível de evento do Windows Valor numérico
0 Indefinido Valor: 0. Indica logs em todos os níveis
10 Crítico Valor: 1. Indica logs para um alerta crítico
8 Erro Valor: 2. Indica logs para um erro
5 Aviso Valor: 3. Indica logs para um aviso
2 Informações Valor: 4. Indica logs para uma mensagem informativa
0 Detalhado Valor: 5. Indica logs em todos os níveis

Tabela de extensão personalizada para eventos do Windows no Azure Stack Hub:

Nome da extensão personalizada Exemplo de evento do Windows
MasChannel Sistema
MasComputador 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 As configurações de Política de Grupo para o usuário foram processadas com êxito. Não foi detectada nenhuma alteração desde o último processamento bem-sucedido de Política de Grupo.
MasEventID 1501
MasEventRecordID 26637
MasExecutionProcessID 29380
MasExecutionThreadID 25480
MasKeywords 0x8000000000000000
MasKeywordName Êxito na Auditoria
MasLevel 4
MasOpcode 1
MasOpcodeName informações
MasProviderEventSourceName
MasProviderGuid AEA1B4FA-97D1-45F2-A64C-4D69FFFD92C9
MasProviderName Microsoft-Windows-GroupPolicy
MasSecurityUserId <Windows SID>
MasTask 0
MasTaskCategory Criação de processos
MasUserData KB4093112!! 5112!! Instalado!! 0x0!! WindowsUpdateAgent Xpath: /Event/UserData/*
MasVersion 0

Mapeamento de CEF para alertas criados

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

Tabela de severidade de alertas:

Severidade Nível
0 Indefinido
10 Crítico
5 Aviso

Tabela de extensão personalizada para alertas criados no Azure Stack Hub:

Nome da extensão personalizada Exemplo
MasEventDescription DESCRIÇÃO: um TestUser de conta <de usuário foi criado para <TestDomain>.> É um risco potencial de segurança. -- CORREÇÃO: contate o suporte. A Assistência ao Cliente é necessária para resolve esse problema. Não tente resolve esse problema sem a assistência deles. Antes de abrir uma solicitação de suporte, inicie o processo de coleta de arquivos de log usando as diretrizes de https://aka.ms/azurestacklogfiles.

Mapeamento de CEF para alertas fechados

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

O exemplo a seguir mostra uma mensagem syslog com conteúdo 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

Tipos de evento Syslog

A tabela lista todos os tipos de eventos, eventos, esquema de mensagem ou propriedades que são enviadas por meio do canal syslog. O comutador detalhado de instalação só deve ser usado se os eventos informativos do Windows forem necessários para a integração do SIEM.

Tipo de evento Eventos ou esquema de mensagem Requer configuração detalhada Descrição do evento (opcional)
Alertas do Azure Stack Hub Para obter o esquema de mensagem de alerta, consulte Mapeamento de CEF para alertas fechados.

Uma lista de todos os alertas em compartilhados em um documento separado.
Não Alertas de integridade do sistema
Eventos de ponto de extremidade privilegiado Para o esquema de mensagem de ponto de extremidade privilegiado, consulte Mapeamento de CEF para eventos de ponto de extremidade privilegiados.

PrivilegedEndpointAccessed
SupportSessionTokenRequested
SupportSessionDevelopmentTokenRequested
SupportSessionUnlocked
SupportSessionFailedToUnlock
PrivilegedEndpointClosed
NewCloudAdminUser
RemoveCloudAdminUser
SetCloudAdminUserPassword
GetCloudAdminPasswordRecoveryToken
ResetCloudAdminPassword
PrivilegedEndpointSessionTimedOut
Não
Eventos de ponto de extremidade de recuperação Para o esquema de mensagem do ponto de extremidade de recuperação, consulte Mapeamento de CEF para eventos de ponto de extremidade de recuperação.
RecoveryEndpointAccessed
RecoverySessionTokenRequested
RecoverySessionDevelopmentTokenRequested
RecoverySessionUnlocked
RecoverySessionFailedToUnlock
Recovand RecoveryEndpointClosed
Não
Eventos de Segurança do Windows
Para o esquema de mensagem de evento do Windows, consulte Mapeamento de CEF para eventos do Windows.
Sim (para obter eventos de informações) Tipo:
- Informações
- Aviso
- Erro
- Crítico
Eventos de ARM Propriedades da mensagem:

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

Não
Cada recurso arm registrado pode gerar um evento.
Eventos BCDR Esquema de mensagem:

AuditingManualBackup {
}
AuditingConfig
{
Intervalo
Retenção
IsSchedulerEnabled
BackupPath
}
AuditingPruneBackupStore {
IsInternalStore
}
Não Esses eventos acompanham as operações de administrador de backup de infraestrutura feitas manualmente pelo cliente, inclui o backup de gatilho, a configuração de backup de alteração e os dados de backup de remoção.
Eventos de fechamento e criação de falha de infra Esquema de mensagem:

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

InfrastructureFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsComponentType,
AzsComponentName,
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
Não As falhas disparam fluxos de trabalho que tentam corrigir erros que podem levar a alertas. Se uma falha não tiver correção, isso levará diretamente a um Alerta.
Eventos de criação e fechamento de falhas de serviço Esquema de mensagem:

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

ServiceFaultClose {
AzsFaultId,
AzsFaultTypeName,
AzsSubscriptionId,
AzsResourceGroup,
AzsServiceName,
AzsResourceId
AzsFaultHash,
AzsLastUpdatedTimeUtc,
AzsSource
}
Não As falhas disparam fluxos de trabalho que tentam corrigir erros que podem levar a alertas.
Se uma falha não tiver correção, isso levará diretamente a um Alerta.
Eventos PEP WAC Esquema de mensagem:

Campos de prefixo
* ID da assinatura: Microsoft-AzureStack-PrivilegedEndpoint: <ID do evento PEP>
* Nome: <Nome da Tarefa PEP>
* Severidade: mapeada a partir do nível pep (detalhes consulte a tabela Severidade PEP abaixo)
* Quem: conta usada para se conectar ao PEP
* WhichIP: endereço IP do servidor ERCS que hospeda o PEP

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

Próximas etapas

Política de manutenção