Coletar registros do OpenCanary

Compatível com:

Visão geral

Esse analisador extrai campos dos registros SYSLOG e JSON do OpenCanary, normaliza-os no formato UDM e enriquece os dados com campos derivados, como metadata.event_type e security_result.severity. Ele processa vários formatos de registro, realiza a validação de endereços IP e mapeia campos para objetos UDM adequados, como principal, target e network.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao OpenCanary.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do OpenCanary.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione OpenCanary como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
  9. Clique em Próxima.
  10. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  11. Clique em Gerar chave secreta para autenticar o feed.
  12. Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.
  13. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  14. Clique em Concluído.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Nome do feed:um valor pré-preenchido que identifica o feed.
  • Tipo de origem:método usado para coletar registros no Google SecOps.
  • Namespace do recurso:namespace associado ao feed.
  • Rótulos de ingestão:rótulos aplicados a todos os eventos deste feed.

  • Clique em Gerar chave secreta para autenticar o feed.

  • Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.

  • Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.

Criar uma chave de API para o feed de webhook

  1. Acesse console doGoogle Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especifique o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de no URL.

  3. Se o cliente de webhook não aceitar cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua:

    • ENDPOINT_URL: o URL do endpoint do feed.
    • API_KEY: a chave de API para autenticar no Google Security Operations.
    • SECRET: a chave secreta gerada para autenticar o feed.

Como configurar um webhook do OpenCanary para o Google SecOps

  1. Encontre o arquivo de configuração do OpenCanary, config.json.

  2. Abra o arquivo config.json com um editor de texto.

  3. Localize a seção alerters no arquivo de configuração.

  4. Se já houver um alerta webhook, modifique-o. Caso contrário, adicione uma nova entrada para o alerta webhook.

  5. Use a seguinte configuração (substitua ENDPOINT_URL, SECRET e API_KEY pelos seus valores):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. Salve o arquivo config.json.
  2. Reinicie o serviço OpenCanary para aplicar as mudanças. (por exemplo, sudo systemctl restart opencanary).

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
dst_host target.asset.ip O campo dst_host do registro bruto é mapeado para o UDM. Também mapeado para target.ip.
dst_host target.ip O campo dst_host do registro bruto é mapeado para o UDM. Também mapeado para target.asset.ip.
dst_port target.port O campo dst_port do registro bruto é convertido em uma string e depois em um número inteiro e mapeado para o UDM.
local_time metadata.event_timestamp O campo local_time do registro bruto é usado para preencher o metadata.event_timestamp na UDM. O analisador usa o create_time do objeto de lote se o campo local_time não estiver presente.
local_time_adjusted security_result.detection_fields O campo local_time_adjusted do registro bruto é adicionado como um par de chave-valor à matriz security_result.detection_fields na UDM.
logdata.COMMUNITY_STRING security_result.detection_fields O campo logdata.COMMUNITY_STRING do registro bruto é adicionado como um par de chave-valor à matriz security_result.detection_fields na UDM.
logdata.DOMAIN principal.administrative_domain O campo logdata.DOMAIN do registro bruto é mapeado para o UDM.
logdata.FILENAME target.file.full_path O campo logdata.FILENAME do registro bruto é mapeado para o UDM.
logdata.HOSTNAME principal.asset.hostname Se o campo logdata.HOSTNAME não for um endereço IP, ele será mapeado para a UDM. Também mapeado para principal.hostname.
logdata.HOSTNAME principal.asset.ip Se o campo logdata.HOSTNAME for um endereço IP, ele será mapeado para a UDM. Também mapeado para principal.ip.
logdata.HOSTNAME principal.hostname Se o campo logdata.HOSTNAME não for um endereço IP, ele será mapeado para a UDM. Também mapeado para principal.asset.hostname.
logdata.HOSTNAME principal.ip Se o campo logdata.HOSTNAME for um endereço IP, ele será mapeado para a UDM. Também mapeado para principal.asset.ip.
logdata.LOCALNAME principal.asset.hostname O campo logdata.LOCALNAME do registro bruto é mapeado para o UDM. Também mapeado para principal.hostname.
logdata.LOCALNAME principal.hostname O campo logdata.LOCALNAME do registro bruto é mapeado para o UDM. Também mapeado para principal.asset.hostname.
logdata.LOCALVERSION principal.platform_version O campo logdata.LOCALVERSION do registro bruto é mapeado para o UDM.
logdata.PASSWORD extensions.auth.mechanism A presença do campo logdata.PASSWORD faz com que o analisador defina extensions.auth.mechanism como USERNAME_PASSWORD na UDM.
logdata.PATH network.http.referral_url O campo logdata.PATH do registro bruto é mapeado para o UDM.
logdata.REMOTENAME target.asset.hostname O campo logdata.REMOTENAME do registro bruto é mapeado para o UDM. Também mapeado para target.hostname.
logdata.REMOTENAME target.hostname O campo logdata.REMOTENAME do registro bruto é mapeado para o UDM. Também mapeado para target.asset.hostname.
logdata.REMOTEVERSION target.platform_version O campo logdata.REMOTEVERSION do registro bruto é mapeado para o UDM.
logdata.SMBVER network.application_protocol A presença do campo logdata.SMBVER faz com que o analisador defina network.application_protocol como SMB na UDM.
logdata.USERAGENT network.http.parsed_user_agent O campo logdata.USERAGENT do registro bruto é convertido em um user agent analisado e mapeado para a UDM.
logdata.USERAGENT network.http.user_agent O campo logdata.USERAGENT do registro bruto é mapeado para o UDM.
logdata.USERNAME target.user.userid O campo logdata.USERNAME do registro bruto é mapeado para o UDM.
loglevel security_result.severity O campo loglevel do registro bruto determina o security_result.severity no UDM. WARNING é mapeado para HIGH, INFO/INFORMATION é mapeado para LOW.
logtype security_result.detection_fields O campo logtype do registro bruto é adicionado como um par de chave-valor à matriz security_result.detection_fields na UDM.
node_id principal.asset.asset_id O campo node_id do registro bruto recebe o prefixo "id:" e é mapeado para o UDM.
src_host principal.asset.ip O campo src_host do registro bruto é mapeado para o UDM. Também mapeado para principal.ip.
src_host principal.ip O campo src_host do registro bruto é mapeado para o UDM. Também mapeado para principal.asset.ip.
src_port principal.port O campo src_port do registro bruto é convertido em um número inteiro e mapeado para o UDM.
utc_time security_result.detection_fields O campo utc_time do registro bruto é adicionado como um par de chave-valor à matriz security_result.detection_fields na UDM.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.